errore programma ir

Ciao a tutti i vorrei cambiare colore ad un led rgb tramite un telecomando. Ho acquistato un TSOP1738 per ricevere i dati dal mio telecomando ma non capisco l’errore nello sketck
Questo è il programma

#include <IRremote.h>

int RECV_PIN = 11;

int red1 = 13; //pin per il led rosso
int green1 = 12; //pin per il led verde
int blue1 = 10; //pin per il led blu

IRrecv irrecv(RECV_PIN);

decode_results results;


void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver

  pinMode(red1, OUTPUT);
  pinMode(green1, OUTPUT);
  pinMode(blue1, OUTPUT);
  pinMode (RECV_PIN, INPUT);
}
void loop() {
   if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  
  //primo led

  analogWrite(red1,255);
  analogWrite(green1,255);
  analogWrite(blue1,0);
  
  if (irrecv.decode(&results)) {

    if (results.value == E13DDA28) {  // giallo

      analogWrite(red1,255);
      analogWrite(green1,255);
      analogWrite(blue1,0);
     } 

    if (results.value == AD586662) {   // red

      analogWrite(red1,255);
      analogWrite(green1,0);
      analogWrite(blue1,0);
     
    }       


  }


}

e questo è l’errore

rgb_lamp.ino: In function 'void loop()':
rgb_lamp:41: error: 'E13DDA28' was not declared in this scope
rgb_lamp:48: error: 'AD586662' was not declared in this scope

E13DDA28 e AD586662 sono i segnali che leggo nel monitor seriale provenienti dal mio telecomando
Grazie in anticipo per le risposte

result.value restituisce un unsigned long quindi un numero; lo devi confrontare con un altro numero. Quello da te indicato, dovrebbe essere un numero espresso in notazione esadecimale. Adesso non ricordo come si fa ad idicarli in C, ma puoi sempre scrivere il velore decimale per la comparazione: E13DDA28 diventa 3778927144 quindi

if (results.value == E13DDA28) {  // giallo

diventa

if (results.value == 3778927144) {  // giallo

--> http://didattica.claudiomagni.com/convertitore-binario

Prova anche con

if (results.value == 0xE13DDA28) {  // giallo

EDIT: Si, anteponendo al numero 0x indichi al compilatore che si tratta di un numero esadecimale. Per compilare compila... adesso devi vedere se funziona. :grin:

ho provato e trasformandolo in decimale compila ma non succede nulla! mettendo 0x vedo che quando premo il tasto del telecomando il led lampeggia un pò ma non cambia colore

Se lampeggia è già una passo avanti. Come sono i collegamenti? Devi usare solo pin PWM, quelli con la tilde: il 12 e il 13 non lo sono (sulla UNO). Che scheda hai?

--> http://arduino.cc/forum/index.php/topic,146152.0.html --> http://www.pighixxx.com/abc-arduino-basic-connections/

ho la uno! ho provato a cambiare il 12 e il 13 e metterli sul 5 e sul 9 ma il risultato non cambia! sul verde e il blu ho attaccato una resistenza da 100 hom e sul rosso da 180 hom

Questa parte

//primo led
  analogWrite(red1,255);
  analogWrite(green1,255);
  analogWrite(blue1,0);

dovresti spostarla nel setup. Altrimenti ogni volta che fa il loop ripristini quei valori.

ok quando premo il tasto AD586662 si vede una luce verde molto flebile! di rosso neanche l'ombra! vanno bene le resistenze che ho messo?

Segui questo tutorial e prova prima il led RGB senza il telecomando --> http://learn.adafruit.com/adafruit-arduino-lesson-3-rgb-leds/overview

ok ho risolto tutto! ora funziona! per collegare il led avevo invertito il blu con il verde :blush: grazie della pazienza

Bene. XD