Hola A todos. Estoy implementando este código para una alarma, pero me encuentro en un punto en que necesito que el led "ledGreen" cambie de estado (encienda con la contraseña correcta y apague cuando por segunda vez la contraseña es correcta) cada que la contraseña sea introducida correctamente.
#include <Password.h> //Incluimos la libreria Password
#include <Keypad.h> //Incluimos la libreria Keypad
Password password = Password("1234"); //Definimos el Password
int dlugosc = 4; //cantidad de caracteres de clave
int buzzer = 10; //Creamos las Variables de salida
int ledRed = 11;
int ledGreen = 12;
int ilosc; //Numero de Clicks
const byte ROWS = 4; // Cuatro Filas
const byte COLS = 4; // Cuatro Columnas
// Definimos el Keymap
char keys[ROWS][COLS] = {
{'1','2','3',},
{'4','5','6',},
{'7','8','9',},
{'*','0','#',}
};
byte rowPins[ROWS] = { 9,8,7,6 };// Conectar los keypads ROW1, ROW2, ROW3 y ROW4 a esos Pines de Arduino.
byte colPins[COLS] = { 5,4,3,2, };// Conectar los keypads COL1, COL2, COL3 y COL4 a esos Pines de Arduino.
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
keypad.addEventListener(keypadEvent);
pinMode(ledRed, OUTPUT);
pinMode(ledGreen, OUTPUT);
pinMode(buzzer, OUTPUT);
digitalWrite(ledRed, LOW);
digitalWrite(ledGreen, LOW);
//Sonido de encendido por primera vez
digitalWrite(ledGreen, HIGH);
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
digitalWrite(ledGreen, LOW);
delay(100);
}
void loop()
{
keypad.getKey();
}
void keypadEvent(KeypadEvent eKey)
{
switch (keypad.getState())
{
case PRESSED:
int i;
for( i = 1; i <= 1; i++ )
{
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(100);
}
switch (eKey)
{
/case '#':break; / case '':break;*/
default:
ilosc=ilosc+1;
password.append(eKey);
}
if(ilosc == dlugosc)
{
delay(250);
checkPassword();
ilosc = 0;
}
}
}
void checkPassword()
{
if (password.evaluate())
{
int i;
for( i = 1; i <= 1; i++ ) // veces que suena en clave Correcta
{
digitalWrite(ledGreen, HIGH);
digitalWrite(buzzer, HIGH);
delay(700);
digitalWrite(buzzer, LOW);
delay(100);
}
ilosc = 0;
password.reset();
digitalWrite(ledRed, LOW);
delay(900);
//digitalWrite(ledGreen, LOW);
digitalWrite(ledRed, LOW);
}
else
{
int i;
for( i = 1; i <= 3; i++ ) //veces que suena en clave Incorrecta
{
digitalWrite(ledRed, HIGH);
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
delay(60);
}
ilosc = 0;
password.reset();
digitalWrite(ledRed, HIGH);
}
}