Irsend. Trasmissione ir

Salve Con un sensore p.i.r. dovrei far inviare un codice infrarosso a una tv. L'invio deve essere singolo ogni volta che il p.i.r. Percepisca la presenza quindi all stato "HIGH" con quale funzione lo faccio con una "if"? Grazie

Ciao ,puoi usare tranquillamente una if ovvero se il pir è high invia il codice infrarosso :)

Ho fatto in quel modo però una volta attivato il pir il codice viene mandato in continuazione.

Se posti il codice riusciamo ad aiutarti :)

Ti manda il codice all'infinito perchè quando il pir ti da lo stato di high la if è sempre vera e di conseguenza ti manda il codice ripetutamente,dovresti usare una variabile che riporta lo stato del pir e prima di uscire dalla if la devi azzerare e comunque

Se posti il codice riusciamo ad aiutarti

concordo con sciorty, è più semplice per tutti :)

Niente codice, mi dispiace. :wink:

Devi usare una variabile di stato.
Quando leggi H il segnale del PIR e la variabile di stato é L mandi il codice IR e metti la variabile di stato a H.
Quando leggi L il segnale del PIR e la variabile di stato é H metti la variabile di stato a L.
Cosí ti manda il codice IR solo 1 volta quando il PRi vede una persona.

Ciao Uwe

Scusate il ritardo.
Il codice ê questo

#Include <IRemote.h>
#include <IRemoteInt.h >

IRsend irsend;

Void setup(){
Serial.begin(9600);
pinMode(2,INPUT);
}

void loop(){
StatoSensore=digitalRead(2);
If (StatoSensore==HIGH){
Serial.println(“1”);}

for(int i=0; i<3; i++){
irsend.sendNEC(0x20D7807F,32);
}
delay(300);
}

a occhio,non dovresti mettere il for dentro l’if??
altrimenti invii anche quando lo stato è LOW…

HO provato,ma il led invia il segnale indipendentemente dallo stato del pir

#Include <IRemote.h>
#include <IRemoteInt.h >

IRsend irsend;

Void setup(){
Serial.begin(9600);
pinMode(2,INPUT);
}

void loop(){
StatoSensore=digitalRead(2);
If (StatoSensore==HIGH){
Serial.println("1");}

for(int i=0; i<3; i++){
irsend.sendNEC(0x20D7807F,32);
}
delay(300);
}

Ciao io leggendo il codice ho trovato diversi errori ma probabilmente li hai fatti nella trascrizione,penso.
La cosa che manca proprio è la variabile dello StatoSensore, dovresti scriverla così int StatoSensore = 0; per inizializzarla e puoi farlo anche fuori delle void setup e loop. Il ciclo for poi lo devi mettere all’interno della if altrimenti che il pir è alto o basso il codice nec viene inviato comunque e ripetutamente.
Inizia a modificare queste cose, anche se in teoria l’ide dovrebbe darti un errore così com’è :slight_smile:

Si c’erano degli errori di trascrizione,comunque ho messo il ciclo for dentro la funzione if e tutto va bene ! :slight_smile:
Grazie

Ok.... :grin: