Klimaanlage per Infrarotsignal ansteuern

Hallo Leute, möchte eine Klimaanlage per Infrarotsignal ansteuern
Hier ist der Code denn ich aus der Klimaanlage-Fernbedienung ausgelesen habe:

unsigned int raw[100] = {4400,4300,600,1550,550,550,550,1550,600,1550,600,500,550,500,600,1550,550,550,550,500,550,1600,550,500,550,550,550,1600,550,1600,550,500,550,1600,550,1550,600,500,550,1600,550,1600,550,1600,550,1550,600,1550,600,1550,550,550,550,1550,600,500,550,500,600,500,550,500,600,500,550,500,600,500,600,450,600,500,550,500,600,500,550,500,600,500,550,550,550,1550,550,1600,550,1600,550,1600,550,1600,550,1550,600,1550,600,1550,600,};
irsend.sendRaw(raw,100,38);

Leider erkennt die Kimaanlage den Code nicht… :frowning: (habe dasselbe Spiel mit einem JVC TV gemacht und das klappt ohne Probleme… :slight_smile:

#include <IRremote.h>

IRsend irsend;
unsigned int raw[100] = {4400,4300,600,1550,550,550,550,1550,600,1550,600,500,550,500,600,1550,550,550,550,500,550,1600,550,500,550,550,550,1600,550,1600,550,500,550,1600,550,1550,600,500,550,1600,550,1600,550,1600,550,1550,600,1550,600,1550,550,550,550,1550,600,500,550,500,600,500,550,500,600,500,550,500,600,500,600,450,600,500,550,500,600,500,550,500,600,500,550,550,550,1550,550,1600,550,1600,550,1600,550,1600,550,1550,600,1550,600,1550,600,};

void setup()
{
  Serial.begin(9600);
}

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 1; i++) {
      irsend.sendRaw(raw,100,38);
      delay(1000);
      
      delay(1000);
    }
  }
}

Wie weit war der Sender von der Anlage entfernt, als du es getestet hast?
Hast du es schon mal aus ganz geringer Entfernung versucht?

Vielleicht ist einfach das Infrarotsignal viel zu schwach.
Du kannst das mal überprüfen, indem du mit einer Kamera (die Infrarot erkennt)
die Helligkeit deiner LED und die der Fernbedienung vergleichst.
Fals deine beim Senden dunkler ist, ist das Signal wohl zu schwach.

Der Sender war ca.10cm von Klimaanlagen - Empfänger entfernt. Habe auch mit einen zweiten Arduino die Infrarotsignal entpfangen können.

Hallo,

bist Du sicher, dass die Anzahl der Elemente in Deinem Array stimmt, oder fehlt da eine Zahl?

Stimmt die Frequenz?

Gruß,
Ralf

Hallo,
Klimaanlage mit IR?? Das hört sich ein wenig abenteurlich an.
Was mich darauf schließen läßt, das auch die Übertragung abenteuerlich
sein könnte.

Mit was, für einer Frequenz überträgt denn Deine Fernbedienung die Daten.
Wenn die mit 38kHz überträgt, Dein Empfänger aber ein 36kHz ist, dann könnte
es zu Störungen kommen.
Auch ist es möglich, das Deine IR-Diode mit zu wenig Leistung sendet.
Gruß und Spaß
Andreas

SkobyMobil:
Klimaanlage mit IR?? Das hört sich ein wenig abenteurlich an.

Nene, das ist schon ok.
Ich tippe auch auf abweichende Frequenz, da hilft messen oder ausprobieren.
Oder schauen, welcher Empfänger in der Klima sitzt :astonished:

Hier ist die Lösung: bei Klimaanlagen ist der IR-Code länger als wie bei gewöhnlichen Geräten.
Zu erster muss man in der arduino library IRremote.h den wert RAW von 100 auf 230 umstellen:

Code:
#define RAWBUF 100 // Length of raw duration buffer

Und hier ist er sketch dazu:

#include <IRremote.h>

IRsend irsend;

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
unsigned long value;

int khz=38;


unsigned int Signal_0_0[] = {4444, 4384, 568, 1580, 568, 528, 568, 1540, 608, 1604, 568, 508, 568, 532, 568, 1580, 564, 536, 564, 508, 564, 1612, 568, 504, 568, 532, 568, 1540, 608, 1604, 568, 504, 568, 1608, 564, 512, 564, 1608, 568, 1580, 568, 1564, 608, 1564, 608, 504, 568, 1612, 564, 1580, 564, 1608, 572, 504, 568, 532, 568, 504, 568, 532, 568, 1540, 608, 528, 572, 504, 568, 1604, 568, 1580, 568, 1608, 564, 512, 568, 528, 572, 504, 568, 532, 568, 504, 568, 532, 568, 504, 568, 508, 592, 1580, 568, 1608, 564, 1584, 568, 1604, 568, 1580, 568, 5168, 4440, 4360, 588, 1584, 564, 536, 568, 1576, 572, 1604, 568, 504, 568, 532, 568, 1580, 568, 532, 568, 504, 568, 1604, 568, 508, 568, 532, 568, 1580, 564, 1612, 568, 504, 568, 1604, 568, 504, 596, 1580, 568, 1608, 564, 1580, 568, 1608, 568, 504, 568, 1568, 604, 1540, 608, 1568, 604, 532, 568, 508, 564, 512, 564, 536, 568, 1576, 568, 532, 568, 508, 568, 1564, 608, 1604, 568, 1580, 568, 528, 572, 508, 564, 508, 564, 536, 568, 504, 572, 528, 572, 504, 568, 532, 568, 1576, 568, 1604, 572, 1580, 564, 1608, 568, 1608, 568,};

void setup()
{
  Serial.begin(9600);
    irrecv.enableIRIn(); 

}

void loop() {
  while(Serial.available()>= 0){
         if (Serial.read() == '0') {
         Serial.println("Transmitting");
         for (int i = 0; i < 3; i++) {
irsend.sendRaw(Signal_0_0, sizeof(Signal_0_0)/sizeof(int), khz); 
   
            delay(40);

         }
       }else if (irrecv.decode(&results)) {
       Serial.println("Receiving");
       Serial.println(results.value, HEX);
       value = results.value;

      irrecv.resume(); 
         }
  }
}