Тема: Темброблок 5.1 на PT2323 и PT2322 (Arduino)
Создайте новую переменную w2
bool w2;
Вот пример кода для регулировки громкости:
if(menu==0){
if(ir.value==0x2FD906F){vol++;g1=1;g2=0;cl();time=millis();w=1;audio();}// кнопка VOL+ 0xFFA857
if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;audio();}// кнопка >>>>>>
if(ir.value==0x2FDF20D){vol--;g1=0;g2=1;cl();time=millis();w=1;audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;audio();}// кнопка <<<<<<
if(vol>79){vol=79;}if(vol<0){vol=0;}
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;if(vol>79){vol=79;}if(vol<0){vol=0;}audio();}
lcd.setCursor(0,0);lcd.print("Volume ");
lcd.print(" ");lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol-32;
for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
после w=1 используйте новую переменную w2=1;
После изменения параметра громкости w2 станет равна 1
Пример ниже:
if(menu==0){
if(ir.value==0x2FD906F){vol++;g1=1;g2=0;cl();time=millis();w=1;w2=1;audio();}// кнопка VOL+ 0xFFA857
if(ir.value==0xFFFFFFFF and g1==1){vol++;g2=0;cl();time=millis();w=1;w2=1;audio();}// кнопка >>>>>>
if(ir.value==0x2FDF20D){vol--;g1=0;g2=1;cl();time=millis();w=1;w2=1;audio();}// кнопка VOL-
if(ir.value==0xFFFFFFFF and g2==1){vol--;g1=0;cl();time=millis();w=1;w2=1;audio();}// кнопка <<<<<<
if(vol>79){vol=79;}if(vol<0){vol=0;}
if (newPosition != oldPosition) {
oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol>79){vol=79;}if(vol<0){vol=0;}audio();}
lcd.setCursor(0,0);lcd.print("Volume ");
lcd.print(" ");lcd.print(-79+vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=vol-32;
if(w2==1){ w2=0;
for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
}
Добавьте условие в код вывода строки уровня громкости
if(w2==1){ w2=0;
for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}}
После исполнения кода вывода строки уровня громкости переменная w2 станет равной 0, запрещая по новой запускать код вывода строки уровня громкости, мерцания строки уровня громкости должно исчезнуть