CUARTA ENTREGA DEL PROYECTO
Hola de nuevo queridos seguidores aquí les traigo la cuarta entrega de mi proyecto.
Como anterior mente les había mencionado el código de mi alarma no estaba del todo bien pues no me permitía parar el sonido del speaker al momento de ingresar la contraseña para desactivarla, otro de los problemas que se me presentaban era con el speaker ya que no podía hacer que el tono de la alarma se prolongo por un tiempo indefinido. Pues si se activaba la alarma el speaker emitía el sonido de alerta y con el teclado al ingresar la cable debía parar.
RESOLUCIÓN DE LOS ERRORES PRESENTADOS
- Para solucionar el error del speaker lo que modifique en el código aumente noTone(parlante); el cual me ayudo para que al momento de presionar la contraseña este parara el sonido
- Y el error del teclado era por el monitor serial que yo llamaba, así que todo el código que era referente al monitor serial elimine porque no me permitía el buen funcionamiento del teclado .
#include <Keypad.h>
#include <Password.h>
/////////////////////////////////////////
const byte ROWS=4; //cuatro filas
const byte COLS=4; //cuatro columnas
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {7,6,5,4};
byte colPins[COLS] = {3,2,1,0};
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins, ROWS, COLS);
/////////////////////////////////////////
Password password=Password("1995");
/////////////////////////////////////////
const int magneticoPin = 10; // Variable para el sensor magnético
const int pir= 8; //Variable para el sensor de movimiento
const int parlante = 12; // Variable para del parlante
int activada=0;
int buttonState = 0; //variable de estado del sensor magnético inicializada en 0
int tiempoCalibracion=10; // Variable inicializada en cero para calibrar el sensor pir
int buttonState2 = 0;// variable de estado del sensor pir inicializada en (0) estado inactivo
void setup() {// Declaramos que el pin sera salida
pinMode(parlante, OUTPUT); // Iniciar el parlante en output
keypad.addEventListener(keypadEvent);
pinMode(magneticoPin, INPUT); // Iniciar el buttonPin en input
pinMode(pir,INPUT);
for(int i = 0; i < tiempoCalibracion; i++){
Serial.print(".");
delay(1000);
}
delay(50);
}
void loop(){
buttonState = digitalRead(magneticoPin); // Almacena el valor de buttonPin
buttonState2 = digitalRead( pir);//Almacena el estado del sensor de movimiento
if (buttonState == HIGH || buttonState2 == HIGH){ // Si buttonState == HIGH:
digitalWrite(parlante,HIGH); //emite sonido
tone(parlante,2000);
delay(1000); //espera medio segundo
}
else{
keypad.getKey();
}
}
void keypadEvent(KeypadEvent eKey){
switch(keypad.getState()){
case PRESSED:
switch(eKey){
case '*': checkPassword(); delay(2); break;
case '#': password.reset(); delay(2); break;
default: password.append(eKey); delay(2);
}
}
}
//FUNCIÓN DE COMPROBACIÓN DE LA CONTRASEÑA
void checkPassword(){
if(password.evaluate()){
password.reset();
activada=0;
noTone(parlante);// deja de generar la onda cuadrada emitida por tone();
digitalWrite(pir, LOW);
digitalWrite(parlante, LOW);
}
else{
password.reset();
delay(10);
}
}
Con esto puedo decir que mi programa esta funcionando correctamente. Hubieron muchas dificultades ya que tuve que modificar el código una y otra vez hasta llegar a este buen resultado, pero como ven hemos culminado
#include <Password.h>
/////////////////////////////////////////
const byte ROWS=4; //cuatro filas
const byte COLS=4; //cuatro columnas
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {7,6,5,4};
byte colPins[COLS] = {3,2,1,0};
Keypad keypad = Keypad(makeKeymap(keys),rowPins,colPins, ROWS, COLS);
/////////////////////////////////////////
Password password=Password("1995");
/////////////////////////////////////////
const int magneticoPin = 10; // Variable para el sensor magnético
const int pir= 8; //Variable para el sensor de movimiento
const int parlante = 12; // Variable para del parlante
int activada=0;
int buttonState = 0; //variable de estado del sensor magnético inicializada en 0
int tiempoCalibracion=10; // Variable inicializada en cero para calibrar el sensor pir
int buttonState2 = 0;// variable de estado del sensor pir inicializada en (0) estado inactivo
void setup() {// Declaramos que el pin sera salida
pinMode(parlante, OUTPUT); // Iniciar el parlante en output
keypad.addEventListener(keypadEvent);
pinMode(magneticoPin, INPUT); // Iniciar el buttonPin en input
pinMode(pir,INPUT);
for(int i = 0; i < tiempoCalibracion; i++){
Serial.print(".");
delay(1000);
}
delay(50);
}
void loop(){
buttonState = digitalRead(magneticoPin); // Almacena el valor de buttonPin
buttonState2 = digitalRead( pir);//Almacena el estado del sensor de movimiento
if (buttonState == HIGH || buttonState2 == HIGH){ // Si buttonState == HIGH:
digitalWrite(parlante,HIGH); //emite sonido
tone(parlante,2000);
delay(1000); //espera medio segundo
}
else{
keypad.getKey();
}
}
void keypadEvent(KeypadEvent eKey){
switch(keypad.getState()){
case PRESSED:
switch(eKey){
case '*': checkPassword(); delay(2); break;
case '#': password.reset(); delay(2); break;
default: password.append(eKey); delay(2);
}
}
}
//FUNCIÓN DE COMPROBACIÓN DE LA CONTRASEÑA
void checkPassword(){
if(password.evaluate()){
password.reset();
activada=0;
noTone(parlante);// deja de generar la onda cuadrada emitida por tone();
digitalWrite(pir, LOW);
digitalWrite(parlante, LOW);
}
else{
password.reset();
delay(10);
}
}
Con esto puedo decir que mi programa esta funcionando correctamente. Hubieron muchas dificultades ya que tuve que modificar el código una y otra vez hasta llegar a este buen resultado, pero como ven hemos culminado








0 comentarios:
Publicar un comentario