Smart Panon Dumasar DWIN Circular Screen

——Ti DWIN Forum pamekar

Proyék open source forum pamekar DWIN disarankeun pikeun sadayana waktos ieu mangrupikeun rutin anu pikaresepeun pikeun simulasi gerakan panon manusa.Insinyur ngagunakeun sababaraha bahan gambar panon manusa pikeun ngawujudkeun fungsi sapertos gerakan bola panon, kedip-kedip, pangenal wajah sareng nuturkeun.

Bubuka pikeun solusi open source:

1. Bahan gambar UI

Catetan editor: DWIN layar pinter dumasar kana gambar pikeun ngalengkepan ngembangkeun UI, nu bisa kalayan gampang ngawujudkeun rupa épék tampilan.

dytrgf (1)

2. Pangwangunan panganteur

Ieu kawilang basajan ngamekarkeun panganteur ngaliwatan software DGUS, sarta ngan dua kadali grafis diperlukeun.Dina rutin ieu, insinyur milih layar pinter buleud 2,1 inci.

dytrgf (2)

3. Ngawujudkeun animasi kedip-kedip

Hayu gambar tina kongkolak panon dipintonkeun dina gilirannana dina interval:

//Blink animasi

void blink_animat(void)

{

lamun (blink_flag == 0)

{

blink_cnt++;

lamun (blink_cnt>= 4)

{

blink_flag = 1;

}

}

lain

{

blink_cnt–;

lamun (blink_cnt <= 0)

{

blink_flag = 0;

}

}

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

}

batal blink_run()

{

statik u32 run_timer_cnt = 0;

run_timer_cnt++;

lamun (run_timer_cnt>= 2000000)

{

run_timer_cnt = 0;

blink_animat();

Tunda_ms(30);

blink_animat();

Tunda_ms(30);

blink_animat();

Tunda_ms(30);

blink_animat();

Tunda_ms(30);

blink_animat();

Tunda_ms(30);

blink_animat();

Tunda_ms(30);

blink_animat();

Tunda_ms(30);

blink_animat();

Tunda_ms(30);

}

}

4. Sadar bola panon kasampak kénca jeung katuhu sacara alami.

Ieu sami sareng kedip-kedip, tapi kedah ngabandingkeun waktos osilator kristal pikeun ngontrol gerakan panon.Saatos sababaraha kali debugging, insinyur ngarancang set kode di handap ieu.

//Animasi panon

void eyeball_animat(void)

{

eyeball_timer_cnt++;

lamun(eyeball_timer_cnt < 50)

{

panon_cnt = 20;

}

lain lamun(eyeball_timer_cnt < 51)

{

panon_cnt = 50;

}

lain lamun(eyeball_timer_cnt < 52)

{

panon_cnt = 80;

}

lain lamun(eyeball_timer_cnt < 53)

{

panon_cnt = 94;

}

lain lamun(eyeball_timer_cnt < 103)

{

panon_cnt = 94;

}

lain lamun(eyeball_timer_cnt < 104)

{

panon_cnt = 80;

}

lain lamun(eyeball_timer_cnt < 105)

{

panon_cnt = 50;

}

lain lamun(eyeball_timer_cnt < 106)

{

panon_cnt = 20;

}

lain lamun(eyeball_timer_cnt < 107)

{

panon_cnt = -10;

}

lain lamun(eyeball_timer_cnt < 108)

{

panon_cnt = -40;

}

lain lamun(eyeball_timer_cnt < 158)

{

panon_cnt = -54;

}

lain lamun(eyeball_timer_cnt < 159)

{

panon_cnt = -40;

}

lain lamun(eyeball_timer_cnt < 160)

{

panon_cnt = -10;

}

lain lamun(eyeball_timer_cnt < 161)

{

panon_cnt = 20;

eyeball_timer_cnt = 0;

}

// Pindah ka kénca jeung ka katuhu

// lamun (eyeball_flag == 0)

// {

// eyeball_cnt++;

// lamun (eyeball_cnt >= 94)

// {

// eyeball_flag = 1;

// }

// }

// lain

// {

// eyeball_cnt–;

// lamun (eyeball_cnt <= -54)

// {

// eyeball_flag = 0;

// }

// }

lamun (eyeball_cnt >= 0)

{

panon_pos[0] = 0×00;

panon_pos[1] = panon_cnt;

}

lain

{

panon_pos[0] = 0xFF;

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

}

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

}

batal eyeball_run()

{

statik u32 run_timer_cnt = 0;

run_timer_cnt++;

lamun (run_timer_cnt>= 20000)

{

run_timer_cnt = 0;

eyeball_animat();

}

}

5. Tambahkeun ESP32 face recognition pikeun ngawujudkeun gerakan panon nuturkeun raray.

Métode ngolah di dieu nyaéta nalika raray dideteksi, panon henteu gerak sorangan, sareng variabel diartikeun kanaékan dina loop bari.Nalika naékna ngahontal nilai anu tangtu, bola panon bakal gerak sorangan.Nalika port serial narima data, variabel ieu bakal diberesihan, lajeng ngan mindahkeun panon nurutkeun posisi raray.Kodeu utama nyaéta kieu:

lamun (rec_data_timer_cnt < 1000000)

{

rec_data_timer_cnt++;

}

lain

{

eyeball_run();

}

extern u32 rec_data_timer_cnt;

extern u16 eyeball_timer_cnt;

batal Komunikasi_CMD(u8 st)

{

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

{

rec_data_timer_cnt = 0;

eyeball_timer_cnt = 0;

#lamun(Type_Communication==1)

Describe_8283(st);

#elif(Type_Communication==2)

Describe_Modbus(st);

#endif

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

}

}


waktos pos: Jun-26-2023