salve, volevo costruirmi un piccolo allarmino basato su sensori pir che inviano un segnale sui 433mhz, per ora il sistema è costituito da un sensore che si interfaccia ad arduino tramite un modulo ricevitore 433mhz, un buzzer che suona quando il sensore invia un codice e un pulsante.
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
#define codice_pir 1497466 // codice sensore pir 433mhz
void setup()
{
pinMode(11,OUTPUT);
pinMode(12, INPUT);
Serial.begin(9600);
mySwitch.enableReceive(0); //riceve sul pin 2 modulo 433mhz
}
void loop()
{
if (mySwitch.available())
{
unsigned long lettura = mySwitch.getReceivedValue();
if (mySwitch.getReceivedValue())
{
int stato= digitalRead(12);
while (stato==HIGH && lettura==codice_pir)
allarme ();
}
}
mySwitch.resetAvailable();
}
void allarme ()
{
tone(11,10);
delay(150);
noTone(11);
delay(150);
}
lo scopo del mio codice sarebbe (per ora) quello di far suonare il buzzer non appena rileva il movimento e poter disattivare l'allarme se premo il pulsante.
per fare cio ho utilizzato la seguente riga di codice:
while (stato==HIGH && lettura==codice_pir)
ma non funziona, sembra che non cambia lo stato del pulsante quando lo presso, e di conseguenza l'allarme continua a suonare, sapete dirmi il perché?