/* CODIGO 1, PROBADO Y FUNCIONANDO */
#include <Arduino.h>
#define BOTON_PIN 14
#define LED_PIN_2 2
#define LED_PIN_15 15
#define LED_PIN_16 16
#define LED_PIN_26 26
#define INTERVALO 500
bool secuenciaActiva = false;
bool ultimoEstadoBoton = HIGH;
void apagarTodos() {
digitalWrite(LED_PIN_2, LOW);
digitalWrite(LED_PIN_15, LOW);
digitalWrite(LED_PIN_16, LOW);
digitalWrite(LED_PIN_26, LOW);
}
void encenderSolo(int led) {
apagarTodos();
digitalWrite(led, HIGH);
}
void secuenciaIda() {
encenderSolo(LED_PIN_2);
delay(INTERVALO);
encenderSolo(LED_PIN_15);
delay(INTERVALO);
encenderSolo(LED_PIN_16);
delay(INTERVALO);
encenderSolo(LED_PIN_26);
delay(INTERVALO);
}
void secuenciaVuelta() {
encenderSolo(LED_PIN_26);
delay(INTERVALO);
encenderSolo(LED_PIN_16);
delay(INTERVALO);
encenderSolo(LED_PIN_15);
delay(INTERVALO);
encenderSolo(LED_PIN_2);
delay(INTERVALO);
}
void parpadeoTodos(int veces, int tiempo) {
for (int i = 0; i < veces; i++) {
digitalWrite(LED_PIN_2, HIGH);
digitalWrite(LED_PIN_15, HIGH);
digitalWrite(LED_PIN_16, HIGH);
digitalWrite(LED_PIN_26, HIGH);
delay(tiempo);
apagarTodos();
delay(tiempo);
}
}
void setup() {
pinMode(BOTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN_2, OUTPUT);
pinMode(LED_PIN_15, OUTPUT);
pinMode(LED_PIN_16, OUTPUT);
pinMode(LED_PIN_26, OUTPUT);
apagarTodos();
}
void loop() {
bool estadoBoton = digitalRead(BOTON_PIN);
// Detecta flanco de bajada: botón presionado
if (estadoBoton == LOW && ultimoEstadoBoton == HIGH) {
secuenciaActiva = !secuenciaActiva;
delay(50); // anti-rebote simple
}
ultimoEstadoBoton = estadoBoton;
if (secuenciaActiva) {
// Primera secuencia: ida 3 veces
for (int i = 0; i < 3; i++) {
secuenciaIda();
}
// Segunda secuencia: vuelta 3 veces
for (int i = 0; i < 3; i++) {
secuenciaVuelta();
}
// Parpadeo final de todos los LEDs
parpadeoTodos(3, 300);
} else {
apagarTodos();
}
}