Çavê Zêrîn ku Li ser Ekrana Circular DWIN-ê ye

——Ji Foruma Pêşdebir a DWIN

Projeya çavkaniya vekirî ya forumê ya pêşdebir DWIN ku vê carê ji her kesî re tê pêşniyar kirin ji bo simulkirina tevgera çavên mirovan rûtînek pir balkêş e.Endezyar gelek materyalên wêneya çavê mirovan bikar anî da ku fonksiyonên wekî tevgera çavan, çikandin, naskirina rû û şopandinê pêk bîne.

Destpêka çareseriyên çavkaniya vekirî:

1. Materyalên wêneya UI

Nîşe edîtor: Dîmendera hişmend a DWIN li ser bingeha wêneyan e ku pêşveçûna UI-yê temam bike, ku dikare bi hêsanî bandorên dîmenderê yên cihêreng bibîne.

dytrgf (1)

2. Pêşveçûna navberê

Pêşvebirina navberê bi nermalava DGUS-ê re têkildar hêsan e, û tenê du kontrolên grafîkî hewce ne.Di vê rûtîn de, endezyar ekranek jîr a 2.1-inch hilbijart.

dytrgf (2)

3. Anîmasyona blinkê rast bikin

Bihêle ku wêneyên palpiştan bi rêzê bi navber bêne xuyang kirin:

// Anîmasyon Blink

void blink_animat(betal)

{

ger(alaya_blink == 0)

{

blink_cnt++;

ger(blink_cnt >= 4)

{

blink_flag = 1;

}

}

wekîdi

{

blink_cnt–;

eger(blink_cnt <= 0)

{

blink_flag = 0;

}

}

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

}

betal blink_run()

{

statîk 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. Fêm bikin ku çavên çavan bi xwezayî çep û rast dibînin.

Ev dişibihe çikandinê, lê pêdivî ye ku meriv dema oscilatora krîstal bide ber hev da ku tevgera çavan kontrol bike.Piştî gelek caran xeletkirinê, endezyar komek kodên jêrîn sêwirand.

//Eyeball animation

void eyeball_animat(void)

{

eyeball_timer_cnt++;

if(eyeball_timer_cnt < 50)

{

eyeball_cnt = 20;

}

else if(eyeball_timer_cnt < 51)

{

eyeball_cnt = 50;

}

else if(eyeball_timer_cnt < 52)

{

eyeball_cnt = 80;

}

else if(eyeball_timer_cnt < 53)

{

eyeball_cnt = 94;

}

else if(eyeball_timer_cnt < 103)

{

eyeball_cnt = 94;

}

else if(eyeball_timer_cnt < 104)

{

eyeball_cnt = 80;

}

else if(eyeball_timer_cnt < 105)

{

eyeball_cnt = 50;

}

else if(eyeball_timer_cnt < 106)

{

eyeball_cnt = 20;

}

else if(eyeball_timer_cnt < 107)

{

eyeball_cnt = -10;

}

else if(eyeball_timer_cnt < 108)

{

eyeball_cnt = -40;

}

else if(eyeball_timer_cnt < 158)

{

eyeball_cnt = -54;

}

else if(eyeball_timer_cnt < 159)

{

eyeball_cnt = -40;

}

else if(eyeball_timer_cnt < 160)

{

eyeball_cnt = -10;

}

else if(eyeball_timer_cnt < 161)

{

eyeball_cnt = 20;

eyeball_timer_cnt = 0;

}

// Çep û rast bizivirin

// eger(bala_çav == 0)

// {

// eyeball_cnt++;

// if(eyeball_cnt >= 94)

// {

// eyeball_ala = 1;

// }

// }

// din

// {

// eyeball_cnt–;

// if(eyeball_cnt <= -54)

// {

// eyeball_ala = 0;

// }

// }

if(eyeball_cnt >= 0)

{

eyeball_pos[0] = 0×00;

eyeball_pos[1] = eyeball_cnt;

}

wekîdi

{

eyeball_pos[0] = 0xFF;

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

}

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

}

void eyeball_run()

{

statîk u32 run_timer_cnt = 0;

run_timer_cnt++;

if(run_timer_cnt >= 20000)

{

run_timer_cnt = 0;

eyeball_animat();

}

}

5. Nasîna rûyê ESP32 lê zêde bikin da ku tevgera çavên li dû rû fam bikin.

Rêbaza pêvajoyê li vir ev e ku dema ku rû tê tesbît kirin, çav bi xwe tevnagerin, û guhêrbarek ji bo zêdekirina di demajoyê de tê destnîşankirin.Dema ku zêdebûn bigihîje nirxek diyar, gulikên çavan bi xwe diçin.Dema ku porta serial daneyan werdigire, ev guhêrbar dê were paqij kirin, û dûv re tenê çavan li gorî pozîsyona rû bihejîne.Koda sereke wiha ye:

if(rec_data_timer_cnt < 1000000)

{

rec_data_timer_cnt++;

}

wekîdi

{

eyeball_run();

}

extern u32 rec_data_timer_cnt;

extern u16 eyeball_timer_cnt;

void Communication_CMD(u8 st)

{

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

{

rec_data_timer_cnt = 0;

eyeball_timer_cnt = 0;

#if(Cûreya_Pêwendî==1)

Describe_8283(st);

#elif(Cûreya_Pêwendî==2)

Describe_Modbus(st);

#endif

uart[st].Rx_F=0;

uart[st].Rx_Num=0;

}

}


Dema şandinê: Jun-26-2023