Ciao a tutti,
E' da qualche settimana che sto dietro ad uno sketch che controlla un sensore pir senza venirne a capo.
Ho guardato sia sul forum che altrove ma esattamente non ho trovato il modo di risolvere il mio problema.
Praticamente come molti, ho un problema con le luci in casa, ovvero "qualcuno" in casa si dimentica sempre di spegnere la luce (nel mio caso quella della cucina).
Ho pensato di mettere un sensore di movimento visto che me ne avanza uno e di collegarci un relè che mi accende la lampada.
L'idea era quella di accendere la lampada in automatico quando entro e che si spenga quando esco.
Arrivo al dunque:
Come funziona adesso:
Passo davanti al sensore e attraverso il relè collegato al pin output mi attiva la lampada
Quando non mi vede più, dopo tot secondi (impostati dal suo timer) il relè si spegne.
PROBLEMA
Mi spegne la lampada allo scadere del suo timer anche se sono davanti al sensore e poi me la riaccende se mi muovo.
Come vorrei che funzionasse
Passo davanti al sensore e la lampada si accende
Se esco si dovrebbe spegnere in automatico dopo tot secondi impostati...
Se rimango in cucina vorrei che ogni volta che capta un movimento il suo timer venga resettato per evitare che si spenga allo scadere del suo conteggio.
Praticamente deve rimanere accesa finchè sto in cucina senza spegnersi
Dove sbaglio?
SCHEDA DEL SENSORE
E' dotato di 2 trimmer per la regolazione della sensibilità/distanza (Sx) e del tempo di ritardo (Tx). Connessiono a 3 pin: Vcc-Out-Gnd.
L'uscita (Out) è a 3,3V nello stato logico alto (persona rilevata), ritorna automaticamente a 0V dopo 2,5 sec. se la persona non si muove più nel suo campo d'azione o non è più presente. Compatibile con i sistemi Arduino.
Lo sketch che uso è questo:
int input_pin = 3;//pin di input del sensore pir
int var;
void setup(){
pinMode(input_pin, INPUT);
pinMode(7, OUTPUT); //pin del sens. output da abilitare se rileva
//Serial.begin(9600);
}
void loop(){
var = digitalRead(input_pin);
if (var)
digitalWrite(7, LOW);//pin del sens. non rilevato
else
digitalWrite(7, HIGH);//pin del sens. abilitato dopo rivel.
//Serial.println(var);
delay(150);
}
grazie