IR Empfänger und Nano Fehler beim überprüfen

Hallo zusammen
Ich versuche dieses Projekt nachzubauen. Die Bauteile habe ich mir schon vor einiger Zeit angeschafft, nun möchte ich sie auch benutzen.

/* 
* IR Remote Gateway to HomeMatic CUxD
* First you have to setup the IR Lib from : https://github.com/shirriff/Arduino-IRremote
*
* Thomas Kluge 25092013
*
*/


#include <IRremote.h> 
// used to  map the repeat code fffff 
#define userepeat false   

//How many codes you are wish to use at max
#define numOfMappedCodes 10

// Learning Mode
#define learning false

// The IR is connected to Arduino Pin 9
int RECV_PIN = 9; 

int remoteCodeCounter;  // a Helper

IRrecv irrecv(RECV_PIN); // Initialise the IR Lib

struct mapData { 
  unsigned long remoteCode; 
  String cuxdCode; 
} 
codeMapping[numOfMappedCodes]; 


decode_results results; 
unsigned long lastValue; 

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

// a little helper to setup code mapping
void addCodeMapping(unsigned long remoteCode,String cuxdCode) { 
 codeMapping[remoteCodeCounter].remoteCode = remoteCode; 
 codeMapping[remoteCodeCounter].cuxdCode = cuxdCode; 
 remoteCodeCounter++; 
} 

// a helper
String cuxdCodeForRemoteCode(unsigned long remoteCode) { 
 for (int i=0;i<=remoteCodeCounter;i++) { 
 if (codeMapping[i].remoteCode==remoteCode) return codeMapping[i].cuxdCode; } 
 return NULL; 
} 


// Here you have to setup the mapping between IR Code and CUxD Code
void setupCodeMapping() { 
 addCodeMapping(16187647,"FAA000011"); 
 addCodeMapping(16220287,"FAA000000"); 
 addCodeMapping(16203967,"FAA000100"); 
 addCodeMapping(16236607,"FAA000111"); 
 addCodeMapping(16195807,"FAA000211"); 
} 

// Main Loop
void loop() { 
 if (irrecv.decode(&results)) { 
   unsigned long value; 
   // Some remotes use FFFFFF to indicate a Press and Hold 
   if (results.value==4294967295) { 
    
     value = lastValue; 
     if (userepeat) { 
      String codeToSend = cuxdCodeForRemoteCode(value); 
      if (codeToSend!=NULL)
      Serial.println(codeToSend); 
     } 

   } else { 
     value = results.value; 
     // uncomment the next line if you want to know the IR Code 
     if (learning) Serial.println(value); 
    lastValue = value; 
    String codeToSend = cuxdCodeForRemoteCode(value); 
    if (codeToSend!=NULL) Serial.println(codeToSend); 
   } 
 irrecv.resume(); // Receive the next value 
 } 
}

Leider bekomme ich beim kompillieren immer diese Fehlermeldung

ir_ccu:56: error: converting to 'String' from initializer list would use explicit constructor 'String::String(int, unsigned char)'

C:\Users\xxx\Documents\Arduino\ir_ccu\ir_ccu.ino:56:9: warning: passing NULL to non-pointer argument 1 of 'String::String(int, unsigned char)' [-Wconversion-null]

Kann mir da jemand helfen?

Danke und Gruss
Hansjürg

Hi

Die Funktion gibt einen String zurück, NULL ist kein String.
Änder das NULL Mal in “” (zwei Anführungszeichen ohne Inhalt) - zumindest kompiliert der Sketch dann bei mir.
Allerdings gibt Es einige Warnungen in der Form:

E:\Arduino\sketchbook\libraries\Arduino-IRremote-master\IRremote.cpp: In function 'int MATCH(int, int)':

E:\Arduino\sketchbook\libraries\Arduino-IRremote-master\IRremote.cpp:58:32: warning: suggest braces around empty body in an 'else' statement [-Wempty-body]

     DBG_PRINTLN(F("?; FAILED")); 

                                ^

MfG

Besten Dank, bei mir gibt es keine Fehlermeldung. Ich muss nun aber noch testen ob es auch funktioniert.

Funktioniert :slight_smile:

hafoxx:
Besten Dank, bei mir gibt es keine Fehlermeldung.

Es geht um Warnungen, die in der IDE explizit in Datei/Voreinstellungen eingeschaltet werden müssen, damit man sie sieht. Das ist auf jeden Fall zu enmpfehlen!