/*
Nombre del Archivo: Codigo_Acceso_LED
Autor: Lázaro Salinas
Fecha: 04/03/2025
Objetivo: Introducir un código con 3 pulsadores y validar con otro. Máximo 3 intentos.
*/
// Pines de los pulsadores y el LED
const int button1 = 2; // Pulsador número 1
const int button2 = 4; // Pulsador número 2
const int button3 = 16; // Pulsador número 3
const int buttonOK = 17; // Pulsador para verificar el código
const int led = 26; // LED indicador
int codigoCorrecto[3] = {1, 2, 3}; // Código correcto
int codigoIngresado[3]; // Código ingresado por el usuario
int indice = 0; // Índice para registrar los números ingresados
int intentos = 0; // Contador de intentos
void setup() {
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
pinMode(buttonOK, INPUT_PULLUP);
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(button1) == LOW) {
registrarNumero(1);
}
if (digitalRead(button2) == LOW) {
registrarNumero(2);
}
if (digitalRead(button3) == LOW) {
registrarNumero(3);
}
if (digitalRead(buttonOK) == LOW && indice == 3) {
verificarCodigo();
}
}
void registrarNumero(int numero) {
if (indice < 3) {
codigoIngresado[indice] = numero;
indice++;
Serial.print("Número ingresado: ");
Serial.println(numero);
delay(300); // Antirrebote
}
}
void verificarCodigo() {
bool correcto = true;
for (int i = 0; i < 3; i++) {
if (codigoIngresado[i] != codigoCorrecto[i]) {
correcto = false;
break;
}
}
if (correcto) {
Serial.println("Código correcto. LED encendido.");
digitalWrite(led, HIGH);
} else {
intentos++;
Serial.print("Código incorrecto. Intentos restantes: ");
Serial.println(3 - intentos);
if (intentos >= 3) {
Serial.println("Se bloqueará el sistema.");
while (true); // Bloquea el sistema
}
}
// Reiniciar el ingreso del código
indice = 0;
delay(1000);
}