Frage zu Ardunio Mega IR Control

Hallo habe heute meinen arduino mit einem "IR-Empfänger" und einem "IR-Sendediode" ausgestattet

dann habe ich mit diesem sketch den code abgefragt von der fernbedienung meines fernsehers (ein/ausschalter)

int pwr_high = 4;  //Sensor pin 1
int pwr_low = 3;    //Sensor pin 2
int ir_pin = 2;    //Sensor pin 3, the data pin
int data[12];

void setup() {
  pinMode(pwr_high, OUTPUT);
  pinMode(pwr_low, OUTPUT);
  pinMode(ir_pin, INPUT);
  digitalWrite(pwr_high, HIGH);    //Sensor pin 1 always high
  digitalWrite(pwr_low, LOW);  //Sensor pin 2 always low
  Serial.begin(9600);
}

void loop() {
  data[0] = pulseIn(ir_pin, LOW);    //Start measuring bits --the sensor defaults high, goes low on infrared
  data[1] = pulseIn(ir_pin, LOW);
  data[2] = pulseIn(ir_pin, LOW);
  data[3] = pulseIn(ir_pin, LOW);
  data[4] = pulseIn(ir_pin, LOW);
  data[5] = pulseIn(ir_pin, LOW);
  data[6] = pulseIn(ir_pin, LOW);
  data[7] = pulseIn(ir_pin, LOW);
  data[8] = pulseIn(ir_pin, LOW);
  data[9] = pulseIn(ir_pin, LOW);
  data[10] = pulseIn(ir_pin, LOW);
  data[11] = pulseIn(ir_pin, LOW);

  Serial.println("-----");    //Send them all
  Serial.println(data[0]);
  Serial.println(data[1]);
  Serial.println(data[2]);
  Serial.println(data[3]);
  Serial.println(data[4]);
  Serial.println(data[5]);
  Serial.println(data[6]);
  Serial.println(data[7]);
  Serial.println(data[8]);
  Serial.println(data[9]);
  Serial.println(data[10]);
  Serial.println(data[11]);
}

Wie bekomme ich es hin das jetzt mein ir sender diese signal wieder abgibt. damit mein arduino meinen fernseher ein/ausschaltet??? ich habe ein Arduino Mega 2560, Infrarot-Empfänger IR-R-36 von Conrad, und die ir sendediode http://www.conrad.de/ce/de/product/181819/IR-EMPFAeNGER-IR-R-36 http://www.conrad.de/ce/de/product/171140/IR-SENDEDIODE-TSAL-6200

hier ist der code für meinen ein/ausschalter der mir ausgegeben wurde:

-----
935
1818
935
930
961
935
930
935
930
934
1812
961
-----

hoffe ihr könnt mir helfen. mfg. kevin

Du hast nur die Zeiten der Pausen des Rechtecksignals aufgenommen. Hast Du es mit dieser Bibiothek versucht? http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html

digitalWrite(pwr_high, HIGH);    //Sensor pin 1 always high
digitalWrite(pwr_low, LOW);    //Sensor pin 2 always low

Den Sensor über Ausgänge des Microcontroller mit Strom zu versorgen gefällt mir persönlich gar nicht und ich ich werde es nie machen.

Grüße Uwe

ja habe ich schon ausprobiert. mit dieser Bibiothek funktioniert es nicht bei mir.... schon wenn ich den beispiel code auf den arduino laden will kommen nur fehlermeldungen!

Hast Du die Bibiothek heruntergeladen und an den richtigen Ort kopiert? Kopierst Du bitte alle Fehlermeldungen. Im Bild sind die meisten versteckt. Grüße Uwe

Hier sind die fehlermeldungen:

In file included from F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:13:
F:\apps\arduino-1.0\libraries\IRremote\/IRremoteInt.h:15:22: error: WProgram.h: No such file or directory
In file included from F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:13:
F:\apps\arduino-1.0\libraries\IRremote\/IRremoteInt.h:87: error: 'uint8_t' does not name a type
F:\apps\arduino-1.0\libraries\IRremote\/IRremoteInt.h:88: error: 'uint8_t' does not name a type
F:\apps\arduino-1.0\libraries\IRremote\/IRremoteInt.h:89: error: 'uint8_t' does not name a type
F:\apps\arduino-1.0\libraries\IRremote\/IRremoteInt.h:92: error: 'uint8_t' does not name a type
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::mark(int)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:173: error: 'delayMicroseconds' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::space(int)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:181: error: 'delayMicroseconds' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRsend::enableIROut(int)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:200: error: 'OUTPUT' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:200: error: 'pinMode' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:201: error: 'LOW' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:201: error: 'digitalWrite' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In constructor 'IRrecv::IRrecv(int)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:217: error: 'volatile struct irparams_t' has no member named 'recvpin'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:218: error: 'volatile struct irparams_t' has no member named 'blinkflag'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::enableIRIn()':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:241: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:242: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:246: error: 'volatile struct irparams_t' has no member named 'recvpin'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:246: error: 'INPUT' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:246: error: 'pinMode' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::blink13(int)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:252: error: 'volatile struct irparams_t' has no member named 'blinkflag'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:254: error: 'OUTPUT' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:254: error: 'pinMode' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In function 'void __vector_15()':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:268: error: 'volatile struct irparams_t' has no member named 'recvpin'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:268: error: 'digitalRead' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:271: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:273: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:275: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:284: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:285: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:287: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:293: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:295: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:300: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:302: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:310: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:321: error: 'volatile struct irparams_t' has no member named 'blinkflag'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:323: error: 'B00100000' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:326: error: 'B11011111' was not declared in this scope
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'void IRrecv::resume()':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:332: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:333: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'int IRrecv::decode(decode_results*)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:343: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:344: error: 'volatile struct irparams_t' has no member named 'rcvstate'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeNEC(decode_results*)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:392: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:400: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeSony(decode_results*)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:433: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:443: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp: In member function 'long int IRrecv::decodeRC5(decode_results*)':
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:518: error: 'volatile struct irparams_t' has no member named 'rawlen'
F:\apps\arduino-1.0\libraries\IRremote\IRremote.cpp:529: error: 'volatile struct irparams_t' has no member named 'rawlen'

Arduino 1.0 hat einige Änderungen gebracht und eine Bibiothek umgenannt: "WProgram.h" Benutze die alte Version des IDE (0023) oder ändere in der Bibiothek IRremoteInt.h das include WProgram.h in Arduino.h

siehe: http://arduino.cc/en/Main/ReleaseNotes

  • The WProgram.h file, which provides declarations for the Arduino API, has been renamed to Arduino.h. To create a library that will work in both Arduino 0022 and Arduino 1.0, you can use an #ifdef that checks for the ARDUINO constant, which was 22 and is now 100. For example:

if defined(ARDUINO) && ARDUINO >= 100

include "Arduino.h"

else

include "WProgram.h"

endif

Grüße Uwe

danke jetzt kann ich den code auslesen… er hat für den ein/ausschalter den code 80C

Decoded RC5: 80C (12 bits)
Raw (24): -6608 950 -850 900 -850 1800 -850 950 -850 900 -850 950 -800 950 -850 950 -800 950 -1750 900 -850 1800 -850 950

wo muss ich diesen code einfügen?

anhand des IRsendDemo beispiels:

/*
 * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
 * An IR LED must be connected to Arduino PWM pin 3.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

IRsend irsend;

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

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendSony(0xa90, 12); // Sony TV power code
      delay(100);
    }
  }
}

Hier:

irsend.sendSony(0xa90, 12); // Sony TV power code

Die 2. Zahl gibt an wieviele Bit versendet werden. Diesen Wert findest Du in: http://www.sbprojects.com/knowledge/ir/index.php . Auf der linken Seite findest Du di verschiedene Code der verschiedenen Hersteller.

Grüeß Uwe

kann ich nicht einfache den ausgelesenen code dort eingeben?

ich habe jetzt diesen code eingefügt:

 irsend.sendRC5(0x80C, 12);

aufgrund der mit dem sketch IRrecvDump abgefragten code:

80C
Decoded RC5: 80C (12 bits)
Raw (24): -32526 950 -850 950 -800 1850 -850 900 -850 950 -800 950 -850 950 -800 950 -850 950 -1700 950 -800 1850 -800 950

wenn ich aber diesen code ausführe geht mein fernseher nicht aus…:

/*
 * IRremote: IRsendDemo - demonstrates sending IR codes with IRsend
 * An IR LED must be connected to Arduino PWM pin 3.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * http://arcfn.com
 */

#include <IRremote.h>

IRsend irsend;

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

void loop() {
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendRC5(0x80C, 12); // Mein fernseher sollte eigentlich ausgehen
      delay(100);
    }
  }
}

was könnte ich falsch gemacht haben?

PUSH

hat denn keiner ne lösung für mich er sendet einfach nichts aus...

Funktioniert deine IR-Diode? Einfach mal Digitalkamera/Handykamera vor die Diode halten. Dann würde ich gern wissen, warum due den Code mehrfach sendest? Klappt es denn in einem Sketch, den du auf das nötigste reduzierst? Quasi Einbindung der IR-Bibliothek, 1x Ausschaltcode senden in der setup().

Ja die IR-Diode funktioniert einwandfrei... ich habe einfach den "IRsendDemo" code genommen und den aus meiner fernbedienung ausgelesenen code dort eingefügt... aber es funktioniert nicht. kann mir vielleicht jemand einen source code schreiben der funktionieren könnte(anhand meiner ausgelesenen taste der fernbedienung).

hab es leider immernoch nicht hinbekommen. die ir-led leuchtet bei diesem bsb.sketch einfach nicht auf.... hoffe das mir bald jemand helfen kann...

mfG. Kevin

Das Problem ist wohl, dass sich niemand so richtig mit der IR-Bibliothek auskennt. Daher ist es nahezu unmöglich irgendwelche Aussagen zu treffen. Kannst du denn erklären, warum im Sketch der Code mehrfach übertragen werden soll? Hab ich schon mal gefragt, hast du vermutlich übersehen... Einerseits schreibst du, dass die IR-Diode einwandfrei funktioniert, andererseits sagst du dass die Diode mit dem Sketch nicht leuchtet. Hast du mal andere Codes probiert, um zu sehe, ob überhaupt was ausgegeben werden kann? Vielleicht kannst du auch mal Versuchen den Code manuell, also ohne die Bibliothek zu senden.

dieser sketch ist ja nur der beispiel sketch... habe da nur mein ir code eingefügt... kenne mich nich damit aus und weiss auch nicht warum er mehrfach sendet.. überprüft hab ich die ir-led indem ich ein ausgang auf high gesetzt habe und dann per handy-kamera geschaut habe ob sie leuchtet. einen anderen code kenne ich nicht und wie ich es manuell ausgeben kann das weiss ich leider nicht.

also ich habe schon alles hinbekommen. eine home-automation u.v.m. das senden mit "ir send" aber leider noch nicht.