——Gan Fforwm Datblygwyr DWIN
Mae prosiect ffynhonnell agored fforwm datblygwr DWIN a argymhellir i bawb y tro hwn yn drefn ddiddorol iawn ar gyfer efelychu symudiad llygaid dynol.Defnyddiodd y peiriannydd nifer o ddeunyddiau llun llygad dynol i wireddu swyddogaethau megis symudiad pelen y llygad, amrantu, adnabod wynebau a dilyn.
Cyflwyniad i atebion ffynhonnell agored:
1. deunydd delwedd UI
Nodyn y golygydd: Mae sgrin smart DWIN yn seiliedig ar luniau i gwblhau datblygiad UI, a all wireddu effeithiau arddangos amrywiol yn hawdd.
2. datblygu rhyngwyneb
Mae'n gymharol syml datblygu'r rhyngwyneb trwy feddalwedd DGUS, a dim ond dau reolaeth graffig sydd eu hangen.Yn y drefn hon, dewisodd y peiriannydd sgrin smart crwn 2.1 modfedd.
3. Gwireddu animeiddiad amrantiad
Gadewch i'r lluniau o'r amrannau gael eu harddangos yn eu tro bob hyn a hyn:
//Animeiddiad Blink
gwagle blink_animat(gwag)
{
os(blink_flag == 0)
{
blink_cnt++;
os(blink_cnt>= 4)
{
blink_flag = 1;
}
}
arall
{
blink_cnt–;
os(blink_cnt <= 0)
{
blink_flag = 0;
}
}
write_dgus_vp(0×3000, (u8*)&blink_cnt, 2);
}
gwagle blink_run()
{
statig u32 run_timer_cnt = 0;
rhedeg_timer_cnt++;
os(run_timer_cnt>= 2000000)
{
run_timer_cnt = 0;
blink_animat();
Oedi_ms(30);
blink_animat();
Oedi_ms(30);
blink_animat();
Oedi_ms(30);
blink_animat();
Oedi_ms(30);
blink_animat();
Oedi_ms(30);
blink_animat();
Oedi_ms(30);
blink_animat();
Oedi_ms(30);
blink_animat();
Oedi_ms(30);
}
}
4. sylweddoli bod y peli llygaid yn edrych i'r chwith ac i'r dde yn naturiol.
Mae hyn yn debyg i blincio, ond mae angen iddo gymharu amser yr osgiliadur grisial i reoli symudiad y llygad.Ar ôl sawl gwaith o ddadfygio, dyluniodd y peiriannydd y set ganlynol o godau.
//Animeiddiad pelen y llygad
pêl llygad gwag_animat (gwag)
{
eyeball_timer_cnt++;
os(eyeball_timer_cnt < 50)
{
eyeball_cnt = 20;
}
arall os(eyeball_timer_cnt < 51)
{
eyeball_cnt = 50;
}
arall os(eyeball_timer_cnt < 52)
{
eyeball_cnt = 80;
}
arall os(eyeball_timer_cnt < 53)
{
eyeball_cnt = 94;
}
arall os(eyeball_timer_cnt < 103)
{
eyeball_cnt = 94;
}
arall os(eyeball_timer_cnt < 104)
{
eyeball_cnt = 80;
}
arall os(eyeball_timer_cnt < 105)
{
eyeball_cnt = 50;
}
arall os(eyeball_timer_cnt < 106)
{
eyeball_cnt = 20;
}
arall os(eyeball_timer_cnt < 107)
{
eyeball_cnt = -10;
}
arall os(eyeball_timer_cnt < 108)
{
eyeball_cnt = -40;
}
arall os(eyeball_timer_cnt < 158)
{
eyeball_cnt = -54;
}
arall os(eyeball_timer_cnt < 159)
{
eyeball_cnt = -40;
}
arall os(eyeball_timer_cnt < 160)
{
eyeball_cnt = -10;
}
arall os(eyeball_timer_cnt < 161)
{
eyeball_cnt = 20;
eyeball_timer_cnt = 0;
}
// Symud i'r chwith ac i'r dde
// if(eyeball_flag == 0)
// {
// eyeball_cnt++;
// os(eyeball_cnt >= 94)
// {
// eyeball_flag = 1 ;
// }
// }
// arall
// {
// eyeball_cnt–;
// if(eyeball_cnt <= -54)
// {
// eyeball_flag = 0;
// }
// }
os(eyeball_cnt>= 0)
{
pelen y llygad_pos[0] = 0×00;
eyeball_pos[1] = eyeball_cnt;
}
arall
{
eyeball_pos[0] = 0xFF;
eyeball_pos[1] = (eyeball_cnt & 0xFF);
}
write_dgus_vp(0×3111, (u8*)&eyeball_pos, 2);
}
gwag eyeball_run()
{
statig u32 run_timer_cnt = 0;
rhedeg_timer_cnt++;
os(run_timer_cnt>= 20000)
{
run_timer_cnt = 0;
eyeball_animat();
}
}
5. Ychwanegu cydnabyddiaeth wyneb ESP32 i wireddu symudiad llygaid yn dilyn yr wyneb.
Y dull prosesu yma yw pan fydd yr wyneb yn cael ei ganfod, nid yw'r llygaid yn symud ar eu pen eu hunain, a diffinnir newidyn i gynyddran yn y ddolen tra.Pan fydd y cynyddiad yn cyrraedd gwerth penodol, bydd y peli llygaid yn symud drostynt eu hunain.Pan fydd y porthladd cyfresol yn derbyn data, bydd y newidyn hwn yn cael ei glirio, ac yna dim ond symud y llygaid yn ôl lleoliad yr wyneb.Mae'r prif god fel a ganlyn:
os(rec_data_timer_cnt < 1000000)
{
rec_data_timer_cnt++;
}
arall
{
eyeball_run();
}
allanol u32 rec_data_timer_cnt;
eyeball_timer_cnt allanol u16;
Cyfathrebu gwag_CMD(u8 af)
{
os((uart[st].Rx_F==1 )&&(uart[st].Rx_T==0))
{
rec_data_timer_cnt = 0;
eyeball_timer_cnt = 0;
#if(Type_Communication==1)
Disgrifiwch_8283(st);
# elif(Type_Communication==2)
Disgrifiwch_Modbus(af);
#endif
uart[af].Rx_F=0;
uart[af].Rx_Num=0;
}
}
Amser postio: Mehefin-26-2023