DWIN ସର୍କୁଲାର୍ ସ୍କ୍ରିନ୍ ଉପରେ ଆଧାରିତ ସ୍ମାର୍ଟ ଆଖି |

—— DWIN ଡେଭଲପର୍ ଫୋରମ୍ ରୁ |

ମାନବ ଆଖିର ଗତିବିଧିକୁ ଅନୁକରଣ କରିବା ପାଇଁ DWIN ଡେଭଲପର୍ ଫୋରମ୍ ଓପନ୍ ସୋର୍ସ ପ୍ରୋଜେକ୍ଟ ସମସ୍ତଙ୍କ ପାଇଁ ଏଥର ସୁପାରିଶ କରାଯାଇଛି |ଇଞ୍ଜିନିୟର୍ ଅନେକ ମାନବ ଚକ୍ଷୁ ଚିତ୍ର ସାମଗ୍ରୀ ବ୍ୟବହାର କରିଥିଲେ ଯେପରିକି ଆଇବଲ୍ ଗତି, ink ଲସି ଉଠିବା, ଚେହେରା ଚିହ୍ନିବା ଏବଂ ଅନୁସରଣ କରିବା |

ମୁକ୍ତ ଉତ୍ସ ସମାଧାନର ପରିଚୟ:

1. UI ପ୍ରତିଛବି ସାମଗ୍ରୀ |

ସଂପାଦକଙ୍କ ଟିପ୍ପଣୀ: UI ବିକାଶ ସଂପୂର୍ଣ୍ଣ କରିବାକୁ DWIN ସ୍ମାର୍ଟ ସ୍କ୍ରିନ ଚିତ୍ର ଉପରେ ଆଧାରିତ, ଯାହା ବିଭିନ୍ନ ପ୍ରଦର୍ଶନ ପ୍ରଭାବକୁ ସହଜରେ ହୃଦୟଙ୍ଗମ କରିପାରିବ |

dytrgf (1)

2. ଇଣ୍ଟରଫେସ୍ ବିକାଶ

DGUS ସଫ୍ଟୱେର୍ ମାଧ୍ୟମରେ ଇଣ୍ଟରଫେସ୍ ବିକାଶ କରିବା ଅପେକ୍ଷାକୃତ ସରଳ, ଏବଂ କେବଳ ଦୁଇଟି ଗ୍ରାଫିକ୍ କଣ୍ଟ୍ରୋଲ୍ ଆବଶ୍ୟକ |ଏହି ରୁଟିନ୍ରେ, ଇଞ୍ଜିନିୟର 2.1-ଇଞ୍ଚ ରାଉଣ୍ଡ ସ୍ମାର୍ଟ ସ୍କ୍ରିନ୍ ବାଛିଲେ |

dytrgf (2)

3. ink ଲକ ଆନିମେସନ୍ ହୃଦୟଙ୍ଗମ କରନ୍ତୁ |

ଆଖିପତାଗୁଡ଼ିକର ଚିତ୍ରଗୁଡ଼ିକ ବ୍ୟବଧାନରେ ପରବର୍ତ୍ତୀ ସମୟରେ ପ୍ରଦର୍ଶିତ ହେବାକୁ ଦିଅନ୍ତୁ:

// ବ୍ଲିକ୍ ଆନିମେସନ୍ |

ଶୂନ୍ୟ 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);

}

void blink_run ()

{

static u32 run_timer_cnt = 0;

run_timer_cnt ++;

ଯଦି (run_timer_cnt> = 2000000)

{

run_timer_cnt = 0;

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

blink_animat ();

ବିଳମ୍ବ_ମସ୍ (30);

}

}

4. ଆଖିପତା ପ୍ରାକୃତିକ ଭାବରେ ବାମ ଏବଂ ଡାହାଣ ଦେଖାଯାଏ |

ଏହା ink ଲସି ଉଠିବା ସହିତ ସମାନ, କିନ୍ତୁ ଆଖିର ଗତିକୁ ନିୟନ୍ତ୍ରଣ କରିବା ପାଇଁ ଏହା ସ୍ଫଟିକ୍ ଓସିଲେଟରର ସମୟ ତୁଳନା କରିବା ଆବଶ୍ୟକ |ଅନେକ ଥର ତ୍ରୁଟି ନିବାରଣ ପରେ, ଇଞ୍ଜିନିୟର ନିମ୍ନ କୋଡ୍ ସେଟ୍ ଡିଜାଇନ୍ କଲେ |

// ଆଇବଲ୍ ଆନିମେସନ୍ |

ଶୂନ୍ୟ ଚକ୍ଷୁ_ନିମାଟ୍ (ଶୂନ୍ୟ)

{

eyeball_timer_cnt ++;

ଯଦି (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;

}

// ବାମ ଏବଂ ଡାହାଣକୁ ଘୁଞ୍ଚାନ୍ତୁ |

// ଯଦି (eyeball_flag == 0)

// {

// eyeball_cnt ++;

// ଯଦି (eyeball_cnt> = 94)

// {

// eyeball_flag = 1;

//}

//}

// ଅନ୍ୟ

// {

// eyeball_cnt–;

// ଯଦି (eyeball_cnt <= -54)

// {

// eyeball_flag = 0;

//}

//}

ଯଦି (eyeball_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 ()

{

static u32 run_timer_cnt = 0;

run_timer_cnt ++;

ଯଦି (run_timer_cnt> = 20000)

{

run_timer_cnt = 0;

eyeball_animat ();

}

}

5. ଚେହେରାକୁ ଅନୁସରଣ କରୁଥିବା ଆଖିର ଗତିକୁ ହୃଦୟଙ୍ଗମ କରିବାକୁ ESP32 ଚେହେରା ଚିହ୍ନିବା ଯୋଗ କରନ୍ତୁ |

ଏଠାରେ ପ୍ରକ୍ରିୟାକରଣ ପ୍ରଣାଳୀ ହେଉଛି ଯେ ଯେତେବେଳେ ଚେହେରା ଚିହ୍ନଟ ହୁଏ, ଆଖି ନିଜେ ଗତି କରେ ନାହିଁ, ଏବଂ ଏକ ଭେରିଏବଲ୍ ସମୟ ଲୁପ୍ ରେ ବୃଦ୍ଧି ପାଇଁ ବ୍ୟାଖ୍ୟା କରାଯାଇଥାଏ |ଯେତେବେଳେ ବୃଦ୍ଧି ଏକ ନିର୍ଦ୍ଦିଷ୍ଟ ମୂଲ୍ୟରେ ପହଞ୍ଚେ, ଆଇବଲ୍ ଗୁଡିକ ନିଜେ ଗତି କରିବେ |ଯେତେବେଳେ କ୍ରମିକ ପୋର୍ଟ ତଥ୍ୟ ଗ୍ରହଣ କରେ, ଏହି ଭେରିଏବଲ୍ ସଫା ହୋଇଯିବ, ଏବଂ ତା’ପରେ କେବଳ ମୁହଁର ସ୍ଥିତି ଅନୁଯାୟୀ ଆଖିକୁ ଘୁଞ୍ଚାଇବ |ମୁଖ୍ୟ କୋଡ୍ ନିମ୍ନଲିଖିତ ଅଟେ:

ଯଦି (rec_data_timer_cnt <1000000)

{

rec_data_timer_cnt ++;

}

ଅନ୍ୟ

{

eyeball_run ();

}

ବାହ୍ୟ u32 rec_data_timer_cnt;

ବାହ୍ୟ u16 eyeball_timer_cnt;

ଶୂନ୍ୟ ଯୋଗାଯୋଗ_ 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);

# ଏଣ୍ଡିଫ୍ |

uart [st] .Rx_F = 0;

uart [st] .Rx_Num = 0;

}

}


ପୋଷ୍ଟ ସମୟ: ଜୁନ୍ -26-2023 |