@toti:
modifica il tuo programma così:
#define led 6
#define rx 2
byte ledFlag = 0;
void setup()
{
pinMode(11, OUTPUT);
pinMode (rx, INPUT);
pinMode (led, OUTPUT);
digitalWrite (led, LOW);
OCR2A = 210;
TCCR2A = 0b01000011;
TCCR2B = 0b00001001;
Serial.begin (9600);
attachInterrupt(0,trovato,RISING);
}
void trovato ()
{
digitalWrite (led, HIGH);
ledFlag = 1;
}
void loop ()
{
int i= digitalRead (rx);
Serial.println (i);
if (ledFlag == 1) {
delay(500);
digitalWrite(led LOW);
}
}
In questo modo se l'interrupt vede un cambio di stato, hai un'attesa di 500 ms prima che il led venga rispento ed i dati tornino ad essere spediti. Comunque prova anche cambiando modalità dell'interrupt. Da quel che ho capito, il tuo sensore dovrebbe portare il pin a 0 quando viene interrotto, per cui potresti usare anche "LOW" come evento dell'attachInterrupt.
Per il resto ti aiuta Michele che di sensori iR ne sa sicuramente più di me ![]()