Buon giorno ragazzi come sempre ho bisogno del vostro aiuto. Il mio progetto oggi riguarda un piccolo allarme fatto con un PIR esattamente questo:Modulo HC-SR501 IR PIR sensore infrarosso movimento (http://cgi.ebay.it/ws/eBayISAPI.dll?ViewItem&item=151062339856&clk_rvr_id=515698005301&mfe=sidebar). Cosi come ho scritto il codice quando mi rileva il movimento per esempio il passaggio della mia mano si accendono i led e suona e manda a video il messaggio "pir attivo". Bene quel che voglio ottenere però è che l'allarme continui a suonare fin quando il movimento non termina. Perchè ORA anhe se continuo a muovermi davanti al pir l'allarme si comporta in questo modo:suona poi dopo mi stampa a video"pir disattivo"(nonostante io stia continuando a muovermi) per poi riprendere a suonare....come risolvo? grazie in anticipo del vostro aiuto!! sono davvero agli albori della programmazione quindi sono davvero un ignorante quindi se mi scrivete direttamente del codice forse riesco ad apprendere meglio e più in fretta almeno mi assicuro una buona spiegazione..
ANCORA GRAZIE!!!!
int StatoSensore = 0;
int BUZZER=9;
int rosso=13;
int rosso1=11;
void setup()
{
//Init Seriale
Serial.begin(9600);
//Config porta 2 come ingresso
pinMode(2, INPUT);
pinMode(9,OUTPUT);
pinMode(rosso,OUTPUT);
pinMode(rosso1,OUTPUT);
}
void loop()
{
//leggo segnale Sensore PIR
StatoSensore = digitalRead(2);
//invia i dati solo se rilevo un movimento
if (StatoSensore == HIGH)
//Invio dati alla seriale
{
Serial.println("PIR ATTIVO");
for (int i=0; i<10; i++)
{
tone(BUZZER, (3100+(50*i)));
delay(10);
}
digitalWrite(rosso,HIGH);
delay(50);
digitalWrite(rosso1,HIGH);
delay(50);
digitalWrite(rosso,LOW);
delay(50);
digitalWrite(rosso1,LOW);
delay(50);
//Lettura ogni mezzo secondo
}
else{Serial.println("PIR DISATTIVO");
delay(10);
noTone(9);
delay(10);}
}