// Definición de pines
const int LED1 = 2; // LED 1 conectado al pin 2
const int LED2 = 4; // LED 2 conectado al pin 4
const int PULSADOR = 15; // Pulsador conectado al pin 15
// Variables para el control de estados
bool estadoActualPulsador;
bool estadoAnteriorPulsador = HIGH;
bool estadoLED1 = true; // LED1 inicia encendido
bool estadoLED2 = false; // LED2 inicia apagado
// Variables para control de rebote
unsigned long tiempoUltimoCambio = 0;
const long tiempoRebote = 50; // Tiempo de debounce en milisegundos
void setup() {
// Configuración de pines
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(PULSADOR, INPUT_PULLUP); // Utilizamos resistencia pull-up interna
// Estado inicial de los LEDs
digitalWrite(LED1, HIGH); // LED1 inicia encendido
digitalWrite(LED2, LOW); // LED2 inicia apagado
}
void loop() {
// Lectura del estado actual del pulsador
estadoActualPulsador = digitalRead(PULSADOR);
// Verificar cambio en el pulsador con control de rebote
if (estadoActualPulsador != estadoAnteriorPulsador) {
// Si ha pasado suficiente tiempo desde el último cambio
if ((millis() - tiempoUltimoCambio) > tiempoRebote) {
// Si el pulsador está presionado (LOW por el pull-up)
if (estadoActualPulsador == LOW) {
// Invertir estados
estadoLED1 = !estadoLED1;
estadoLED2 = !estadoLED2;
// Actualizar LEDs
digitalWrite(LED1, estadoLED1);
digitalWrite(LED2, estadoLED2);
}
tiempoUltimoCambio = millis();
}
estadoAnteriorPulsador = estadoActualPulsador;
}
}