DWIN सर्कुलर स्क्रीनवर आधारित स्मार्ट आय

——DWIN डेव्हलपर फोरम कडून

यावेळी प्रत्येकासाठी शिफारस केलेला DWIN डेव्हलपर फोरम ओपन सोर्स प्रकल्प मानवी डोळ्यांच्या हालचालींचे अनुकरण करण्यासाठी एक अतिशय मनोरंजक दिनक्रम आहे.नेत्रगोलकाची हालचाल, लुकलुकणे, चेहरा ओळखणे आणि अनुसरण करणे यासारखी कार्ये साकार करण्यासाठी अभियंत्याने अनेक मानवी डोळ्यांच्या चित्र सामग्रीचा वापर केला.

ओपन सोर्स सोल्यूशन्सचा परिचय:

1. UI प्रतिमा सामग्री

संपादकाची नोंद: DWIN स्मार्ट स्क्रीन UI डेव्हलपमेंट पूर्ण करण्यासाठी चित्रांवर आधारित आहे, ज्यामुळे विविध डिस्प्ले इफेक्ट सहज लक्षात येऊ शकतात.

dytrgf (1)

2. इंटरफेस विकास

डीजीयूएस सॉफ्टवेअरद्वारे इंटरफेस विकसित करणे तुलनेने सोपे आहे आणि फक्त दोन ग्राफिक नियंत्रणे आवश्यक आहेत.या दिनचर्यामध्ये, अभियंत्याने 2.1-इंच गोल स्मार्ट स्क्रीन निवडली.

dytrgf (2)

3. ब्लिंक अॅनिमेशन साकार करा

पापण्यांची चित्रे अंतराने दर्शवू द्या:

// ब्लिंक अॅनिमेशन

void blink_animat(void)

{

जर (ब्लिंक_ध्वज == 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);

}

void blink_run()

{

स्थिर u32 run_timer_cnt = 0;

run_timer_cnt++;

जर (रन_टाइमर_सीएनटी >= 2000000)

{

run_timer_cnt = 0;

blink_animat();

विलंब_एमएस(३०);

blink_animat();

विलंब_एमएस(३०);

blink_animat();

विलंब_एमएस(३०);

blink_animat();

विलंब_एमएस(३०);

blink_animat();

विलंब_एमएस(३०);

blink_animat();

विलंब_एमएस(३०);

blink_animat();

विलंब_एमएस(३०);

blink_animat();

विलंब_एमएस(३०);

}

}

4. डोळ्यांचे गोळे नैसर्गिकरित्या डावीकडे आणि उजवीकडे दिसतात हे लक्षात घ्या.

हे डोळे मिचकावण्यासारखे आहे, परंतु डोळ्याच्या हालचाली नियंत्रित करण्यासाठी क्रिस्टल ऑसिलेटरच्या वेळेची तुलना करणे आवश्यक आहे.अनेक वेळा डीबगिंग केल्यानंतर, अभियंत्याने खालील कोडचा संच तयार केला.

//आयबॉल अॅनिमेशन

void eyeball_animat(void)

{

eyeball_timer_cnt++;

जर(आयबॉल_टाइमर_सीएनटी < ५०)

{

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;

}

//डावीकडे आणि उजवीकडे हलवा

// जर (आईबॉल_फ्लॅग == 0)

// {

// नेत्रगोलक_cnt++;

// जर(eyeball_cnt >= 94)

// {

// नेत्रगोलक_ध्वज = 1;

// }

// }

// इतर

// {

// eyeball_cnt–;

// if(eyeball_cnt <= -54)

// {

// नेत्रगोलक_ध्वज = 0;

// }

// }

जर (आयबॉल_सीएनटी >= 0)

{

नेत्रगोलक_पोस[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++;

जर (रन_टाइमर_सीएनटी >= 20000)

{

run_timer_cnt = 0;

eyeball_animat();

}

}

5. चेहर्‍यामागे डोळ्यांची हालचाल लक्षात येण्यासाठी ESP32 फेस रेकग्निशन जोडा.

येथे प्रक्रिया करण्याची पद्धत अशी आहे की जेव्हा चेहरा शोधला जातो, तेव्हा डोळे स्वतःहून हलत नाहीत आणि व्हेरिएबल लूपमध्ये वाढ करण्यासाठी परिभाषित केले जाते.जेव्हा वाढ एका विशिष्ट मूल्यापर्यंत पोहोचते, तेव्हा नेत्रगोलक स्वतःहून हलतील.जेव्हा सीरियल पोर्ट डेटा प्राप्त करतो, तेव्हा हे व्हेरिएबल साफ केले जाईल आणि नंतर फक्त चेहऱ्याच्या स्थितीनुसार डोळे हलवा.मुख्य कोड खालीलप्रमाणे आहे:

जर(rec_data_timer_cnt < 1000000)

{

rec_data_timer_cnt++;

}

इतर

{

eyeball_run();

}

extern u32 rec_data_timer_cnt;

extern u16 eyeball_timer_cnt;

void Communication_CMD(u8 st)

{

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

{

rec_data_timer_cnt = 0;

eyeball_timer_cnt = 0;

#if(Type_Communication==1)

वर्णन_8283(st);

#elif(Type_Communication==2)

वर्णन_मॉडबस(st);

#endif

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

}

}


पोस्ट वेळ: जून-26-2023