Salve a tutti, son qui per spiegarvi in parole povere che cosa ho intenzione di fare, in modo tale che così anche voi avete un'idea delle mie idee xD (Ok questa era pessima).
Ad ogni modo, quello che intendo realizzare, è un semplice programma che, a seconda di cosa riceve tramite infrarossi, invii determinate strighe sulla seriale.
Posto qui di seguito il mio sketch:
#include "IRremote.h"
int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(11, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value);
digitalWrite(11, HIGH);
delay(500);
digitalWrite(11, LOW);
irrecv.resume();
}
if ( results.value == 551520375 ){ //tasto 1 sul telecomando
Serial.println("Ciao");
delay(500);
}
}
Cosa fa questo sketch?
-Tramite un sensore ad infrarossi capta se vengono premuti dei tasti su un telecomando, e li visualizza sulla seriale accendendo un led.
Cosa vorrei fare io?
-Come vedete ho inserito un if con un codice esadecimale: 551520375, ovvero il codice che corrisponde al tasto 1 del mio telecomando.
-Ora vorrei fare in modo che quando esso viene premuto, esso stampi sulla seriale "Ciao".
Usando il codice sopracitato tutto questo avviene, ma non perfettamente, quello che vorrei fare io infatti è far in modo che si visualizzi "Ciao" solo esclusivamente quando viene effettivamente premuto il pulsante..
Cosa fa il codice ora come ora?
Quando viene premuto il pulsante, sulla seriale mi ritrovo:
551520375
Ciao
Ciao
Ciao
Ciao
Ciao
Praticamente all'infinito.. Come posso ovviare a questo problema? Avevo pensato di inserire un irrecv.resume(); Subito dopo al Serial.Println Ma non funziona.. Idee?