——Bho Fòram Luchd-leasachaidh DWIN
Tha am pròiseact stòr fosgailte fòram leasaiche DWIN a chaidh a mholadh airson a h-uile duine an turas seo na chleachdadh inntinneach airson a bhith ag atharrais air gluasad sùilean daonna.Chleachd an t-innleadair grunn stuthan dealbh sùla daonna gus gnìomhan leithid gluasad ball-sùla, priobadh, aithneachadh aghaidh agus leantainn.
Ro-ràdh gu fuasglaidhean stòr fosgailte:
1. Stuth ìomhaigh UI
Nòta neach-deasachaidh: Tha scrion smart DWIN stèidhichte air dealbhan gus leasachadh UI a chrìochnachadh, as urrainn diofar bhuaidhean taisbeanaidh a thoirt gu buil gu furasta.
2. Leasachadh eadar-aghaidh
Tha e an ìre mhath sìmplidh an eadar-aghaidh a leasachadh tro bhathar-bog DGUS, agus chan eil a dhìth ach dà smachd grafaigeach.Anns a’ chleachdadh seo, thagh an innleadair scrion smart cruinn 2.1-òirleach.
3. Dèan eòlas air beothachadh blink
Leig leis na dealbhan de na h-eyelids a bhith air an taisbeanadh aig amannan:
// Beothachadh blink
falamh blink_animat (falamh)
{
ma tha(blink_flag == 0)
{
blink_cnt++;
ma tha(blink_cnt>= 4)
{
blink_flag = 1;
}
}
eile
{
blink_cnt –;
ma tha(blink_cnt <= 0)
{
blink_flag = 0;
}
}
write_dgus_vp(0×3000, (u8*)&blink_cnt, 2);
}
falamh blink_run()
{
statach u32 run_timer_cnt = 0;
run_timer_cnt++;
ma tha (run_timer_cnt> = 2000000)
{
run_timer_cnt = 0;
blink_animat();
dàil_ms(30);
blink_animat();
dàil_ms(30);
blink_animat();
dàil_ms(30);
blink_animat();
dàil_ms(30);
blink_animat();
dàil_ms(30);
blink_animat();
dàil_ms(30);
blink_animat();
dàil_ms(30);
blink_animat();
dàil_ms(30);
}
}
4. Dèan cinnteach gu bheil na sùilean-sùla a' coimhead clì is deas gu nàdarra.
Tha seo coltach ri blinking, ach feumaidh e coimeas a dhèanamh eadar ùine an oscillator criostail gus smachd a chumail air gluasad sùla.Às deidh iomadh turas debugging, dhealbhaich an t-innleadair an seata chòdan a leanas.
// Beothachadh ball-sùla
falamh sùla_animat (falamh)
{
ball-sùla_timer_cnt++;
ma tha (eyeball_timer_cnt < 50)
{
ball-sùla_cnt = 20;
}
eile ma tha (eyeball_timer_cnt < 51)
{
ball-sùla_cnt = 50;
}
eile ma tha (eyeball_timer_cnt < 52)
{
ball-sùla_cnt = 80;
}
eile ma tha (eyeball_timer_cnt < 53)
{
ball-sùla_cnt = 94;
}
eile ma tha (eyeball_timer_cnt < 103)
{
ball-sùla_cnt = 94;
}
eile ma tha(eyeball_timer_cnt < 104)
{
ball-sùla_cnt = 80;
}
eile ma tha(eyeball_timer_cnt < 105)
{
ball-sùla_cnt = 50;
}
eile ma tha (eyeball_timer_cnt < 106)
{
ball-sùla_cnt = 20;
}
eile ma tha(eyeball_timer_cnt < 107)
{
ball-sùla_cnt = -10;
}
eile ma tha(eyeball_timer_cnt < 108)
{
ball-sùla_cnt = -40;
}
eile ma tha(eyeball_timer_cnt < 158)
{
ball-sùla_cnt = -54;
}
eile ma tha(eyeball_timer_cnt < 159)
{
ball-sùla_cnt = -40;
}
eile ma tha(eyeball_timer_cnt < 160)
{
ball-sùla_cnt = -10;
}
eile ma tha(eyeball_timer_cnt < 161)
{
ball-sùla_cnt = 20;
ball-sùla_timer_cnt = 0;
}
// Gluais air chlì is deas
// ma tha(sùilean_flag == 0)
// {
// ball-sùla_cnt++;
// ma tha(sùilean_cnt>= 94)
// {
// eyeball_flag = 1;
// }
// }
// eile
// {
// ball-sùla_cnt–;
// ma tha(sùilean_cnt <= -54)
// {
// eyeball_flag = 0;
// }
// }
ma tha (eyeball_cnt>= 0)
{
ball-sùla_pos[0] = 0 × 00;
ball-sùla_pos[1] = ball-sùla_cnt;
}
eile
{
ball-sùla_pos[0] = 0xFF;
eyeball_pos[1] = (eyeball_cnt & 0xFF);
}
write_dgus_vp(0×3111, (u8*)&eyeball_pos, 2);
}
falamh sùla_run()
{
statach u32 run_timer_cnt = 0;
run_timer_cnt++;
ma tha (run_timer_cnt> = 20000)
{
run_timer_cnt = 0;
ball-sùla_animat();
}
}
5. Cuir aithne aghaidh ESP32 ris gus gluasad nan sùilean às deidh an aghaidh a thoirt gu buil.
Is e an dòigh giollachd an seo nuair a lorgar an aghaidh, nach bi na sùilean a’ gluasad leotha fhèin, agus tha caochladair air a mhìneachadh gu àrdachadh anns an lùb ùine.Nuair a ruigeas an àrdachadh luach sònraichte, gluaisidh na sùilean leotha fhèin.Nuair a gheibh am port sreathach dàta, thèid an caochladair seo a ghlanadh, agus an uairsin gluais na sùilean a-mhàin a rèir suidheachadh an aodainn.Tha am prìomh chòd mar a leanas:
ma tha(rec_data_timer_cnt <1000000)
{
rec_data_timer_cnt++;
}
eile
{
ball-sùla_run();
}
taobh a-muigh u32 rec_data_timer_cnt;
taobh a-muigh u16 eyeball_timer_cnt;
falamh Conaltradh_CMD(u8 st)
{
ma tha((uart[st].Rx_F===1)&&(uart[st].Rx_T==0))
{
rec_data_timer_cnt = 0;
ball-sùla_timer_cnt = 0;
#if(Type_Communication==1)
Thoir cunntas_8283(st);
#elif(Type_Communication==2)
Thoir cunntas air_Modbus(st);
#deireadh
uart[st].Rx_F=0;
uart[st].Rx_Num=0;
}
}
Ùine puist: Jun-26-2023