display piscando

bom dia,

sou iniciante no arduino e estou tentando criar um dispositivo no qual terei um menu de entrada de variáveis.
o que acontece é que as telas criadas ficam piscando como se fosse uma televisão fora de sintonia, e quando aperto os botões de incrementa e decrementa elas ficam visíveis...
agradeço desde já!

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

long interval = 1000;
long previousMillis = 0;
int botaoavancatela = 9;
int botaodecrementavalor = 8;
int botaoincrementavalor = 7;
int botaorecuatela = 6;
int valortelas = 0;
int estadobotaoavancatela = 0;
int estadobotaodecrementa = 0;
int estadobotaoincrementa = 0;
int estadobotaorecuatela = 0;
int quantidadedepecas = 0;
int tamanhopacote = 0;
int porcentagemcorrecao = 0;
int valortelascomparador = 0;

void setup(){
  lcd.begin(16, 2);
  pinMode(botaoavancatela, INPUT);
  pinMode(botaodecrementavalor, INPUT);
  pinMode(botaoincrementavalor, INPUT);
  pinMode(botaorecuatela, INPUT);
}
  

void loop(){
  estadobotaoavancatela = digitalRead(botaoavancatela);
  estadobotaodecrementa = digitalRead(botaodecrementavalor);
  estadobotaoincrementa = digitalRead(botaoincrementavalor);
  estadobotaorecuatela = digitalRead(botaorecuatela);
  
  
   unsigned long currentMillis = millis();
 
    
  
  if(estadobotaoavancatela==HIGH){
    valortelas = valortelas+1;
    delay(200);
    
    
  }
  if(estadobotaorecuatela==HIGH){
    valortelas = valortelas-1;
    delay(200);
    

  }
  
  if(valortelas<=0){
    valortelas = 0;
  }
  if(valortelas>=3){
    valortelas=3;
  }
  
  
      
      if (valortelas==0){
        lcd.clear();     
        lcd.setCursor(2,0);
        lcd.print("INVERTRONIC");           //tela 1 apresentacao//
        lcd.setCursor(1,1);
        lcd.print("(16)3441-9981");
      }
         
       
       
       if (valortelas==1){
        lcd.clear();            
        lcd.setCursor(3,0);
        lcd.print("QUANT.PECAS");
        lcd.setCursor(3,1);                                   //tela 2 quantidade de pecas//
        lcd.print(quantidadedepecas);
        
        
       
        if(estadobotaoincrementa == HIGH){
          quantidadedepecas = quantidadedepecas+1;
          delay(200);
          
          
        }
        if(estadobotaodecrementa == HIGH){
          quantidadedepecas = quantidadedepecas-1;
          delay(200);
          
        }
        }
        
       
          
      
      if (valortelas==2){
        lcd.clear();            
        lcd.setCursor(3,0);
        lcd.print("Tamanho PCT");
        lcd.setCursor(3,1);                                   //tela 3 TAMANHO PACOTE//
        lcd.print(tamanhopacote);
       
        if(estadobotaoincrementa == HIGH){
          tamanhopacote = tamanhopacote+1;
          delay(150);
          
        }
        if(estadobotaodecrementa == HIGH){
          tamanhopacote = tamanhopacote-1;
          delay(150);
          
        }
       }
          
      
      
      if (valortelas==3){ 
        lcd.clear();           
        lcd.setCursor(3,0);
        lcd.print("% CORRECAO");
        lcd.setCursor(3,1);                                   //tela 3 TAMANHO PACOTE//
        lcd.print(porcentagemcorrecao);
       
        if(estadobotaoincrementa == HIGH){
          porcentagemcorrecao = porcentagemcorrecao+1;
          delay(150);
          
        }
        if(estadobotaodecrementa == HIGH){
          porcentagemcorrecao = porcentagemcorrecao-1;
          delay(150);
          
        }

      }
      
  }

moderatore: added code tags == #button above smileys :slight_smile:

@robtillaart: Thanks! Now we can read the code.

Em primeiro lugar não gosto de ver tantas funções delay() no código e nos locais onde estão colocadas, penso que não estão a fazer nada.
Em segundo lugar, não percebi muito bem qual é o problema. Mais concretamente, não percebi se o ecrã pisca num determinado ecrã apenas ou em todos. se for só num, qual é?

Como o código é muito simples, penso que não deve ser um problema muito grave. À primeira vista não consigo perceber qual é, mas se me disser qual é o ecrã, posso dar uma olhadela com mais detalhe para essa zona do código.
Depois de corrigir o problema, temos que "dar um jeito" ao código, porque está a cometer uns "erros de iniciante".

O lcd pisca porque o codigo esta a ser refrescado muito rapido.

Isso e um dos problemas mais comuns do forum...