#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// LCD (si no funciona cambia 0x27 por 0x3F)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// BOTONES
int btn1 = 14;
int btn2 = 27;
int btn3 = 26;
// 🔥 10 LEDS
int leds[] = {13, 12, 14, 27, 26, 25, 33, 32, 18, 19};
int numLeds = 10;
int secuencia = 0;
void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistema listo");
delay(1200);
lcd.clear();
pinMode(btn1, INPUT_PULLUP);
pinMode(btn2, INPUT_PULLUP);
pinMode(btn3, INPUT_PULLUP);
for (int i = 0; i < numLeds; i++) {
pinMode(leds[i], OUTPUT);
}
}
void loop() {
// BOTONES
if (digitalRead(btn1) == LOW) {
secuencia = 1;
delay(250);
}
if (digitalRead(btn2) == LOW) {
secuencia = 2;
delay(250);
}
if (digitalRead(btn3) == LOW) {
secuencia = 3;
delay(250);
}
// LCD
lcd.setCursor(0, 0);
lcd.print("Secuencia: ");
lcd.print(secuencia);
lcd.print(" ");
ejecutarSecuencia(secuencia);
delay(100);
}
void ejecutarSecuencia(int s) {
// APAGAR TODO
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], LOW);
}
// 🔁 SECUENCIA 1: CADENA
if (s == 1) {
lcd.setCursor(0, 1);
lcd.print("Cadena ");
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH);
delay(120);
digitalWrite(leds[i], LOW);
}
}
// ⚡ SECUENCIA 2: INTERMITENTE
else if (s == 2) {
lcd.setCursor(0, 1);
lcd.print("Intermitente ");
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH);
}
delay(250);
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], LOW);
}
}
// 👉 SECUENCIA 3: UNO X UNO
else if (s == 3) {
lcd.setCursor(0, 1);
lcd.print("Uno x uno ");
for (int i = 0; i < numLeds; i++) {
digitalWrite(leds[i], HIGH);
delay(100);
}
}
}