በDWIN ክብ ስክሪን ላይ የተመሰረተ ስማርት ዓይን

——ከDWIN ገንቢ መድረክ

በዚህ ጊዜ ለሁሉም የሚመከር የDWIN ገንቢ መድረክ ክፍት ምንጭ ፕሮጀክት የሰውን አይን እንቅስቃሴ ለማስመሰል በጣም አስደሳች ተግባር ነው።መሐንዲሱ እንደ ዓይን ኳስ እንቅስቃሴ፣ ብልጭ ድርግም የሚል፣ የፊት ለይቶ ማወቅ እና መከተል ያሉ ተግባራትን ለመገንዘብ ብዙ የሰው ዓይን ምስል ቁሳቁሶችን ተጠቅሟል።

የክፍት ምንጭ መፍትሄዎች መግቢያ፡-

1. የዩአይ ምስል ቁሳቁስ

የአርታዒ ማስታወሻ፡ DWIN ስማርት ስክሪን የUI ልማትን ለማጠናቀቅ በስዕሎች ላይ የተመሰረተ ነው፣ይህም በቀላሉ የተለያዩ የማሳያ ውጤቶችን መገንዘብ ይችላል።

dytrgf (1)

2. የበይነገጽ ልማት

በ DGUS ሶፍትዌር በኩል በይነገጹን ለማዳበር በአንጻራዊነት ቀላል ነው, እና ሁለት ግራፊክ መቆጣጠሪያዎች ብቻ ያስፈልጋሉ.በዚህ የዕለት ተዕለት እንቅስቃሴ፣ መሐንዲሱ ባለ 2.1 ኢንች ክብ ስማርት ስክሪን መርጧል።

dytrgf (2)

3. ብልጭ ድርግም የሚሉ እነማዎችን ይገንዘቡ

የዐይን ሽፋኖቹ ሥዕሎች በየተወሰነ ጊዜ እንዲታዩ ያድርጉ።

//Blink እነማ

ባዶ ብልጭልጭ_አኒማት( ባዶ)

{

ከሆነ(ባንዲራ == 0)

{

blink_cnt++;

ከሆነ( blink_cnt >= 4)

{

ብልጭልጭ_ባንዲራ = 1;

}

}

ሌላ

{

blink_cnt–;

ከሆነ( blink_cnt <= 0)

{

ብልጭልጭ_ባንዲራ = 0;

}

}

write_dgus_vp (0×3000, (u8 *)&blink_cnt, 2);

}

ባዶ ብልጭልጭ_አሂድ()

{

የማይንቀሳቀስ u32 run_timer_cnt = 0;

አሂድ_timer_cnt++;

ከሆነ (አሂድ_timer_cnt > = 2000000)

{

አሂድ_timer_cnt = 0;

blink_animat ();

መዘግየት_ms(30);

blink_animat ();

መዘግየት_ms(30);

blink_animat ();

መዘግየት_ms(30);

blink_animat ();

መዘግየት_ms(30);

blink_animat ();

መዘግየት_ms(30);

blink_animat ();

መዘግየት_ms(30);

blink_animat ();

መዘግየት_ms(30);

blink_animat ();

መዘግየት_ms(30);

}

}

4. የዓይን ኳሶች በተፈጥሮ ግራ እና ቀኝ እንደሚመስሉ ይገንዘቡ.

ይህ ከብልጭት ጋር ተመሳሳይ ነው, ነገር ግን የዓይን እንቅስቃሴን ለመቆጣጠር የክሪስታል ኦስቲልተርን ጊዜ ማወዳደር ያስፈልገዋል.ከብዙ ጊዜ ማረም በኋላ መሐንዲሱ የሚከተሉትን የኮዶች ስብስብ ነድፏል።

// የዓይን ኳስ አኒሜሽን

ባዶ የዓይን ኳስ_አኒማት( ባዶ)

{

የዓይን ኳስ_ጊዜ ቆጣሪ_cnt++;

ከሆነ(የዓይን ኳስ_ጊዜ ቆጣሪ < 50)

{

የዓይን ኳስ_cnt = 20;

}

ሌላ ከሆነ (የዓይን ኳስ ሰዓት ቆጣሪ < 51)

{

የዓይን ኳስ_cnt = 50;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 52)

{

የዓይን ኳስ_cnt = 80;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 53)

{

የዓይን ኳስ_cnt = 94;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 103)

{

የዓይን ኳስ_cnt = 94;

}

ሌላ ከሆነ (የዓይን ኳስ ሰዓት ቆጣሪ < 104)

{

የዓይን ኳስ_cnt = 80;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 105)

{

የዓይን ኳስ_cnt = 50;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 106)

{

የዓይን ኳስ_cnt = 20;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 107)

{

የዓይን ኳስ_cnt = -10;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 108)

{

የዓይን ኳስ_cnt = -40;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 158)

{

የዓይን ኳስ_cnt = -54;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ <159)

{

የዓይን ኳስ_cnt = -40;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 160)

{

የዓይን ኳስ_cnt = -10;

}

ሌላ ከሆነ (የዓይን ኳስ_ሰዓት ቆጣሪ < 161)

{

የዓይን ኳስ_cnt = 20;

የዓይን ኳስ_ሰዓት ቆጣሪ_cnt = 0;

}

// ወደ ግራ እና ቀኝ ውሰድ

// ከሆነ (የዓይን ኳስ_ባንዲራ == 0)

// {

// የዓይን ኳስ_cnt++;

// ከሆነ(የዓይን ኳስ_cnt >= 94)

// {

// የአይን ኳስ_ባንዲራ = 1;

//}

//}

// ሌላ

// {

// የአይን ኳስ_cnt–;

// ከሆነ (የዓይን ኳስ_cnt <= -54)

// {

// የአይን ኳስ_ባንዲራ = 0;

//}

//}

ከሆነ(የዓይን ኳስ_cnt >> 0)

{

eyeball_pos [0] = 0×00;

eyeball_pos [1] = eyeball_cnt;

}

ሌላ

{

eyeball_pos [0] = 0xFF;

eyeball_pos [1] = (የዓይን ኳስ_cnt & 0xFF);

}

መጻፍ_dgus_vp (0×3111, (u8 *) & eyeball_pos, 2);

}

ባዶ የዓይን ኳስ_ሩጫ()

{

የማይንቀሳቀስ u32 run_timer_cnt = 0;

አሂድ_timer_cnt++;

ከሆነ (አሂድ_timer_cnt > = 20000)

{

አሂድ_timer_cnt = 0;

የዓይን ኳስ_አኒማት ();

}

}

5. ፊትን ተከትለው የዓይንን እንቅስቃሴ ለመገንዘብ ESP32 የፊት ለይቶ ማወቂያን ይጨምሩ።

እዚህ ላይ የማቀነባበሪያ ዘዴው ፊቱ ሲታወቅ ዓይኖቹ በራሳቸው አይንቀሳቀሱም, እና ተለዋዋጭ የሚገለጸው በሎፕ ውስጥ ለመጨመር ነው.ጭማሪው የተወሰነ እሴት ላይ ሲደርስ, የዓይን ብሌቶች በራሳቸው ይንቀሳቀሳሉ.ተከታታይ ወደብ መረጃን ሲቀበል, ይህ ተለዋዋጭ ይጸዳል, እና እንደ ፊቱ አቀማመጥ ብቻ ዓይኖቹን ያንቀሳቅሱ.ዋናው ኮድ እንደሚከተለው ነው-

ከሆነ(የመረጃ_ጊዜ_ቆጣሪ_cnt <1000000)

{

rec_data_timer_cnt++;

}

ሌላ

{

የዓይን ኳስ_ሩጫ ();

}

ውጫዊ u32 rec_data_timer_cnt;

ውጫዊ u16 eyeball_timer_cnt;

ባዶ ግንኙነት_ሲኤምዲ(u8 st)

{

ከሆነ(((Uart[st].Rx_F==1)&&(uart[st].Rx_T==0))

{

rec_data_timer_cnt = 0;

የዓይን ኳስ_ሰዓት ቆጣሪ_cnt = 0;

#ከሆነ(አይነት_ግንኙነት==1)

ይግለጹ_8283(st);

#ኤሊፍ(አይነት_ግንኙነት==2)

ግለጽ_Modbus(st);

#መጨረሻ

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

}

}


የልጥፍ ሰዓት፡- ጁን-26-2023