Estoy creando un código de una alarma por varias zonas. Lo tengo montado con una sirena, un zumbador, un par de leds para el estado y por último una serial LCD.
Mi problema viene dado cuando quiero meter 2 sensores PIR, hasta ahora he utilizado la funcion if..else para programar lo que debe de hacer la lcd y los demás componentes respectivamente dependiendo estado del PIR.
Mi duda es, que cuando meto otra funcion if..else con otra variable no funciona y por tanto en la LCD ni el resto de los componentes funcionan como yo tenia programado.
Aquí posteo el código, muchas gracias por su atención.
int sirena=6;
int ledestate=13;
int ledsirena=8;
int zumbador=5;
int sensor=7;
int val = 0;
int p1=0;
int sensor2= 10;
#include <LiquidCrystal.h>
LiquidCrystal lcd(7,6,5,4,3,2);
void setup()
{
pinMode(sensor2, INPUT);
Serial.begin(9600);
Serial.print(0x7C, BYTE);
Serial.print(157, BYTE);
pinMode(ledestate, OUTPUT);
pinMode(ledsirena, OUTPUT);
pinMode(zumbador, OUTPUT);
pinMode(sensor, INPUT);
pinMode(sirena, OUTPUT);
}
void loop()
{
alarmaloop:
val = digitalRead(sensor);
if (val == HIGH) {
digitalWrite(ledsirena, HIGH);
digitalWrite(zumbador, HIGH);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 10 ");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 9");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 8");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 7");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 6");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 5");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 4");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 3");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 2");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Desactive Ahora 1");
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
digitalWrite(sirena, HIGH);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print(" Alarma!!");
delay(30000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
} else {
inicioloop:
digitalWrite(ledestate,HIGH);
Serial.print(0xFE,BYTE);
Serial.print(0x01,BYTE);
delay(1000);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Sistema Listo");
delay(4000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
digitalWrite(ledestate,LOW);
lcd.noDisplay();
delay(1000);
digitalWrite(ledestate,HIGH);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Sistema Listo");
delay(4000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
digitalWrite(ledestate,LOW);
Serial.print(0xFE, BYTE);
Serial.print(128, BYTE);
Serial.print("Seguter S.L");
delay(4000);
Serial.print(0xFE, BYTE);
Serial.print(0x01, BYTE);
digitalWrite(ledestate,LOW);
}{
----------------------------------------------------------------------------
[glow]AQUI ESTA EL PROBLEMA, ESTE SENSOR NO ACTUA SEGUN LO PROGRAMADO
[/glow]
p1= digitalRead(sensor2);
if (p1==HIGH);{
goto alarmaloop;
}else{
goto inicioloop;
}
}
}
[glow]Este es el código con los dos sensores que por cierto, no me compila.
[/glow]