muy buenas expertos! estoy utilizando un display 16x2 y un teclado matricial 4x4. olvidaros de los led del sketch. el problema es que una vez que esta activada la alarma no consigo desactivarla. como vereis soy principiante, he leido todo lo que he podido y aun asi no lo consigo. muchisimas gracias al que lo resuelva y aun mas si me explica cual es el problema para poder seguir avanzando. ( yo creo que el problema esta en el if else) porque no consigo hacer un void loop general cuando meto la contraseña de desactivarla( tengo dos contraseñas para hacermelo mas facil porque no se como hacerlo con la misma ( activar y desactivar alarma).
mil gracias y un saludo!
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Password.h> //Incluimos la libreria Password
#include <Keypad.h> //Incluimos la libreria Keypad
LiquidCrystal_I2C lcd (0x3F, 16, 2);
int LASER = 10;
int FOTORESISTENCIA = A0;
int BUZZER = 11;
int valor=0; // es para la fotorresistencia
int ledVERDE = A1;
int ledROJO = A2;
Password password = Password( "1234" ); //Definimos nuestro Password
Password password1 = Password( "1235" ); //Definimos nuestro Password
const byte ROWS = 4; // Cuatro Filas
const byte COLS = 4; // Cuatro Columnas
// Definimos el Keymap
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
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.
// Creamos el Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup() {
Serial.begin(9600);
keypad.addEventListener(keypadEvent); //Adicionamos un Evento listener para este keypad
lcd.clear();
lcd.backlight();
pinMode(LASER, OUTPUT);
pinMode(BUZZER, OUTPUT);
digitalWrite(LASER, HIGH);
analogWrite(BUZZER, 0);
pinMode(A1, OUTPUT);
pinMode(A2, OUTPUT);
lcd.init();
}
void loop() {
keypad.getKey();
}
//Tenemos cuidado de algunos eventos especiales
void keypadEvent(KeypadEvent eKey){
switch (keypad.getState()){
case PRESSED:
Serial.print("Pressed: ");
Serial.println(eKey);
switch (eKey){
case '*': checkPassword(); break;
case '#': password.reset(); break;
default:
password.append(eKey);
password1.append(eKey);
}
}
}
void checkPassword(){
if (password.evaluate())
{
digitalWrite(ledVERDE, HIGH);
delay(200);
digitalWrite(ledVERDE, LOW);
delay(200);
digitalWrite(ledVERDE, HIGH);
delay(200);
digitalWrite(ledVERDE, LOW);
delay(200);
digitalWrite(ledVERDE, HIGH);
delay(200);
digitalWrite(ledVERDE, LOW);
delay(200);
digitalWrite(ledVERDE, HIGH);
delay(200);
digitalWrite(ledVERDE, LOW);
delay(200);
Serial.println("CORRECTO");
lcd.clear();
lcd.setCursor(5,0);
lcd.print("CODIGO");
lcd.setCursor(4,1);
lcd.print("CORRECTO");
delay(1500);
lcd.clear();
digitalWrite(LASER, HIGH);
analogWrite(BUZZER, 0);
lcd.setCursor(4,0);
lcd.print("!ALARMA");
lcd.setCursor(3,1);
lcd.print("CONECTADA!");
(password1.evaluate());
Serial.println("CORRECTO");
lcd.clear();
lcd.setCursor(5,0);
lcd.print("CODIGO");
lcd.setCursor(4,1);
lcd.print("CORRECTO");
delay(1500);
lcd.clear();
digitalWrite(LASER, LOW);
analogWrite(BUZZER, 0);
lcd.setCursor(4,0);
lcd.print("!ALARMA");
lcd.setCursor(3,1);
lcd.print("DESCONECTADA!");
do{
valor = analogRead(FOTORESISTENCIA);
}while(valor<300);
digitalWrite(LASER, LOW);
analogWrite(BUZZER, 255);
lcd.clear();
lcd.setCursor(2,0);
lcd.print("!DETECCION");
lcd.setCursor(3,1);
lcd.print("INTRUSION!");
}
else
{
digitalWrite(ledROJO, HIGH);
delay(200);
digitalWrite(ledROJO, LOW);
delay(200);
digitalWrite(ledROJO, HIGH);
delay(200);
digitalWrite(ledROJO, LOW);
delay(200);
digitalWrite(ledROJO, HIGH);
delay(200);
digitalWrite(ledROJO, LOW);
delay(200);
digitalWrite(ledROJO, HIGH);
delay(200);
digitalWrite(ledROJO, LOW);
delay(200);
Serial.println("INCORRECTO"); //Adicionamos nuestro Codigo a ejecutar si esto NO trabaja
lcd.clear();
lcd.setCursor(5,0);
lcd.print("CODIGO");
lcd.setCursor(3,1);
lcd.print("INCORRECTO");
delay(1500);
lcd.clear();
lcd.setCursor(3,0);
lcd.print("DETECCION");
lcd.setCursor(3,1);
lcd.print("INTRUSION");
}
}