#include <Keypad.h>
const byte rowsCount = 4;
const byte columsCount = 4;
char keys[rowsCount][columsCount] = {
{ '1','2','3', 'A' },
{ '4','5','6', 'B' },
{ '7','8','9', 'C' },
{ '#','0','*', 'D' }
};
const byte rowPins[rowsCount] = { 11, 10, 9, 8 };
const byte columnPins[columsCount] = { 7, 6, 5, 4 };
Keypad keypad = Keypad(makeKeymap(keys), rowPins, columnPins, rowsCount, columsCount);
char Contrasenya[4];
char ContrasenyaCorrecta[4]={'1','9','3','9'};
int ok;
int sonaAlarma = 0;
int tempsAcabat = 0;
int fin = 0;
int i;
//Sensor Led
int ledPinRojo = 13;
int sensorPin = 12;
int pirState = LOW;
int val = 0;
unsigned long temp = 0;
unsigned long actualTemp = 0;
unsigned long finTemp = 0;
//altavoz
int altavozPin = 11;
void setup() {
Serial.begin(9600);
pinMode(ledPinRojo, OUTPUT);
pinMode(sensorPin, INPUT);
//altavoz
pinMode(altavozPin, OUTPUT);
}
void loop() {
//sensorled
val = digitalRead(sensorPin);
if (val == HIGH) {
if (pirState == LOW) {
temp = millis();
finTemp = temp + 10000;
pirState = HIGH;
// Iniciamos el programa
Serial.println("¡Movimiento detectado!");
// Hacemos un print
Serial.println("Hemos entrado en modo de pre-alarma.");
Serial.println("Desactive la alarma.");
Serial.println("Introduzca la contraseña.");
}
}
//sensor activat
if (pirState == HIGH) {
char key = keypad.getKey();
if (key){
Serial.print(key);
Contrasenya[i]=key;
i++;
}
if(i==4){
Serial.println("");
for(i=0;i<=3;i++){
if( Contrasenya[i] == ContrasenyaCorrecta[i]) ok++;
}
if(ok==4){
Serial.println("La contraseña es correcta.");
Serial.println("La alarma ha sido apagada.");
fin = 1;
}
else{
sonaAlarma=1;
}
i=0;
ok=0;
}
// temps
actualTemp = millis();
if(actualTemp>finTemp && fin==0){
tempsAcabat=1;
fin = 1;
}
}
if(tempsAcabat==1){
Serial.println("Tiempo acabado, llamando a la policia.");
tone(altavozPin, 500, 4000);
digitalWrite(ledPinRojo, HIGH);
delay(1000);
digitalWrite(ledPinRojo, LOW);
sonaAlarma = 0;
tempsAcabat = 0;
}
//alarma
if(sonaAlarma==1){
Serial.println("Acceso denegado, se esta llamando a la policia.");
tone(altavozPin, 500, 4000);
digitalWrite(ledPinRojo, HIGH);
delay(1000);
digitalWrite(ledPinRojo, LOW);
sonaAlarma=0;
}
}