IR-Signal empfangen und weiterleiten - Programm bleibt stehen / einmal Funktion

Hallo,
ich bin Arduino-neuling und versuche gerade eine Steuerung per Infrarot zu entwickeln. Es funktioniert soweit das auslesen und bedienen per Infrarot sehr gut (LED Ein- und Ausschalten).
Nun möchte ich aber zusätzlich in meinem Programm ein IR-Signal empfangen und ein anderes IR-Signal vom Arduino weiterschicken. Dazu habe ich den angehängten Code auf den Arduino übertragen.

Da ich nicht noch nicht soweit bin, alles selbst zu programmieren, sind die meisten Teile kopiert und angepasst. Das meiste verstehe ich auch, nur dieser Teil z.B. sagt mir garnichts:

if (irrecv.decode(&results)) {

ohne den Teil funktioniert aber nichts…

Vielleicht kann mir ja hier jemand weiterhelfen, würde mich freuen.
LG!

IRtest.ino (1.26 KB)

#include <IRremote.h>

int before;
int out1 = 12; // LED
int out2 = 13; // heartbeat
int RECV_PIN = 9; //data out of IR receiver

IRrecv irrecv(RECV_PIN); //IR receive
IRsend irsend; //IR send
decode_results results; //Wert aus IRremote.h

void setup() {

 pinMode(out1, OUTPUT); // initialize output
 pinMode(out2, OUTPUT); // initialize output
 irrecv.enableIRIn(); // start the receiver
 before = 0; //LED is turned off
}

void loop() {

 digitalWrite(out2, HIGH);   //heartbeat LED on
 delay(100);              // delay
 digitalWrite(out2, LOW);    //heartbeat LED off

 if (irrecv.decode(&results)) {

   if (results.value == 0xE13EA45B) { //IR signal ON
     if (before == 0) { //if the LED was off, then we turn it on
       digitalWrite(out1, HIGH);
       before = 1; //LED is now turned on
       delay(50);
     }
   }

   if (results.value == 0xE13E13EC) { //IR signal OFF
     if (before == 1) { //if the LED was on, then we turn it off
       digitalWrite(out1, LOW);
       before = 0; //LED is now turned off
       delay(50);
     }
   }

   //Hex-Code an IR weitergeben:
   if (results.value == 0xE13E2BD4) { //IR empfangen
     irsend.sendSony(0x90, 12); //IR senden
     delay(50);
   }

   irrecv.resume();// Receive the next value
 }
}

don_fritz:
Hallo,
ich bin Arduino-neuling und versuche gerade eine Steuerung per Infrarot zu entwickeln. Es funktioniert soweit das auslesen und bedienen per Infrarot sehr gut (LED Ein- und Ausschalten).
Nun möchte ich aber zusätzlich in meinem Programm ein IR-Signal empfangen und ein anderes IR-Signal vom Arduino weiterschicken. Dazu habe ich den angehängten Code auf den Arduino übertragen.

Da ich nicht noch nicht soweit bin, alles selbst zu programmieren, sind die meisten Teile kopiert und angepasst. Das meiste verstehe ich auch, nur dieser Teil z.B. sagt mir garnichts:

if (irrecv.decode(&results)) {

ohne den Teil funktioniert aber nichts…

Vielleicht kann mir ja hier jemand weiterhelfen, würde mich freuen.
LG!

Poste bitte den Sketch hier im Forum.
Verwende dazu die Code-Tags (Schaltfläche </>).]

Die oben genannte Anweisung liest den empfangenen IR-Code in die Variable ein.

Du solltest uns aber schon mitteilen, wo das Problem ist.

Hallo,
“Nun möchte ich aber zusätzlich in meinem Programm ein IR-Signal empfangen und ein anderes IR-Signal vom Arduino weiterschicken.”

Das hat er wohl vor…

Funktioniert denn NUR- Das Senden in einem BeispielSketch ohne Probleme?
Gruß und Spaß
Andreas
P.S. welche Lib nutzt Du?

Achso, was dabei nicht funktioniert ist glaube ich dieser Teil:

   //Hex-Code an IR weitergeben:
   if (results.value == 0xE13E2BD4) { //IR empfangen
     irsend.sendSony(0x90, 12); //IR senden
     delay(50);
   }

wenn ich also per Fernbedienung "0xE13E2BD4" sende, wird der Befehl an Pin3 ausgeführt "irsend.sendSony(0x90, 12". Allerdings passiert das ganze einmal und danach kann ich nichts mehr machen, so als ob der gesamte Loop dann einfriert - dann reagiert er auf keine andere Eingabe mehr.

Vielen dank schon mal für die Infos.

Achso, ich nutze diese lib:
/*

  • IRremote
  • Version 0.1 July, 2009
  • Copyright 2009 Ken Shirriff
    gibt es da Unterschiede / Andere die den gleichen Namen haben? Ich dachtes es gibt nur eine IRremote...

An Stelle eines irrecv.resume() brauchst du nach dem Senden eines Codes ein irrecv.enableIRIn().
Das Senden scheint den Empfang sonst stillzulegen.

Scheint aktuell öfter aufzutreten das Problem… IR Fernbedienung umsetzer LED Strip

Danke Whandall! Ich habe das direkt ausprobiert und nun funktioniert es prima - irrecv.enableIRIn() löst das Problem.
Vielen Dank!

Schön dass ich helfen konnte. :wink: