ස්මාර්ට් ඇස DWIN චක්‍රලේඛ තිරය මත පදනම් වේ

——DWIN Developer Forum වෙතින්

DWIN සංවර්ධක සංසදයේ විවෘත මූලාශ්‍ර ව්‍යාපෘතිය මෙවර සෑම දෙනාටම නිර්දේශ කර ඇති අතර එය මිනිස් ඇස්වල චලනය අනුකරණය කිරීම සඳහා ඉතා රසවත් පුරුද්දකි.ඇහිබැම චලනය, ඇසිපිය හෙළීම, මුහුණ හඳුනා ගැනීම සහ අනුගමනය කිරීම වැනි කාර්යයන් අවබෝධ කර ගැනීම සඳහා ඉංජිනේරුවරයා මිනිස් ඇස් පින්තූර ද්‍රව්‍ය කිහිපයක් භාවිතා කළේය.

විවෘත මූලාශ්‍ර විසඳුම් සඳහා හැඳින්වීම:

1. UI රූප ද්රව්ය

සංස්කාරක සටහන: DWIN ස්මාර්ට් තිරය UI සංවර්ධනය සම්පූර්ණ කිරීම සඳහා පින්තූර මත පදනම් වේ, එමඟින් විවිධ සංදර්ශක බලපෑම් පහසුවෙන් අවබෝධ කර ගත හැකිය.

dytrgf (1)

2. අතුරු මුහුණත සංවර්ධනය

DGUS මෘදුකාංගය හරහා අතුරු මුහුණත සංවර්ධනය කිරීම සාපේක්ෂ වශයෙන් සරල වන අතර අවශ්‍ය වන්නේ ග්‍රැෆික් පාලන දෙකක් පමණි.මෙම චර්යාවේදී, ඉංජිනේරුවරයා අඟල් 2.1 ක වටකුරු ස්මාර්ට් තිරයක් තෝරා ගත්තේය.

dytrgf (2)

3. Blink animation අවබෝධ කරගන්න

අක්ෂිවල පින්තූර වරින් වර ප්‍රදර්ශනය කිරීමට ඉඩ දෙන්න:

//Blink animation

හිස් blink_animat(ශුන්‍ය)

{

නම් (blink_flag == 0)

{

blink_cnt++;

නම්(blink_cnt >= 4)

{

blink_flag = 1;

}

}

වෙනත්

{

blink_cnt–;

නම්(blink_cnt <= 0)

{

blink_flag = 0;

}

}

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

}

හිස් blink_run()

{

ස්ථිතික u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 2000000)

{

run_timer_cnt = 0;

blink_animat();

ප්‍රමාද_ms(30);

blink_animat();

ප්‍රමාද_ms(30);

blink_animat();

ප්‍රමාද_ms(30);

blink_animat();

ප්‍රමාද_ms(30);

blink_animat();

ප්‍රමාද_ms(30);

blink_animat();

ප්‍රමාද_ms(30);

blink_animat();

ප්‍රමාද_ms(30);

blink_animat();

ප්‍රමාද_ms(30);

}

}

4. ඇහිබැමි ස්වභාවිකව වමට සහ දකුණට පෙනෙන බව වටහා ගන්න.

මෙය ඇසිපිය හෙළීමට සමාන ය, නමුත් අක්ෂි චලනය පාලනය කිරීම සඳහා ස්ඵටික දෝලකයේ කාලය සංසන්දනය කිරීම අවශ්ය වේ.බොහෝ වාර ගණනක් දෝෂහරණය කිරීමෙන් පසුව, ඉංජිනේරුවරයා පහත කේත කට්ටලය නිර්මාණය කළේය.

//ඇස්බෝල් සජීවිකරණය

ශුන්‍ය අයිබෝල්_ඇනිමැට්(ශුන්‍ය)

{

අයිබෝල්_ටයිමර්_cnt++;

if(eyeball_timer_cnt < 50)

{

eyeball_cnt = 20;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 51)

{

eyeball_cnt = 50;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 52)

{

eyeball_cnt = 80;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 53)

{

eyeball_cnt = 94;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 103)

{

eyeball_cnt = 94;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 104)

{

eyeball_cnt = 80;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 105)

{

eyeball_cnt = 50;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 106)

{

eyeball_cnt = 20;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 107)

{

eyeball_cnt = -10;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 108)

{

eyeball_cnt = -40;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 158)

{

eyeball_cnt = -54;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 159)

{

eyeball_cnt = -40;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 160)

{

eyeball_cnt = -10;

}

වෙනත් නම් (අයිබෝල්_ටයිමර්_cnt < 161)

{

eyeball_cnt = 20;

අයිබෝල්_ටයිමර්_cnt = 0;

}

//වමට සහ දකුණට යන්න

// if(eyeball_flag == 0)

// {

// eyeball_cnt++;

// if(eyeball_cnt >= 94)

// {

// eyeball_flag = 1;

// }

// }

//වෙනත්

// {

// eyeball_cnt–;

// if(eyeball_cnt <= -54)

// {

// eyeball_flag = 0;

// }

// }

නම්(අයිබෝල_cnt >= 0)

{

eyeball_pos[0] = 0×00;

eyeball_pos[1] = eyeball_cnt;

}

වෙනත්

{

eyeball_pos[0] = 0xFF;

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

}

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

}

void eyeball_run()

{

ස්ථිතික u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 20000)

{

run_timer_cnt = 0;

අයිබෝල්_ඇනිමැට් ();

}

}

5. ESP32 මුහුණු හඳුනාගැනීම එක් කරන්න, මුහුණට පසුව ඇස්වල චලනය අවබෝධ කර ගන්න.

මෙහි සැකසුම් ක්‍රමය නම් මුහුණ හඳුනාගත් විට ඇස් තනිවම චලනය නොවීම සහ while ලූපයේ වැඩි වීම සඳහා විචල්‍යයක් අර්ථ දැක්වීමයි.වර්ධකය නිශ්චිත අගයක් කරා ළඟා වූ විට, ඇහිබැමි ඔවුන් විසින්ම චලනය වනු ඇත.අනුක්‍රමික වරායට දත්ත ලැබුණු විට, මෙම විචල්‍යය ඉවත් කරනු ලැබේ, ඉන්පසු මුහුණේ පිහිටීම අනුව ඇස් පමණක් චලනය කරන්න.ප්රධාන කේතය පහත පරිදි වේ:

if(rec_data_timer_cnt < 1000000)

{

rec_data_timer_cnt++;

}

වෙනත්

{

අයිබෝල්_රන් ();

}

බාහිර u32 rec_data_timer_cnt;

extern u16 eyeball_timer_cnt;

void Communication_CMD(u8 st)

{

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

{

rec_data_timer_cnt = 0;

අයිබෝල්_ටයිමර්_cnt = 0;

#if(වර්ගය_සන්නිවේදනය==1)

විස්තර කරන්න_8283(st);

#elif(Type_Communication==2)

Modbus (st) විස්තර කරන්න;

#නම් අවසන්

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

}

}


පසු කාලය: ජූනි-26-2023