Hola. Mi proyecto funciona usando un arduino uno, un teclado matricial, leds y buzzers como salidas y una entrada. (La cual no funciona y es mi problema)
La alarma se desactiva presionando el código establecido, haciendo que ledVerde pase a estar encendido y ledRojo pase a estar apagado.
La alarma se activa presionando "*" y da un tiempo 'X' antes de encender y en este estado ledVerde pasa a apagarse y ledRojo a encender.
Cuando la alarma está encendida, tenemos que si se introduce el código erróneo se encenderá un buzzer, y debería ser que si una señal de entrada, (llamada "ir" en el código) se llega a apagar la alarma, debería de encenderse de igual manera, con su respectivo retraso.
No logro hacer que me encienda con la señal de ir, simplemente es como si no la detectara.
Gracias.
La alarma se desactiva presionando el código establecido, haciendo que ledVerde pase a estar encendido y ledRojo pase a estar apagado.
La alarma se activa presionando "*" y da un tiempo 'X' antes de encender y en este estado ledVerde pasa a apagarse y ledRojo a encender.
Cuando la alarma está encendida, tenemos que si se introduce el código erróneo se encenderá un buzzer, y debería ser que si una señal de entrada, (llamada "ir" en el código) se llega a apagar la alarma, debería de encenderse de igual manera, con su respectivo retraso.
No logro hacer que me encienda con la señal de ir, simplemente es como si no la detectara.
Gracias.
PHP:
include <Keypad.h>
const byte Filas = 4; //Cuatro filas
const byte Cols = 4; //Cuatro columnas
byte Pins_Filas[] = {9,8,7,6};//Pines Arduino a las filasbyte
byte Pins_Cols[] = {5,4,3,2}; // Pines Arduino a las columnas.
//no utilizar los pines 1 y 0 para no interferir en Rx y Tx
char Teclas [ Filas ][ Cols ] =
{
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
char codigoSecreto[4] = {'1','2','3','4'}; // Aqui va el codigo secreto
// Para cambiar el tamaño de la clave, solo hay que cambiar el tamaño del array
int posicion=0; // necesaria para la clave
int cursor=5; // posicion inicial de la clave en el LCD
int clave=0; // para el LCD
int luz=0; // para el LCD
int tiempo=0; // para el LCD
int ledVerde=11; // pin para el LED verde
int ledRojo=12; // pin para el LED rojo
int buzzer=10; // pin altavoz
int ir = A0;
int buzz=1;
Keypad Teclado1 = Keypad(makeKeymap(Teclas), Pins_Filas, Pins_Cols, Filas, Cols);
void setup()
{
Serial.begin(9600) ;
pinMode (ledVerde,OUTPUT);
pinMode (ledRojo, OUTPUT);
pinMode (buzzer, OUTPUT);
pinMode(ir, INPUT);
pinMode(buzz,OUTPUT);
digitalWrite(ledRojo,HIGH); // encendemos el LED rojo
digitalWrite(ledVerde, LOW); // apagamos el verde
}
void loop()
{
//Serial.print(buzzer);
//
char pulsacion = Teclado1.getKey() ; // leemos pulsacion
if (pulsacion != 0) //Si el valor es 0 es que no se ha pulsado ninguna tecla
{ // descartamos almohadilla y asterisco
if (pulsacion != '#' && pulsacion != '*' && clave==0)
{
cursor++; // incrementamos el cursor
tone(buzzer,350); // tono de pulsacion
delay(200);
noTone(buzzer);
//--- Condicionales para comprobar la clave introducida -----------
// comparamos entrada con cada uno de los digitos, uno a uno
if (pulsacion == codigoSecreto[posicion])
posicion ++; // aumentamos posicion si es correcto el digito
if (posicion == 4)
{ // comprobamos que se han introducido los 4 correctamente
digitalWrite (13,HIGH); // encendemos LED
delay(200); // tono de clave correcta
tone(buzzer,500);
delay(100);
noTone(buzzer);
tone(buzzer,600);
delay(100);
noTone(buzzer);
tone(buzzer,800);
delay(100);
noTone(buzzer);
clave=1; // indicamos que se ha introducido la clave
digitalWrite(ledRojo,LOW); // apagamos el LED rojo
digitalWrite(ledVerde, HIGH); // encendemos el verde
}
//--- En el caso de que este incompleta o no hayamos acertado ----------
if(cursor>8) // comprobamos que no pase de la cuarta posicion
{ cursor=5; // lo volvemos a colocar al inicio
posicion=0; // borramos clave introducida
alarma:
delay(5000);
if(digitalRead(ir == LOW) && clave == 0)
//Puerta abierta
{ delay (5000) ;
//digitalWrite(buzzer,HIGH);
if(clave==0) // comprobamos que no hemos acertado
{ digitalWrite(buzzer,HIGH); // para generar
}
}
}
}
}
//--- Condicionales para resetear clave introducida -------------
if (pulsacion == '*')
{ // asterisco para resetear el contador
posicion = 0;
cursor = 5;
clave=0;
posicion=0;
delay(5000);
digitalWrite(ledRojo,HIGH); // encendemos el LED rojo
digitalWrite(ledVerde, LOW); // apagamos el verde
}
}
Última edición por un moderador: