#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define PASSWORD "131175" // Clave de acceso
LiquidCrystal_I2C lcd(0x27, 16, 2);
int contador = 0;
bool ascendente = true;
bool bloqueado = true;
String input = "";
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Sistema Bloqueado");
Serial.println("Ingrese la clave para iniciar:");
}
void loop() {
if (Serial.available()) {
char c = Serial.read();
if (c == '\n' || c == '\r') { // Al presionar ENTER
if (bloqueado) {
if (input == PASSWORD) {
desbloquearSistema();
} else {
Serial.println("Clave incorrecta, intente nuevamente.");
}
input = "";
} else {
procesarComando(input);
input = "";
}
} else {
input += c;
}
}
if (!bloqueado) {
mostrarContador();
delay(1000);
actualizarContador();
}
}
void desbloquearSistema() {
bloqueado = false;
contador = 0;
ascendente = true;
Serial.println("Clave correcta. Contador activado.");
lcd.clear();
}
void mostrarContador() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Contador: ");
lcd.print(contador);
Serial.print("Valor del contador: ");
Serial.println(contador);
}
void actualizarContador() {
if (ascendente) {
contador++;
if (contador > 10) contador = 0;
} else {
contador--;
if (contador < 0) contador = 10;
}
}
void procesarComando(String comando) {
if (comando == "A") {
ascendente = true;
Serial.println("Modo ascendente activado.");
} else if (comando == "B") {
ascendente = false;
Serial.println("Modo descendente activado.");
} else if (comando == "C") {
reiniciarSistema();
} else {
Serial.println("Comando no reconocido.");
}
}
void reiniciarSistema() {
bloqueado = true;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sistema Bloqueado");
Serial.println("Ingrese la clave para reiniciar:");
}