Problema telecomando ir accendere e spegnere un led con un solo pulsante

Salve, mi chiamo Stefano e sono nuovo in questo forum ho un problema con arduino 1.

Vorrei accendere e spegnere un led con un solo pulsante di un telecomando qualcuno riesce ad aiutarmi ?

Per il momento sono riuscito solo ad accendere e spegnere il led con 2 pulsanti diversi con questo programma :

#include <IRremote.h>
#include <IRremoteInt.h>

int receiver = 8; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;

void setup()
{
Serial.begin(9600); // for serial monitor output
irrecv.enableIRIn(); // Start the receiver
pinMode(9, OUTPUT); // Pin 9 output
}
void loop()
{
if (irrecv.decode(&results)) // have we received an IR signal?
{
Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
irrecv.resume();// receive the next value
}

if ( results.value == 0xFFA25D){ //tasto 6 sul telecomando
digitalWrite(9, HIGH); // set the LED on
}
if ( results.value == 0xFF629D){ //tasto 4 sul telecomando
digitalWrite(9, LOW); // set the LED 0ff
}
}

Prima di tutto devi presentarti :wink:

Per il tuo programma puoi farlo tranquillamente con un pulsante, devi semplicemente appoggiarti ad una variabile...

Esempio, se il codice è 0xFFA25D && statoLed == false Allora accendi e imposti statoLed = true
se il codice è 0xFFA25D && statoLed == true Allora spegni e imposti statoLed = false

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

bubba21:
Prima di tutto devi presentarti :wink:

Per il tuo programma puoi farlo tranquillamente con un pulsante, devi semplicemente appoggiarti ad una variabile...

Esempio, se il codice è 0xFFA25D && statoLed == false Allora accendi e imposti statoLed = true
se il codice è 0xFFA25D && statoLed == true Allora spegni e imposti statoLed = false

Ora mi sono presentato nella sezione apposita
Grazie per l'info.
Quindi ora come diventerebbe il mio codice postato sopra ?

nid69ita:
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

nid69ita:
Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Grazie per i link ora mi sono presentato

Come suggerito da @bubba,

if ( results.value == 0xFFA25D){ //tasto 6 sul telecomando
  stato=(stato==LOW ? HIGH : LOW);   // inverte stato con if in linea del C
  digitalWrite(9, stato);
}

dovrai anche dichiarare la variabile stato ad inizio programma e nella setup inizializzarla a LOW

stato=(stato==LOW ? HIGH : LOW);
é somplicato

stato=!stato;
é piú semplice

Ciao Uwe

Grazie dei consigli di entrambi ho risolto allego il codice funzionante per l'accesnsione di 4 led distinti ognuno con 1 suo pulsante del telecomando che accende e spegne il led.

#include <IRremote.h>
#include <IRremoteInt.h>


int receiver = 8; // pin 1 of IR receiver to Arduino digital pin 11
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
char stato;
void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
  pinMode(9, OUTPUT); // Pin 9 output
   pinMode(10, OUTPUT); // Pin 9 output
    pinMode(11, OUTPUT); // Pin 9 output
     pinMode(12, OUTPUT); // Pin 9 output
   
     stato==LOW;
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume();// receive the next value
  }
 
  if ( results.value == 0xFFA25D){ //tasto 6 sul telecomando
  stato=!stato;  // inverte stato con if in linea del C
  digitalWrite(9, stato);
  
   delay(250);
}
else   if ( results.value == 0xFF629D){ //tasto 6 sul telecomando
  stato=!stato;  // inverte stato con if in linea del C
  digitalWrite(10, stato);
   delay(250);
}
else   if ( results.value == 0xFFE21D){ //tasto 6 sul telecomando
  stato=!stato;  // inverte stato con if in linea del C
  digitalWrite(11, stato);
   delay(250);
}
else   if ( results.value == 0xFF22DD){ //tasto 6 sul telecomando
  stato=!stato;  // inverte stato con if in linea del C
  digitalWrite(12, stato);
   delay(250);
}
}