——Soti nan DWIN Developer Forum
Pwojè sous louvri fowòm pwomotè DWIN rekòmande pou tout moun fwa sa a se yon woutin trè enteresan pou similye mouvman je moun.Enjenyè a te itilize plizyè materyèl foto je moun pou reyalize fonksyon tankou mouvman globil je, kliyote, rekonesans figi ak swiv.
Entwodiksyon nan solisyon sous louvri:
1. UI imaj materyèl
Nòt editè a: ekran entelijan DWIN baze sou foto pou konplete devlopman UI, ki ka fasilman reyalize divès efè ekspozisyon.
2. Devlopman entèfas
Li se relativman senp yo devlope koòdone a atravè lojisyèl DGUS, epi sèlman de kontwòl grafik yo bezwen.Nan woutin sa a, enjenyè a te chwazi yon ekran entelijan wonn 2.1 pous.
3. Reyalize animasyon blink
Kite foto po je yo parèt youn apre lòt nan entèval:
//Blink animasyon
anile blink_animat(anile)
{
if(blink_flag == 0)
{
blink_cnt++;
if(blink_cnt >= 4)
{
blink_flag = 1;
}
}
lòt bagay
{
blink_cnt–;
si(blink_cnt <= 0)
{
blink_flag = 0;
}
}
write_dgus_vp(0×3000, (u8 *)&blink_cnt, 2);
}
anile blink_run()
{
estatik u32 run_timer_cnt = 0;
run_timer_cnt++;
if(run_timer_cnt>= 2000000)
{
run_timer_cnt = 0;
blink_animat();
Delay_ms(30);
blink_animat();
Delay_ms(30);
blink_animat();
Delay_ms(30);
blink_animat();
Delay_ms(30);
blink_animat();
Delay_ms(30);
blink_animat();
Delay_ms(30);
blink_animat();
Delay_ms(30);
blink_animat();
Delay_ms(30);
}
}
4. Reyalize boul je yo gade bò gòch ak dwa natirèlman.
Sa a se menm jan ak kliyote, men li bezwen konpare tan an nan osilator la kristal kontwole mouvman an je.Apre anpil fwa nan debogaj, enjenyè a te fèt seri kòd sa a.
//Animasyon boul je
void eyeball_animat(void)
{
eyeball_timer_cnt++;
if(eyeball_timer_cnt < 50)
{
eyeball_cnt = 20;
}
else if(eyeball_timer_cnt < 51)
{
eyeball_cnt = 50;
}
else if(eyeball_timer_cnt < 52)
{
eyeball_cnt = 80;
}
else if(eyeball_timer_cnt < 53)
{
eyeball_cnt = 94;
}
else if(eyeball_timer_cnt < 103)
{
eyeball_cnt = 94;
}
else if(eyeball_timer_cnt < 104)
{
eyeball_cnt = 80;
}
else if(eyeball_timer_cnt < 105)
{
eyeball_cnt = 50;
}
else if(eyeball_timer_cnt < 106)
{
eyeball_cnt = 20;
}
else if(eyeball_timer_cnt < 107)
{
eyeball_cnt = -10;
}
else if(eyeball_timer_cnt < 108)
{
eyeball_cnt = -40;
}
else if(eyeball_timer_cnt < 158)
{
eyeball_cnt = -54;
}
else if(eyeball_timer_cnt < 159)
{
eyeball_cnt = -40;
}
else if(eyeball_timer_cnt < 160)
{
eyeball_cnt = -10;
}
else if(eyeball_timer_cnt < 161)
{
eyeball_cnt = 20;
eyeball_timer_cnt = 0;
}
//Deplase agoch ak dwa
// si(drapo_zye == 0)
// {
// eyeball_cnt++;
// if(eyeball_cnt >= 94)
// {
// eyeball_flag = 1;
//}
//}
// lòt bagay
// {
// eyeball_cnt–;
// if(eyeball_cnt <= -54)
// {
// eyeball_flag = 0;
//}
//}
if(eyeball_cnt >= 0)
{
eyeball_pos[0] = 0×00;
eyeball_pos[1] = eyeball_cnt;
}
lòt bagay
{
eyeball_pos [0] = 0xFF;
eyeball_pos[1] = (eyeball_cnt & 0xFF);
}
write_dgus_vp(0×3111, (u8 *)&eyeball_pos, 2);
}
void eyeball_run ()
{
estatik u32 run_timer_cnt = 0;
run_timer_cnt++;
if(run_timer_cnt>= 20000)
{
run_timer_cnt = 0;
eyeball_animat();
}
}
5. Ajoute ESP32 rekonesans figi reyalize mouvman an nan je swiv figi an.
Metòd pwosesis la isit la se ke lè figi a detekte, je yo pa deplase poukont yo, epi yo defini yon varyab pou ogmante nan bouk la pandan y ap.Lè ogmantasyon an rive nan yon sèten valè, je yo ap deplase poukont yo.Lè pò seri a resevwa done, varyab sa a pral otorize, ak Lè sa a, sèlman deplase je yo dapre pozisyon nan figi an.Kòd prensipal la se jan sa a:
if(rec_data_timer_cnt < 1000000)
{
rec_data_timer_cnt++;
}
lòt bagay
{
eyeball_run();
}
extern u32 rec_data_timer_cnt;
extern u16 eyeball_timer_cnt;
void Communication_CMD(u8 st)
{
si((uart[st].Rx_F==1 )&&(uart[st].Rx_T==0))
{
rec_data_timer_cnt = 0;
eyeball_timer_cnt = 0;
#if(Type_Communication==1)
Dekri_8283(st);
#elif(Type_Communication==2)
Dekri_Modbus(st);
#endif
uart[st].Rx_F=0;
uart[st].Rx_Num=0;
}
}
Tan poste: Jun-26-2023