Hola comunidad, se me presento un problema a realizar una alarma domiciliaria, resulta que el codigo de la contraseña funciona perfectamente,pero lo que necesito que haga es que cuando se arma la alarma empiece a testear ( solo en ese momento) los sensores si son activados la salida del pin 18 quede activa hasta que se desactive la alarma , pero no logro que testee nada solo queda el lcd con la leyenda "Vigilando", nose lo que es que estoy haciendo mal, aclaro estoy muy verde con el arduino y estoy aprendiendo.
Pd: no pretendo que me hagan el codigo solo que me digan como hacerlo...
Desde ya muchas gracias
Aca el codigo:
#include <Password.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
Password password = Password ("1234"); //Esta es la contraseña de armado y desarmado
LiquidCrystal lcd(14, 13, 12, 11, 10, 9);
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {5, 4, 3, 2};
byte colPins[COLS] = {8, 7, 6};
// Creamos el KeyPad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
int estadoledarmado = 0; //Especificamos el estado inicial del led es 0(apagado)
int estadoleddesarmado = 1; //Especificamos el estado inicial del led es 1(encendido)
bool AlarmaArmada=false;
void setup()
{
digitalWrite(19, LOW);
pinMode(19,INPUT);
pinMode(18,OUTPUT);
pinMode(15, OUTPUT); //Buzzer
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Iniciando");
lcd.setCursor(0,1);
lcd.print("alarma");
delay(500);
lcd.setCursor(6,1);
lcd.print(".");
delay(500);
lcd.setCursor(7,1);
lcd.print(".");
delay(500);
lcd.setCursor(8,1);
lcd.print(".");
delay(500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Chequeando");
lcd.setCursor(0,1);
lcd.print("alarma");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarma chequeda");
lcd.setCursor(0,1);
lcd.print("con exito");
delay(2000);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("BIENVENIDO");
delay(2000);
lcd.clear();
keypad.addEventListener(keypadEvent);
}
void loop()
{
lcd.setCursor(0, 1);
keypad.getKey();
}
//check the keypad events
void keypadEvent(KeypadEvent keyPress)
{
switch (keypad.getState())
{
case PRESSED:
lcd.clear();
lcd.setCursor(0,1);
lcd.write("Ingresando...");
switch (keyPress)
{
case '#': //Presionando # se desarma la alarma
checkPassword();
break;
case '*': //Presionado * se arma la alarma
checkPassword2();
break;
break;
default:
password.append(keyPress);
}
}
}
//Chequea la contraseña cuando se ingresa el #
void checkPassword(){
if (password.evaluate())
{
if (!AlarmaArmada)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarma");
lcd.setCursor(0,1);
lcd.print("ya desactiva");
delay (3000);
lcd.clear();
lcd.setCursor(0,0);
}
else
{
AlarmaArmada=false;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Password");
lcd.setCursor(0,1);
lcd.print("correcto");
for (int i=0; i <= 12; i++)
{
delay(100);
digitalWrite(15, HIGH);
delay(100);
digitalWrite(15, LOW);
}
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarma");
lcd.setCursor(0,1);
lcd.print("desactivada");
delay (2000);
lcd.clear();
}
}
else
{
lcd.setCursor(0,0);
lcd.print("Password");
lcd.setCursor(0,1);
lcd.print("incorrecto");
digitalWrite(15, HIGH);
delay(3000);
digitalWrite(15, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reingrese Pass");
}
password.reset();
}
//Chequea la contraseña cuando se ingresa el *
void checkPassword2(){
if (password.evaluate())
{
if (AlarmaArmada)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarma");
lcd.setCursor(0,1);
lcd.print("Ya armada");
delay (2000);
lcd.clear();
delay(4000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Vigilando...");
}
else
{
AlarmaArmada=true;
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Password");
lcd.setCursor(0,1);
lcd.print("correcto");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarma");
lcd.setCursor(0,1);
lcd.print("activandose");
delay (2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("10"); digitalWrite(15, HIGH);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("9"); digitalWrite(15, LOW);
delay(1000);
lcd.setCursor(0,0);
lcd.print("8"); digitalWrite(15, HIGH);
delay(1000);
lcd.setCursor(0,0);
lcd.print("7"); digitalWrite(15, LOW);
delay(1000);
lcd.setCursor(0,0);
lcd.print("6"); digitalWrite(15, HIGH);
delay(1000);
lcd.setCursor(0,0);
lcd.print("5"); digitalWrite(15, LOW);
delay(1000);
lcd.setCursor(0,0);
lcd.print("4"); digitalWrite(15, HIGH);
delay(1000);
lcd.setCursor(0,0);
lcd.print("3"); digitalWrite(15, LOW);
delay(1000);
lcd.setCursor(0,0);
lcd.print("2"); digitalWrite(15, HIGH);
delay(1000);
lcd.setCursor(0,0);
lcd.print("1"); digitalWrite(15, LOW);
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Alarma");
lcd.setCursor(0,1);
lcd.print("activada");
digitalWrite(15, HIGH);
delay(4000);
digitalWrite(15, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Vigilando...");
{
Zona1();
}
}
}
else
{
lcd.setCursor(0,0);
lcd.print("Password");
lcd.setCursor(0,1);
lcd.print("incorrecto");
digitalWrite(18, HIGH);
delay(3000);
digitalWrite(15, LOW);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Reingrese pass");
}
password.reset();
}
void Zona1(){
if(digitalRead(19) == HIGH){
digitalWrite(18, HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("zona activada");
delay(50);
}
}