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
30.07.2015, 10:47
Beitrag #9
RE: IR-Signalübersetzer
Ja hattest recht, war der Pin3, Danke.
Die Hex Codes kommen von einer Testfernbedienung. Wird noch geändert.
Problem ist jedoch noch, dass sobald 0xC40BF empfangen wird und der hex gesendet wurde, nichts mehr geht.

/*
* 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 = 3; // 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, 11:01
Beitrag #10
RE: IR-Signalübersetzer
pinMode(LED, OUTPUT);
Das brauchst du nicht, da es in der Lib festgelegt ist.

Alles andere sieht richtig aus, ich kann mir da nicht erklären, wo das Problem liegt. Evtl. an obiger Zeile, die mal auskommentieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.07.2015, 13:34
Beitrag #11
RE: IR-Signalübersetzer
(30.07.2015 11:01)hotsystems schrieb:  pinMode(LED, OUTPUT);

Hab ich raus genommen.
Hab dann mal auf Raw Codes gewechselt und mit einer Testfernbedienung die DAH simuliert. Das sind die kürzeren IR Codes(C40BF).
Tippe ich nun irgendwelche Tasten der Testfernbedienung, werden diese seriell ausgegeben. Sobald ich eine Taste aus den if-Schleifen wähle, hängt das Programm.
Das steckt doch irgendwie in einer Schleife, oder?



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

#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 = 0x4D06F7CD;
const long DAH_SPEED_UP = 0xD366A636;
const long DAH_SPEED_DOWN = 0x9A38260A;
const long DAH_SPEED_FULL = 0xF7B0BF8F;
const long DAH_LIGHT_ON = 0x4668257;
const long DAH_LIGHT_OFF = 0x4668257;

//IR commands for DAH Raw
unsigned int raw2[17] = {650,750,650,800,1350,1450,650,750,650,800,1350,2850,600,800,650,750,2100}; //light on/off
unsigned int raw3[17] = {650,750,650,1450,1350,800,650,750,650,1450,1350,2200,600,1500,600,800,1350}; //dah on/off
unsigned int raw4[15] = {600,850,2000,850,550,850,550,850,2050,850,550,2250,2000,1550,1300}; //dah up
unsigned int raw5[15] = {550,1550,1250,850,600,850,550,1550,1300,800,600,2900,1300,1550,1300}; //dah down
unsigned int raw6[15] = {600,800,1350,1450,650,800,600,800,1350,1450,650,2150,1350,2200,1350}; //dah voll an

int IRpin = 11; // Pin fuer den IR Empfaenger
int LED = 3; // 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
}

void loop() {

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

if (results.value == 0xC40BF){ //light on
irsend.sendRaw(raw2,17,38);
delay(5000);
}
else if (results.value == 0xCC03F){ //light off
irsend.sendRaw(raw2,17,38);
delay(5000);
}
else if (results.value == 0xCF00F){ //DAH on
irsend.sendRaw(raw3,17,38);
delay(5000);
}
else if (results.value == 0xCD02F){ //DAH Speed 2
irsend.sendRaw(raw4,15,38);
delay(5000);
}
else if (results.value == 0xC10EF){ //DAH Speed 3
irsend.sendRaw(raw4,15,38);
delay(5000);
}
else if (results.value == 0xCB04F){ //DAH Speed 4
irsend.sendRaw(raw4,15,38);
delay(5000);
}
else if (results.value == 0xC08F7){ //DAH off
irsend.sendRaw(raw3,17,38);
delay(5000);
}
irrecv.resume();
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.07.2015, 13:55 (Dieser Beitrag wurde zuletzt bearbeitet: 31.07.2015 13:58 von hotsystems.)
Beitrag #12
RE: IR-Signalübersetzer
Warum machst du die Delay(5000) so lang?
Das macht hier sicher Probleme.
Da du ja 3 mal den Code senden möchtest, sind das immer 15 Sek.

Bau das doch zum testen so auf, das du nur eine Led einschaltest.
z.B. so:

if (results.value == 0xC40BF){ //light on

digitalWrite (6, HIGH);

}

usw.

Natürlich den Ausgang zuvor definieren.

Ach habe gerade gesehen, die Schleife 3 x senden ist raus.
Nehme den Delay mal komplett raus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.07.2015, 14:17
Beitrag #13
RE: IR-Signalübersetzer
(31.07.2015 13:55)hotsystems schrieb:  Nehme den Delay mal komplett raus.

Habe ich raus genommen. Bleibt immer noch hängen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.07.2015, 14:43
Beitrag #14
RE: IR-Signalübersetzer
Hast du denn mal versucht eine Led zu schalten?

Das ist aus einem bei mir funktionierenden Code:

// Wert aus IR-Fernbedienung lesen
if (irrecv.decode(&results))
{
if (results.value == 16724175) //1
{digitalWrite (12, HIGH);}

else if (results.value == 16738455) //0
{digitalWrite (12, LOW);}

irrecv.resume();
}

Ändere nur die IR-Werte und teste es damit.
Wenn das auch nicht läuft, habe ich keine Idee mehr.
ich vermute, es liegt an deinen IR-Sendebefehlen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.07.2015, 14:51
Beitrag #15
RE: IR-Signalübersetzer
Ich habe gerade mal den seriellen Monitor geschlossen, nachdem das Programm hing.
Öffne ich den Monitor wieder, funktioniert genau ein Befehl, also auch Senden. Danach hängt es.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.07.2015, 15:37
Beitrag #16
RE: IR-Signalübersetzer
Wofür brauchst du aktuell den seriellen Monitor?
Ich sehe gar keine Ausgaben darauf.
Nimm den mal raus.
Alles merkwürdig. Huh

Hast du das mit den Leds mal getestet?
Dann sieht man, ob die Auswertung funktioniert.
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