Ayuda con contador ascendente y descendente con display 7 segmentos y botones

Que tal amigos, soy algo nuevo en eso del arduino y quisiera saber si podrian ayudarme....

Tengo este código el cual por medio de 2 botones incrementa o decrementa la cuenta en el display pero quisiera hacer una modificación para que hiciera lo siguiente:

1.- Comienza el contador en 0.
2.- Al presionar el botón1 incremente la cuenta.
3.- Presionar el botón2.
4.- Al presionar el boton1 decremente la cuenta.
5.- Presionar el botón2.
6.- Al presionar el botón1 vuelva a incrementar la cuenta.

Y asi sucesivamente, en pocas palabras deseo hacer que el segundo botón sea el encargado de elegir si el botón1 incrementa o decrementa la cuenta en el display 7 segmentos.

Agradeceria si pudieran ayudarme..

Gracias.

DISPLAY_NUMERACION_ASCENDENTEYDESCENDENTE_0_9_CONBOTONES.ino (5.91 KB)

Que tal amigos, soy algo nuevo en eso del arduino y quisiera saber si podrian ayudarme....

Tengo este código el cual por medio de 2 botones incrementa o decrementa la cuenta en el display pero quisiera hacer una modificación para que hiciera lo siguiente:

1.- Comienza el contador en 0.
2.- Al presionar el botón1 incremente la cuenta.
3.- Presionar el botón2.
4.- Al presionar el boton1 decremente la cuenta.
5.- Presionar el botón2.
6.- Al presionar el botón1 vuelva a incrementar la cuenta.

Y asi sucesivamente, en pocas palabras deseo hacer que el segundo botón sea el encargado de elegir si el botón1 incrementa o decrementa la cuenta en el display 7 segmentos.

Agradeceria si pudieran ayudarme..

Gracias.

/*

Contador númerico ascendente y descendente con 2 botones 
uno para incrementar y el otro para decrementar

*/


const int a = 2;
const int b = 3;
const int c = 4;
const int d = 5;
const int e = 6;
const int f = 7;
const int g = 8;
const int botonIncremento = 9;          // boton de incremento conectado al pin 10
const int botonDecremento = 10;         // boton de decremento conectado al pin 9

const int tiempoAntirebote = 10;
int cuenta = 0;                         // lleva la cuenta de las veces que presionamos el botón
int estadoBotonIncremento;
int estadoBotonAnteriorIncremento;
int estadoBotonDecremento;
int estadoBotonAnteriorDecremento;

//Función antirebote botón inicio

boolean antirebote(int pin) {
  int contador = 0;
  boolean estado;                       // guarda el estado del botón
  boolean estadoAnterior;               // guarda el último estado del botón
  
  do {
    estado = digitalRead(pin);          // Leer el estado del botón y guardarla en la variable "estado"
    if(estado != estadoAnterior) {      // comparamos el estado actual del botón con el anterior
    contador = 0;                       // si es diferente contador va a valer 0 y reiciamos el contador, "!=" significa diferente a
    estadoAnterior = estado;            // guardamos el valor de "estado" que leimos en "estadoAnterior"
    }
    else {
      contador = contador + 1;          // en caso de que sea igual "contador" sumará 1
    }
    delay(1);
  } while(contador < tiempoAntirebote);
  
  return estado;
}

// Función antirebote botón fin

void actualizarNumero() {
  switch(cuenta) {
    case 0:
      digitalWrite(a, HIGH);                // encendido número 0
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, HIGH);
      digitalWrite(g, LOW);
      break;
     case 1:
      digitalWrite(a, LOW);                 // encendido número 1
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
     case 2:
      digitalWrite(a, HIGH);                // encendido número 2
      digitalWrite(b, HIGH);
      digitalWrite(c, LOW);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, LOW);
      digitalWrite(g, HIGH);
      break;
     case 3:
      digitalWrite(a, HIGH);                // encendido número 3
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, HIGH);
      break;
     case 4:
      digitalWrite(a, LOW);                // encendido número 4
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      break;
     case 5:
      digitalWrite(a, HIGH);                // encendido número 5
      digitalWrite(b, LOW);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, LOW);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      break;
     case 6:
      digitalWrite(a, HIGH);                // encendido número 6
      digitalWrite(b, LOW);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      break;
     case 7:
      digitalWrite(a, HIGH);                // encendido número 7
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
     case 8:
      digitalWrite(a, HIGH);                // encendido número 8
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, HIGH);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      break;
     case 9:
      digitalWrite(a, HIGH);                // encendido número 9
      digitalWrite(b, HIGH);
      digitalWrite(c, HIGH);
      digitalWrite(d, HIGH);
      digitalWrite(e, LOW);
      digitalWrite(f, HIGH);
      digitalWrite(g, HIGH);
      break;
  }
}


void setup() {
  pinMode(a, OUTPUT);                   // declaramos los LEDS como salidas
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  pinMode(botonIncremento, INPUT);      // declaramos los botones como entradas
  pinMode(botonDecremento, INPUT);
 }

void loop() {
  
  // codigo botón incremento inicio
  
  estadoBotonIncremento = digitalRead(botonIncremento);          // leemos el estado del botón
  if(estadoBotonIncremento != estadoBotonAnteriorIncremento) {   // si hay cambio con respecto al estado anterior
    if(antirebote(botonIncremento)) {                            // checamos si está presionado y si lo está,
    cuenta++;                                                    // aumentamos la cuenta en 1
    if(cuenta > 9) {
      cuenta = 9;
    }
   }
  }
  estadoBotonAnteriorIncremento = estadoBotonIncremento;         // guardamos el estado del botón 
  
  // codigo botón incremento fin
  
  // codigo botón decremento inicio
  
  estadoBotonDecremento = digitalRead(botonDecremento);          // leemos el estado del botón
  if(estadoBotonDecremento != estadoBotonAnteriorDecremento) {   // si hay cambio con respecto al estado anterior
    if(antirebote(botonDecremento)) {                            // checamos si está presionado y si lo está,
    cuenta--;                                                    // disminuimos la cuenta en 1
    if(cuenta < 0) {
      cuenta = 0;
    }
   }
  }
  estadoBotonAnteriorDecremento = estadoBotonDecremento;         // guardamos el estado del botón 
  
  actualizarNumero();                                            // desplegamos la cuenta en el display
  
}
  
  // codigo botón decremento fin