// Definimos los pines para los LEDs y los pulsadores
const int led1Pin = 23;
const int led2Pin = 22;
const int led3Pin = 21;
const int buttonIncrementPin = 18;
const int buttonDecrementPin = 19;

// Contador inicial
int contador = 20;

void setup() {
  // Inicializamos los pines de los LEDs como salidas
  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  
  // Inicializamos los pines de los pulsadores como entradas
  pinMode(buttonIncrementPin, INPUT);
  pinMode(buttonDecrementPin, INPUT);
  
  // Encender el LED correspondiente al valor inicial del contador
  updateLeds();
}

void loop() {
  // Leer el estado de los botones
  if (digitalRead(buttonIncrementPin) == HIGH) {
    contador++;
    if (contador > 23) {
      contador = 20; // Reiniciar contador al superar 23
    }
    updateLeds();
    delay(200); // Debounce delay
  }

  if (digitalRead(buttonDecrementPin) == HIGH) {
    contador--;
    if (contador < 20) {
      contador = 20; // Reiniciar contador si es menor que 0
    }
    updateLeds();
    delay(200); // Debounce delay
  }

  // Agregamos un pequeño delay para la estabilidad del loop
  delay(10); 
}

void updateLeds() {
  // Apagar todos los LEDs
  digitalWrite(led1Pin, LOW);
  digitalWrite(led2Pin, LOW);
  digitalWrite(led3Pin, LOW);

  // Encender el LED correspondiente al contador
  switch (contador) {
    case 21:
      digitalWrite(led1Pin, HIGH);
      break;
    case 22:
      digitalWrite(led2Pin, HIGH);
      break;
    case 23:
      digitalWrite(led3Pin, HIGH);
      break;
    default:
      break;
  }
}