DWIN ئايلانما ئېكرانىنى ئاساس قىلغان ئەقلىي كۆز

—— DWIN ئاچقۇچىلار مۇنبىرىدىن

بۇ قېتىم كۆپچىلىككە تەۋسىيە قىلىنغان DWIN ئاچقۇچىلار مۇنبىرى ئوچۇق كود تۈرى ئىنسانلارنىڭ كۆزىنىڭ ھەرىكىتىنى تەقلىد قىلىشتىكى ئىنتايىن قىزىقارلىق ئادەت.ئىنژېنېر كۆز ھەرىكىتى ، كۆزنى چاقنىتىش ، چىراي تونۇش ۋە ئەگىشىش قاتارلىق ئىقتىدارلارنى ئەمەلگە ئاشۇرۇش ئۈچۈن بىر نەچچە ئادەمنىڭ كۆز رەسىم ماتېرىيالىدىن پايدىلانغان.

ئوچۇق كودلۇق ھەل قىلىش چارىسى:

1. UI رەسىم ماتېرىيالى

مۇھەررىرنىڭ ئىزاھاتى: DWIN ئەقلىي ئىقتىدارلىق ئېكران رەسىملەرنى ئاساس قىلىپ UI تەرەققىياتىنى تاماملايدۇ ، ئۇ ھەرخىل كۆرسىتىش ئۈنۈمىنى ئاسانلا ھېس قىلالايدۇ.

dytrgf (1)

2. كۆرۈنمە يۈز ئېچىش

DGUS يۇمشاق دېتالى ئارقىلىق كۆرۈنمە يۈزىنى تەرەققىي قىلدۇرۇش بىر قەدەر ئاددىي ، پەقەت ئىككى گرافىك كونترول قىلىش كېرەك.بۇ ئادەتتە ، ئىنژېنېر 2.1 دىيۇملۇق يۇمىلاق ئەقلىي ئىقتىدارلىق ئېكراننى تاللىدى.

dytrgf (2)

3. غۇۋا كارتوننى ئەمەلگە ئاشۇرۇش

قاپىقىنىڭ رەسىملىرى ئۆز نۆۋىتىدە ئۆز نۆۋىتىدە كۆرسىتىلسۇن:

// كۆزنى چاقنىتىش

void blink_animat (void)

{

if (blink_flag == 0)

{

blink_cnt ++;

if (blink_cnt> = 4)

{

blink_flag = 1;

}

}

else

{

blink_cnt–;

if (blink_cnt <= 0)

{

blink_flag = 0;

}

}

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

}

void blink_run ()

{

static 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. كۆز قارىچۇقىنىڭ سول ۋە ئوڭ كۆرۈنۈشىنى تەبىئىي ھېس قىلىڭ.

بۇ كۆزنى چاقنىتىشقا ئوخشايدۇ ، ئەمما ئۇ كۆز ھەرىكىتىنى كونترول قىلىش ئۈچۈن خرۇستال تەۋرىنىش ۋاقتىنى سېلىشتۇرۇشقا موھتاج.ئىنژېنېر كۆپ قېتىم ھەل قىلىش ئارقىلىق ، تۆۋەندىكى بىر يۈرۈش كودلارنى لايىھەلەپ چىقتى.

// Eyeball animation

void eyeball_animat (void)

{

eyeball_timer_cnt ++;

if (eyeball_timer_cnt <50)

{

eyeball_cnt = 20;

}

بولمىسا (eyeball_timer_cnt <51)

{

eyeball_cnt = 50;

}

بولمىسا (eyeball_timer_cnt <52)

{

eyeball_cnt = 80;

}

بولمىسا (eyeball_timer_cnt <53)

{

eyeball_cnt = 94;

}

بولمىسا (eyeball_timer_cnt <103)

{

eyeball_cnt = 94;

}

بولمىسا (eyeball_timer_cnt <104)

{

eyeball_cnt = 80;

}

بولمىسا (eyeball_timer_cnt <105)

{

eyeball_cnt = 50;

}

بولمىسا (eyeball_timer_cnt <106)

{

eyeball_cnt = 20;

}

بولمىسا (eyeball_timer_cnt <107)

{

eyeball_cnt = -10;

}

بولمىسا (eyeball_timer_cnt <108)

{

eyeball_cnt = -40;

}

بولمىسا (eyeball_timer_cnt <158)

{

eyeball_cnt = -54;

}

بولمىسا (eyeball_timer_cnt <159)

{

eyeball_cnt = -40;

}

بولمىسا (eyeball_timer_cnt <160)

{

eyeball_cnt = -10;

}

بولمىسا (eyeball_timer_cnt <161)

{

eyeball_cnt = 20;

eyeball_timer_cnt = 0;

}

// سول ۋە ئوڭغا يۆتكەڭ

// if (eyeball_flag == 0)

// {

// eyeball_cnt ++;

// if (eyeball_cnt> = 94)

// {

// eyeball_flag = 1;

//}

//}

// else

// {

// eyeball_cnt–;

// if (eyeball_cnt <= -54)

// {

// eyeball_flag = 0;

//}

//}

if (eyeball_cnt> = 0)

{

eyeball_pos [0] = 0 × 00;

eyeball_pos [1] = eyeball_cnt;

}

else

{

eyeball_pos [0] = 0xFF;

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

}

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

}

void eyeball_run ()

{

static u32 run_timer_cnt = 0;

run_timer_cnt ++;

if (run_timer_cnt> = 20000)

{

run_timer_cnt = 0;

eyeball_animat ();

}

}

5. ESP32 چىراي تونۇشنى قوشۇپ ، كۆزنىڭ كەينىدىكى ھەرىكەتنى ھېس قىلىڭ.

بۇ يەردىكى بىر تەرەپ قىلىش ئۇسۇلى شۇكى ، چىراي بايقالغاندا ، كۆزلەر ئۆزلىكىدىن ھەرىكەتلەنمەيدۇ ، ھەمدە دەۋرىيلىنىش دەۋرىدە ئۆزگىرىشچان مىقدار ئېنىقلىنىدۇ.كۆپەيتىش مەلۇم قىممەتكە يەتكەندە ، كۆز ئالمىسى ئۆزلۈكىدىن يۆتكىلىدۇ.تەرتىپلىك ئېغىز سانلىق مەلۇماتنى تاپشۇرۇۋالغاندا ، بۇ ئۆزگەرگۈچى مىقدار تازىلىنىدۇ ، ئاندىن پەقەت يۈزنىڭ ئورنىغا ئاساسەن كۆزنى ھەرىكەتلەندۈرىدۇ.ئاساسلىق كود تۆۋەندىكىچە:

if (rec_data_timer_cnt <1000000)

{

rec_data_timer_cnt ++;

}

else

{

eyeball_run ();

}

extern u32 rec_data_timer_cnt;

سىرتقى 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;

eyeball_timer_cnt = 0;

#if (Type_Communication == 1)

Describe_8283 (st);

#elif (Type_Communication == 2)

Description_Modbus (st);

#endif

uart [st] .Rx_F = 0;

uart [st] .Rx_Num = 0;

}

}


يوللانغان ۋاقتى: Jun-26-2023