INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
IR-Signalübersetzer
29.07.2015, 08:01
Beitrag #1
IR-Signalübersetzer
Hallo zusammen,
kann mir da vielleicht jemand bei behilflich sein. Ich möchte die Befehle einer IR Fernbedienung empfangen und durch andere Hex Befehle ersetzten. Hintergrund ist eine Dunstabzugshabe die leider nicht mit dem AEG Herd gesteuert werden kann, da aderer Hersteller. Die // IR commands from AEG hob2hood device müssen quasi in // IR commands for DAH übersetzt werden.
z.B. wenn const long SPEED_1 = 0xE3C01BE2;
dann const long DAH_SPEED_1 = 0x23C01B31;

// IR commands from AEG hob2hood device
const long SPEED_1 = 0xE3C01BE2;
const long SPEED_2 = 0xD051C301;
const long SPEED_3 = 0xC22FFFD7;
const long SPEED_4 = 0xB9121B29;
const long SPEED_OFF = 0x55303A3;
const long LIGHT_ON = 0xE208293C;
const long LIGHT_OFF = 0x24ACF947;

// IR commands for DAH
const long DAH_SPEED_1 = 0x23C01B31;
const long DAH_SPEED_2 = 0x6751C385;
const long DAH_SPEED_3 = 0x462FFF63;
const long DAH_SPEED_4 = 0x46121B93;
const long DAH_SPEED_OFF = 0x6430345;
const long DAH_LIGHT_ON = 0x64082965;
const long DAH_LIGHT_OFF = 0x62ACF932;


Gruß billy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2015, 08:58
Beitrag #2
RE: IR-Signalübersetzer
Hallo,

Das sollte so funktionieren:
If (SPEED_1 == 0xE3C01BE2)
{
DAH_SPEED_1 = 0x23C01B31;
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2015, 09:09
Beitrag #3
RE: IR-Signalübersetzer
Guten Morgen,

ich hätte es in diesem Fall jetzt mit "Switch" probiert
Würde dann doch übersichtlicher werden?

Bin Arduino Anfänger keine Garantie für die Richtigkeit meiner Inhalte Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2015, 09:32
Beitrag #4
RE: IR-Signalübersetzer
(29.07.2015 09:09)CoreXY schrieb:  ich hätte es in diesem Fall jetzt mit "Switch" probiert
Würde dann doch übersichtlicher werden?

Ich befürchte "Switch" wird hier nicht funktionieren, da du ja unterschiedliche Variablen zum Vergleich hast. Daran gedacht hatte ich auch, aber es deswegen wieder verworfen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2015, 10:46 (Dieser Beitrag wurde zuletzt bearbeitet: 29.07.2015 11:55 von billy.)
Beitrag #5
RE: IR-Signalübersetzer
So in etwa?!

/*
* An IR LED must be connected to Arduino pin 13.
* An IR detector/demodulator must be connected to pin 11
* Version 001
*/

#include <IRremote.h>

// IR commands from AEG hob2hood device
const long SPEED_1 = 0xE3C01BE2;
const long SPEED_2 = 0xD051C301;
const long SPEED_3 = 0xC22FFFD7;
const long SPEED_4 = 0xB9121B29;
const long SPEED_OFF = 0x55303A3;
const long LIGHT_ON = 0xE208293C;
const long LIGHT_OFF = 0x24ACF947;

// IR commands for DAH
const long DAH_SPEED_1 = 0x23C01B31;
const long DAH_SPEED_2 = 0x6751C385;
const long DAH_SPEED_3 = 0x462FFF63;
const long DAH_SPEED_4 = 0x46121B93;
const long DAH_SPEED_OFF = 0x6430345;
const long DAH_LIGHT_ON = 0x64082965;
const long DAH_LIGHT_OFF = 0x62ACF932;


int IRpin = 11; // Pin fuer den IR Empfaenger
int LED = 13; // LED Pin
IRrecv irrecv(IRpin);
IRsend irsend;

void setup()
{
Serial.begin(9600); // Serielle Ausgabe
irrecv.enableIRIn(); // IR Empfaenger starten
pinMode(LED, OUTPUT);
}

void loop() {
Routine1();
Routine2();
Routine3();
Routine4();

}

void Routine1() {
irrecv.resume(); // Das Signal empfangen
}

void Routine2() {
if (SPEED_1 == 0xE3C01BE2){
for (int i = 0; i < 3; i++) {
irsend.sendSony(0x23C01B31, 12);
delay(40);
}
}
}


void Routine3() {

}

void Routine4() {

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.07.2015, 12:29
Beitrag #6
RE: IR-Signalübersetzer
Hallo,

das funktioniert so nicht.
Du musst in der Loop prüfen, ob IR ansteht und alles weiter auch in der Loop ausführen. Das geht natürlich auch mit Unterfunktionen, aber die brauchst du hier nicht.

void loop()
{
if (irrecv.decode(&results))
{
if (results.value == 0xE3C01BE2)
{
for (int i = 0; i < 3; i++) {
irsend.sendSony(0x23C01B31, 12);
delay(40);
}
else if (results.value == 0xD051C301)
{
tu was;
}
Und weitere Abfragen....
}
irrecv.resume();
}

Da es hier nur eine "Variable" gibt, die du auswertest (results.value), kannst du es auch wie schon von CoreXY beschrieben mit Switch lösen. Aber zum ersten Versuch wird es so funktionieren. (denke ich, wenn kein Eingabefehler von mir gemacht wurde).Confused
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2015, 09:21
Beitrag #7
RE: IR-Signalübersetzer
Leider wird auf Pin 13 nichts ausgegeben.
Wenn ich mir auf dem seriellen Monitor anschaue, wird das IR Signal "C40BF" nur einmal ausgegeben. Anschließend kommt nichts mehr. Andere Code werden bei jeden Tastendruck ausgegeben. Bei "C40BF" bleibt es hängen.

/*
* An IR LED must be connected to Arduino pin 13.
* An IR detector/demodulator must be connected to pin 11
* Version 001
*/

#include <IRremote.h>

// IR commands from AEG hob2hood device
const long SPEED_1 = 0xE3C01BE2;
const long SPEED_2 = 0xD051C301;
const long SPEED_3 = 0xC22FFFD7;
const long SPEED_4 = 0xB9121B29;
const long SPEED_OFF = 0x55303A3;
const long LIGHT_ON = 0xE208293C;
const long LIGHT_OFF = 0x24ACF947;

// IR commands for DAH
const long DAH_SPEED_1 = 0x23C01B31;
const long DAH_SPEED_2 = 0x6751C385;
const long DAH_SPEED_3 = 0x462FFF63;
const long DAH_SPEED_4 = 0x46121B93;
const long DAH_SPEED_OFF = 0x6430345;
const long DAH_LIGHT_ON = 0x64082965;
const long DAH_LIGHT_OFF = 0x62ACF932;


int IRpin = 11; // Pin fuer den IR Empfaenger
int LED = 13; // LED Pin
IRrecv irrecv(IRpin);
IRsend irsend;
decode_results results; // Die Ergebnisse decodieren

void setup()
{
Serial.begin(9600); // Serielle Ausgabe
irrecv.enableIRIn(); // IR Empfaenger starten
pinMode(LED, OUTPUT);
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);


if (results.value == 0xC40BF)
{
for (int i = 0; i < 3; i++)
{
irsend.sendSony(0xC40BF, 12);
delay(40);
}
}

/*
else if (results.value == 0xD051C301)
{
for (int i = 0; i < 3; i++) {
irsend.sendSony(0x6751C385, 12);
delay(40);
}
}
*/
irrecv.resume();
}

}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.07.2015, 10:07
Beitrag #8
RE: IR-Signalübersetzer
Ich kann auch nirgend einen Hinweis sehen, dass er über den Pin 13 senden soll.
Du hast den Pin 13 der Variablen "LED" zugewiesen, aber weiter nicht. Und ich glaube die Sende-LED verwendet den Pin 3. Die ist in der Lib festgelegt, bin mir da aber nicht so sicher, da ich mit IR noch nicht gesendet habe. Versuche mal mit Pin 3. Hier kannst du es nochmal nachlesen.

Auch ist es merkwürdig, dass die HEX-Werte die du sendest (0xC40BF), deutlich kürzer sind als die in deiner Tabelle. Aus meiner Erinnerung sind diese zu kurz, aber da kann ich falsch liegen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste