——Ó Fhóram Forbróirí DWIN
Is gnáthamh an-suimiúil é tionscadal foinse oscailte an fhóraim fhorbróra DWIN atá molta do gach duine an uair seo chun gluaiseacht súile daonna a insamhladh.Bhain an t-innealtóir úsáid as roinnt ábhar pictiúr súl daonna chun feidhmeanna a bhaint amach mar ghluaiseacht súl, caochadh, aithint aghaidhe agus leanúint.
Réamhrá ar réitigh foinse oscailte:
1. Ábhar íomhá Chomhéadain
Nóta don Eagarthóir: Tá scáileán cliste DWIN bunaithe ar phictiúir chun forbairt Chomhéadain a chomhlánú, ar féidir leis na héifeachtaí taispeána éagsúla a bhaint amach go héasca.
2. Forbairt comhéadan
Tá sé sách simplí an comhéadan a fhorbairt trí bhogearraí DGUS, agus níl ach dhá rialú grafach ag teastáil.Sa ghnáthamh seo, roghnaigh an t-innealtóir scáileán cliste babhta 2.1-orlach.
3. Beochan blink a bhaint amach
Bíodh pictiúir na n-eyelids ar taispeáint ar a seal ag eatraimh:
//Beochan blink
ar neamhní blink_animat(folamh)
{
má(blink_flag == 0)
{
blink_cnt++;
má(blink_cnt >= 4)
{
blink_flag = 1;
}
}
eile
{
blink_cnt–;
má(blink_cnt <= 0)
{
blink_flag = 0;
}
}
write_dgus_vp(0×3000, (u8*)&blink_cnt, 2);
}
neamhní blink_run()
{
statach u32 run_timer_cnt = 0;
rith_timer_cnt++;
má(run_timer_cnt>= 2000000)
{
rith_timer_cnt = 0;
blink_animat();
Moill_ms(30);
blink_animat();
Moill_ms(30);
blink_animat();
Moill_ms(30);
blink_animat();
Moill_ms(30);
blink_animat();
Moill_ms(30);
blink_animat();
Moill_ms(30);
blink_animat();
Moill_ms(30);
blink_animat();
Moill_ms(30);
}
}
4. A thuiscint go bhfuil cuma na súile ar chlé agus ar dheis go nádúrtha.
Tá sé seo cosúil le blinking, ach ní mór é a chur i gcomparáid le ham an oscillator criostail chun gluaiseacht súl a rialú.Tar éis go leor uaireanta dífhabhtaithe, dhear an t-innealtóir an tsraith cód seo a leanas.
//Beochan eyeball
eyeball_animat(folamh) ar neamhní
{
eyeball_timer_cnt++;
má(eyeball_timer_cnt < 50)
{
eyeball_cnt = 20;
}
eile más rud é( eyeball_timer_cnt < 51)
{
eyeball_cnt = 50;
}
eile más rud é( eyeball_timer_cnt < 52)
{
eyeball_cnt = 80;
}
eile más rud é( eyeball_timer_cnt < 53)
{
eyeball_cnt = 94;
}
eile más rud é( eyeball_timer_cnt < 103)
{
eyeball_cnt = 94;
}
eile más rud é( eyeball_timer_cnt < 104)
{
eyeball_cnt = 80;
}
eile más rud é( eyeball_timer_cnt < 105)
{
eyeball_cnt = 50;
}
eile más rud é( eyeball_timer_cnt < 106)
{
eyeball_cnt = 20;
}
eile más rud é( eyeball_timer_cnt < 107)
{
eyeball_cnt = -10;
}
eile más rud é( eyeball_timer_cnt < 108)
{
eyeball_cnt = -40;
}
eile má(eyeball_timer_cnt < 158)
{
eyeball_cnt = -54;
}
eile más rud é( eyeball_timer_cnt < 159)
{
eyeball_cnt = -40;
}
eile más rud é( eyeball_timer_cnt < 160)
{
eyeball_cnt = -10;
}
eile má(eyeball_timer_cnt < 161)
{
eyeball_cnt = 20;
eyeball_timer_cnt = 0;
}
// Bog ar chlé agus ar dheis
// má(eyeball_flag == 0)
// {
// eyeball_cnt++;
// má(eyeball_cnt >= 94)
// {
// eyeball_flag = 1;
// }
// }
// eile
// {
// eyeball_cnt–;
// má(eyeball_cnt <= -54)
// {
// eyeball_flag = 0;
// }
// }
má(eyeball_cnt>= 0)
{
eyeball_pos[0] = 0×00;
eyeball_pos[1] = eyeball_cnt;
}
eile
{
eyeball_pos[0] = 0xFF;
eyeball_pos[1] = (eyeball_cnt & 0xFF);
}
write_dgus_vp(0×3111, (u8*)&eyeball_pos, 2);
}
neamhní eyeball_run()
{
statach u32 run_timer_cnt = 0;
rith_timer_cnt++;
má(run_timer_cnt>= 20000)
{
rith_timer_cnt = 0;
eyeball_animat();
}
}
5. Cuir aitheantas aghaidhe ESP32 leis chun gluaiseacht na súl tar éis an duine a bhaint amach.
Is é an modh próiseála anseo ná nuair a aimsítear an t-aghaidh, ní ghluaiseann na súile leo féin, agus sainmhínítear athróg go incrimint sa lúb ama.Nuair a shroicheann an t-incrimint luach áirithe, bogfaidh na liathróidí súl leo féin.Nuair a fhaigheann an calafort sraitheach sonraí, déanfar an t-athróg seo a ghlanadh, agus ansin bogadh na súile ach amháin de réir seasamh an duine.Is é seo a leanas an príomhchód:
if(rec_data_timer_cnt < 1000000)
{
rec_data_timer_cnt++;
}
eile
{
eyeball_run();
}
seachtrach u32 rec_data_timer_cnt;
seachtrach u16 eyeball_timer_cnt;
Cumarsáid ar neamhní_CMD(u8 st)
{
más rud é((uart[st].Rx_F===1 )&&(uart[st].Rx_T==0))
{
rec_data_timer_cnt = 0;
eyeball_timer_cnt = 0;
#if(Type_Communication==1)
Déan cur síos_8283(st);
#elif(Type_Communication==2)
Déan cur síos ar_Modbus(st);
#deireadh
uart[st].Rx_F=0;
uart[st].Rx_Num=0;
}
}
Am postála: Meitheamh-26-2023