Smart Eye Byggt á DWIN hringlaga skjá

——Frá DWIN Developer Forum

DWIN þróunarvettvangurinn opinn uppspretta verkefni sem mælt er með fyrir alla að þessu sinni er mjög áhugaverð venja til að líkja eftir hreyfingu manna augna.Verkfræðingurinn notaði nokkur myndefni úr mönnum til að átta sig á aðgerðum eins og augnboltahreyfingu, blikka, andlitsgreiningu og eftirfylgni.

Kynning á opnum lausnum:

1. HÍ myndefni

Athugasemd ritstjóra: DWIN snjallskjár er byggður á myndum til að ljúka við þróun HÍ, sem getur auðveldlega áttað sig á ýmsum skjááhrifum.

dytrgf (1)

2. Viðmótsþróun

Það er tiltölulega einfalt að þróa viðmótið í gegnum DGUS hugbúnað og aðeins þarf tvær grafískar stýringar.Í þessari venju valdi verkfræðingur 2,1 tommu kringlóttan snjallskjá.

dytrgf (2)

3. Gerðu þér grein fyrir blikk-fjöri

Láttu myndirnar af augnlokunum birtast til skiptis með millibili:

//Blink fjör

ógilt blink_animat(void)

{

if(blink_flag == 0)

{

blink_cnt++;

if(blink_cnt >= 4)

{

blink_flag = 1;

}

}

Annar

{

blink_cnt–;

if(blink_cnt <= 0)

{

blink_flag = 0;

}

}

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

}

ógilt blink_run()

{

truflanir 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. Gerðu þér grein fyrir að augnboltarnir líta náttúrulega til vinstri og hægri.

Þetta er svipað og að blikka, en það þarf að bera saman tíma kristalsveiflunnar til að stjórna augnhreyfingunni.Eftir margoft kembiforrit hannaði verkfræðingur eftirfarandi sett af kóða.

//Eyeball fjör

ógilt eyeball_animat(void)

{

eyeball_timer_cnt++;

if(eyeball_timer_cnt < 50)

{

eyeball_cnt = 20;

}

annað ef (eyeball_timer_cnt < 51)

{

eyeball_cnt = 50;

}

annað ef (eyeball_timer_cnt < 52)

{

eyeball_cnt = 80;

}

annað ef (eyeball_timer_cnt < 53)

{

eyeball_cnt = 94;

}

annað ef (eyeball_timer_cnt < 103)

{

eyeball_cnt = 94;

}

annað ef (eyeball_timer_cnt < 104)

{

eyeball_cnt = 80;

}

annað ef (eyeball_timer_cnt < 105)

{

eyeball_cnt = 50;

}

annað ef (eyeball_timer_cnt < 106)

{

eyeball_cnt = 20;

}

annað ef (eyeball_timer_cnt < 107)

{

eyeball_cnt = -10;

}

annað ef (eyeball_timer_cnt < 108)

{

eyeball_cnt = -40;

}

annað ef (eyeball_timer_cnt < 158)

{

eyeball_cnt = -54;

}

annað ef (eyeball_timer_cnt < 159)

{

eyeball_cnt = -40;

}

annað ef (eyeball_timer_cnt < 160)

{

eyeball_cnt = -10;

}

annað ef (eyeball_timer_cnt < 161)

{

eyeball_cnt = 20;

eyeball_timer_cnt = 0;

}

//Færðu til vinstri og hægri

// if(augnótt_fáni == 0)

// {

// eyeball_cnt++;

// if(eyeball_cnt >= 94)

// {

// eyeball_flag = 1;

// }

// }

// Annar

// {

// eyeball_cnt–;

// if(eyeball_cnt <= -54)

// {

// eyeball_flag = 0;

// }

// }

if(eyeball_cnt >= 0)

{

eyeball_pos[0] = 0×00;

eyeball_pos[1] = eyeball_cnt;

}

Annar

{

eyeball_pos[0] = 0xFF;

eyeball_pos[1] = (eyeball_cnt & 0xFF);

}

write_dgus_vp(0×3111, (u8 *)&eyeball_pos, 2);

}

ógilt eyeball_run()

{

truflanir u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 20000)

{

run_timer_cnt = 0;

eyeball_animat();

}

}

5. Bættu við ESP32 andlitsþekkingu til að átta sig á hreyfingum augna sem fylgja andlitinu.

Vinnsluaðferðin hér er sú að þegar andlitið er greint hreyfast augun ekki af sjálfu sér og breyta er skilgreind til að aukast í while lykkjunni.Þegar aukningin nær ákveðnu gildi munu augnsteinarnir hreyfast af sjálfu sér.Þegar raðtengið fær gögn verður þessi breyta hreinsuð og hreyfðu þá aðeins augun í samræmi við stöðu andlitsins.Aðalkóði er sem hér segir:

if(rec_data_timer_cnt < 1000000)

{

rec_data_timer_cnt++;

}

Annar

{

eyeball_run();

}

ytri u32 rec_data_timer_cnt;

ytri u16 eyeball_timer_cnt;

ógild samskipti_CMD(u8 st)

{

if((uart[st].Rx_F==1 )&&(uart[st].Rx_T==0))

{

rec_data_timer_cnt = 0;

eyeball_timer_cnt = 0;

#if(Type_Communication==1)

Describe_8283(st);

#elif(Type_Communication==2)

Describe_Modbus(st);

#endif

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

}

}


Birtingartími: 26. júní 2023