programmazione infrarossi

Ciao a tutti. Sto usando arduino uno con ricevitore infrarossi e un vecchio telecomando tv per far accendere un led. Ovviamente ho riconosciuto i 2 codici dal telecomando tramite il monitor seriale, quindi successivamente ho programmato un codice per HIGH e un codice per Low. Ora mi chiedevo se era possibile creare uno sketch che alla pressione del tasto sul telecomando il led rimane accesso ma appena tolgo il dito dal pulsante deve tornare su off. Volevo utilizzare questo metodo per comandare una rc car tramite telecomando. Altrimenti dovrò impostare 6 pulsanti :(avanti/stop/indietro/sinistra/stop/destra)invece di 4 pulsanti:(avanti/indietro/sinistra/destra). Ringrazio tutti anticipatamente. Enzo.

il while ti dovrebbe consentire di fare ciò che desideri, a patto che la pressione fissa del pulsante invii il codice in continuazione e non una sola volta.

Ciao. Sì sul monitor seriale lo stampa in continuazione se tengo premuto.

E quindi la tua logica da: "se il codice = xxxxx accendi il LED" deve diventare: "fintanto che il codice = xxxxx mantieni attiva questa uscita" il comando while è quello che fa per te, leggiti la semplice sintassi sul reference e te la cavi rapidamente

Ok grazie stasera proverò. Intanto grazie.

Ciao.
Ho provato a creare questo sketch:
[#include <IRremote.h>
const int RECV_PIN = 10;
IRrecv irrecv(RECV_PIN);
decode_results results;// simile al discorso che facevamo per la variabile "motore" nel progetto 8
int avantib = 13;    
int frenob = 8;  
int velocitab = 11;
int avantia = 12;    
int frenoa = 9;  
int velocitaa = 3;

void setup() 
{       
Serial.begin(9600);  //Initialize serial communication with Bluetooth module at 115200 btu.
irrecv.enableIRIn(); //Avvia ricezione
pinMode(avantib, OUTPUT);
pinMode(frenob, OUTPUT);
pinMode(velocitab, OUTPUT);
pinMode(avantia, OUTPUT);
pinMode(frenoa, OUTPUT);
pinMode(velocitaa, OUTPUT);

}

void loop()
{
if (irrecv.decode(&results)) // se il sensore infrarosso riceve un'informazione ARDUINO  fa quello che c'è in queste parentesi graffe
  {
Serial.println(results.value); // scrive sul monitor seriale il valore in un codice numerico numerico del tasto del telecomando che è stato premuto: ogni tasto di ogni telecomando ha un codice

        
if(results.value==3268063311){   // AVANTI 
digitalWrite(avantib, LOW);
digitalWrite(frenob, LOW);
analogWrite(velocitab,255);
delay (200);
analogWrite(velocitab,0);}

if(results.value==3268061271){  // INDIETRO 
digitalWrite(avantib, HIGH); 
digitalWrite(frenob, LOW);
analogWrite(velocitab,255);
delay (200);
analogWrite(velocitab,0);}

if(results.value==3268060251){  //  sinistra
digitalWrite(avantia, HIGH); 
digitalWrite(frenoa, LOW);
analogWrite(velocitaa,255);
delay (200);
analogWrite(velocitaa,0);}

if(results.value==3268065351){  // DESTRA
digitalWrite(avantia, LOW); 
digitalWrite(frenoa, LOW);
analogWrite(velocitaa,255);
delay (200);
analogWrite(velocitaa,0);}

 irrecv.resume(); //Attesa ricezione prossimo valore
}
}

















]

solo che in questo modo la macchina và a scatti perchè ho inserito il delay (200).
se integro la funzione while al posto di if il motore gira e poi non risponde più ai comandi.
come potrei fare?

Ciao a tutti. Come detto sopra vorrei semplicemente modificare lo sketch in questo modo: quando ricevo il dato xxxx attivo il motore, se non ricevo nulla torna su posizione di off. come devo scrivere il codice?

non trovo nessun esempio in rete :~