Problema con compilazione sketch e ricevitore IR

Buonasera, da qualche giorno mi sono rimesso in corsia per scoprire questo mondo e in quanto neofita incontro subito i primi problemini…
Uso ArduinoUNO e vorrei controllare un led con un classico telecomando.
Ho impostato il tasto power del telecomando per accendere/spegnere il led e scrivere sul serial monitor la scritta “POWER” mentre se premo altri pulsanti non “dovrebbe” fare nulla sui led ma scrivere solo il codice ricevuto sul serial monitor.
Il problema è…perchè con qualsiasi tasto il led si accende/spegne?
Il codice è il seguente e non capisco dov’è l’errore

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

int RECV_PIN = 11;
int LED_PIN = 3;
int statoLed=LOW;
IRrecv irrecv(11);  // RECV_PIN
decode_results results;

 
void setup() {
  pinMode(3, OUTPUT);
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
}
 
void loop() 
{ 
  if (irrecv.decode(&results)) // have we received an IR signal?
  {  
    if ( results.value == 0x900BCB5)
    Serial.println("POWER");    
    if (statoLed == LOW)
     { statoLed=HIGH;
       digitalWrite(3, statoLed);
       delay(100); }
       
     else
     
     { statoLed=LOW;
       digitalWrite(3, statoLed);
       delay(100);} 
       
    if ( results.value != 0x900BCB5)
       {Serial.println(results.value, HEX);}
       
irrecv.resume();
  } 
}

Magari sarà una banalità ma mi serve anche per imparare…
Grazie in anticipo.

Magari mi manca qualche concetto di base, ma non riesco proprio a capire dov'è l'errore...il led si accende e spegne anche con altri telecomandi, tipo philips o samsung. ma se il codice è diverso perchè lo fa?

Sbagliate le graffe, mancano:

if ( results.value == 0x900BCB5)
{
Serial.println("POWER");    
if (statoLed == LOW)
.....
}

Altrimenti solo quel primo Serial.println("POWER"); sta dentro l'if, il resto no e quindi lo esegue sempre

Perché mancano le parentesi dopo l'IF.
Indenta il codice con la formattazione automatica (menù strumenti), vedrai subito l'errore.

Quindo podo qualsiasi if(), tutto ciò che deve eseguire va tra parentesi graffe.
Quindi a me eseguiva solo serial print POWER perchè il tutto non era tra parentesi…
Scusatemi ma sono agli inizi…ora metto in pratica i vostri insegnamenti facendo altre prove…
Grazie mille

Cerca “Guida C” su Google. I primi risultati vanno bene. :grin:

@ job_106 :

Puoi cominciare con QUESTO e puoi scaricarti QUESTO libro (... tranquillo, è un sito legale, purché per esclusivo uso PERSONALE).

Guglielmo