Display de 7 segmentos 4 digitos parpadea y no se queda estable

Ya hace el programa lo que quiero, el problema es que parpadea mucho, en la parte final tengo un delay donde hace que vaya mas lento o mas rapido, si se lo quito parpadea como loco, alguien sabe como lo puedo solucionar? Este es mi codigo

escribe o pega el códiint displayD = 5;
int displayU = 4;

int botonAum = 2;
int botonDis = 3;
int EdoBotonAum;
int EdoBotonDis;
byte x ; 

int Seg[] = {13, 12, 11, 10, 9, 8, 7};
int S = 0;

int contadorU = 0;
int contadorD = 0;


void setup() {
  Serial.begin(9600);
  for (S=0; S<7; S++)
  {
    pinMode (Seg [S], OUTPUT);
    digitalWrite( Seg[S], LOW);
  }

  pinMode (botonAum, INPUT);
  pinMode (botonDis, INPUT);

  pinMode (displayD, OUTPUT);
  pinMode (displayU, OUTPUT);
  
  digitalWrite(displayD,HIGH);
  digitalWrite(displayU,HIGH);

}


void display(int a, int b, int c, int d, int e, int f, int g)
    {
     digitalWrite(Seg[0], a); 
     digitalWrite(Seg[1], b);
     digitalWrite(Seg[2], c);
     digitalWrite(Seg[3], d);
     digitalWrite(Seg[4], e);
     digitalWrite(Seg[5], f);
     digitalWrite(Seg[6], g);
    }
    
void loop() {  

      Serial.print(contadorD);
      Serial.println(contadorU);
      
  EdoBotonAum = digitalRead(botonAum);
  delay(20);

  if (EdoBotonAum == LOW)
  {
    contadorU = contadorU+1;
    if (contadorU > 9)
      {
        contadorU = 0;
        contadorD = contadorD+1;
        if (contadorD > 9)
        {
         contadorD = 0;  
        }
      }
  }

  EdoBotonDis = digitalRead(botonDis);
  delay(20);
  
  if (EdoBotonDis == LOW)
  {
    contadorU = contadorU-1;
    if (contadorU < 0)
      {
        contadorU = 9;
        contadorD = contadorD-1;
        if (contadorD < 0)
        {
         contadorD = 9;  
        }
      }
  }
  
 if (x ==1)
 {
 digitalWrite(displayU,1);
 digitalWrite(displayD,0);
 
switch (contadorU)
  {

    case 0:
      display (0, 0, 0, 0, 0, 0, 1); //Muestra el numero 0
      break;

    case 1:
      display (1, 0, 0, 1, 1, 1, 1); //Muestra el numero 1
      break;

    case 2:
      display (0, 0, 1, 0, 0, 1, 0); //Muestra el numero 2
      break;

    case 3:
      display(0, 0, 0, 0, 1, 1, 0); //Muestra el numero 3
      break;

    case 4:
      display (1, 0, 0, 1, 1, 0, 0); //Muestra el numero 4 
      break;

    case 5:
      display (0, 1, 0, 0, 1, 0, 0); //Muestra el numero 5 
      break;

    case 6:
      display(0, 1, 0, 0, 0, 0, 0); //Muestra el numero 6
      break;

    case 7:
      display (0, 0, 0, 1, 1, 1, 1); //Muestra el numero 7
      break;

    case 8:
     display (0, 0, 0, 0, 0, 0, 0); //Muestra el numero 8
      break;

    case 9:
     display (0, 0, 0, 1, 1, 0, 0); //Muestra el numero 9 
      break;
     }
 }
 else
 {
    digitalWrite(displayU,0);
    digitalWrite(displayD,1);
     switch (contadorD)
  {

    case 0:
      display (0, 0, 0, 0, 0, 0, 1); //Muestra el numero 0
      break;

    case 1:
      display (1, 0, 0, 1, 1, 1, 1); //Muestra el numero 1
      break;

    case 2:
      display (0, 0, 1, 0, 0, 1, 0); //Muestra el numero 2
      break;

    case 3:
      display(0, 0, 0, 0, 1, 1, 0); //Muestra el numero 3
      break;

    case 4:
      display (1, 0, 0, 1, 1, 0, 0); //Muestra el numero 4 
      break;

    case 5:
      display (0, 1, 0, 0, 1, 0, 0); //Muestra el numero 5 
      break;

    case 6:
      display(0, 1, 0, 0, 0, 0, 0); //Muestra el numero 6
      break;

    case 7:
      display (0, 0, 0, 1, 1, 1, 1); //Muestra el numero 7
      break;

    case 8:
     display (0, 0, 0, 0, 0, 0, 0); //Muestra el numero 8
      break;

    case 9:
     display (0, 0, 0, 1, 1, 0, 0); //Muestra el numero 9 
      break;
     }
 }
     x++;
     if (x >= 2)
     {
      x = 0;
     }
     delay(100);
}
     

  go aquí

quita los delay()

1 Like

Ya los quite, el problema es que ahora si presiono un boton para disminuir o aumentar se sube mucho la cifra o baja mucho, como podre hacer ahora para que al presionarlo solo suba uno o baje uno cada pulsacion?

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.