IR Senden geht nicht - Anfänger braucht Starthilfe

Hallo zusammen

Habe erst gerade angefangen mit Arduino und schon RS232 gesendet über ein RS232 Shield (Projektor ON/OFF) und sonstige einfache Sachen gemacht.

Nun habe ich mir das IR Shield gekauft für den Arduino UNO:

Danach habe ich unter

C:\Users\PCNAME\Documents\Arduino\libraries\Infrarot

den Ordner für die IR Libary erstellt:

Da rein habe ich die Files

IRremote.ccp, IRremote.h, IRremoteInt.h, keywords.txt LICENCE.txt

von dieser Seite gepackt: GitHub - Arduino-IRremote/Arduino-IRremote: Infrared remote library for Arduino: send and receive infrared signals with multiple protocols

Danach habe ich folgendes Scetch gemacht um auf den high ein am Digital Eingang 1 einen IR code zu senden:

Libary eingefügt: Infrarot

#include <IRremote.h>
//"Marcs IR sende Versuch 2"

IRsend irsend;

void setup() {
        Serial.begin(9600);
        pinMode(2, INPUT_PULLUP);
}

void loop() {
        int eingang2 = digitalRead(2);
        if(eingang2 ==HIGH)
        {
                irsend.sendNEC (0x2FD48B7, 32);
                delay(40);
        }
}

Nun folgendes Problem:

Nach dem Compiler habe ich duzende Fehler in der IRremote.cpp

erster hier: Arduino-IRremote/IRremote.cpp at master • shirriff/Arduino-IRremote • GitHub

Kann mir jemand sagen was ich falsch mache?

Bin für jede Hilfe dankbar.

Mit freundlichen Grüssen aus der Schweiz,

Marc

Der erste Fehler ist, daß Du nicht alle Fehlermeldungen einfügst. Bitte alles.
Grüße Uwe

Ach so sorry, habs raus ich habe irgendwie die Falschen Files runtergeleden:

Wenn jemand noch solch einen Fehler hat hier wäre die richtige Adresse:

https://github.com/shirriff/Arduino-IRremote/archive/master.zip

Ich bin so frech und frage noch was weiteres:

Ist es möglich einen IR HEX String zu senden? Ich habe von AMX RTI Crestron usw ganze Libarys voll mit solchen Hex Data:

z.B: Loewe Taste 0 Blutech DVD Player

0000 0072 0013 0003 0020 0030 0010 0010 0010 0010 0010 0020 0010 0010 0010 0020 0010 0010 0010 0010 0010 0020 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0010 0040 0010 1197 0020 0030 0010 0040 0010 1197

muss ich da den Sendebefehl ändern? irsenhex?

Vielen Dank für eure Hilfe!

Marc

Ist es möglich einen IR HEX String zu senden?

Grundsätzlich schon, aber dazu müsstest Du auch wissen, wie lange ein logisches Bit in diesem Code dauert. Da dies nicht standardisiert ist, müsstest Du das auch noch herausfinden. Woher hast Du denn diese Hex-Codes?

Ach so das ist ja auch nicht so einfach... Ich habe eine Datenbank von RTI darin habe ich fast jede erdenkliche Audio/Video IR Fernbedienung abgelegt. DIes gilt auch für rS232 bedienbare Geräte.

Ich habe mich nun mal daran gemacht den IR Code einzulesen und dies im Serial Monitor erhalten:

F4BA2988

Unknown encoding: F4BA2988 (32 bits)

Raw (68): 5372 4550 -4300 650 -1600 650 -1550 600 -1600 650 -450 650 -450 650 -450 650 -450 700 -450 650 -1550 600 -1600 650 -1550 650 -450 650 -450 650 -500 650 -450 650 -450 600 -500 650 -1550 650 -450 650 -450 650 -450 650 -450 700 -450 650 -450 650 -1550 650 -450 650 -1550 650 -1550 650 -1600 650 -1550 650 -1550 650 -1550 650

Dann habe die -Zeichen weg gemacht und versucht dies zu senden in folgendem Scetch:

#include <IRremote.h>

IRsend irsend;

unsigned int Raw[98] = {5372,4550,4300,650,1600,650,1550,600,1600,650,450,650,450,650,450,650,450,700,450,650,1550,600,1600,650,1550,650,450,650,450,650,500,650,450,650,450,600,500,650,1550,650,450,650,450,650,450,650,450,700,450,650,450,650,1550,650,450,650,1550,650,1550,650,1600,650,1550,650,1550,650,1550,650};

void setup()
{
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);

}

void loop()

{
int eingang2 = digitalRead(2);

if(eingang2 == HIGH)
{
irsend.sendRaw(Raw, 96, 38); // Sony TV power code
delay(40);
}

}

Kann mir jemad sagen was ich falsch mache um nun RAW wieder zu senden?

Vilen Dank für die Hilfe!

Habs glaub selbst geschafft!!! Irgendwie wird der erste Wert des RAW Codes nicht verwendet.... keine Ahnung wieso....?!

Mein Test schaut nun so aus und der TV ging auch an/aus: :smiley: ;D

#include <IRremote.h>

IRsend irsend;

unsigned int Raw[80] = {4550,4300,650,1600,650,1550,600,1600,650,450,650,450,650,450,650,450,700,450,650,1550,600,1600,650,1550,650,450,650,450,650,500,650,450,650,450,600,500,650,1550,650,450,650,450,650,450,650,450,700,450,650,450,650,1550,650,450,650,1550,650,1550,650,1600,650,1550,650,1550,650,1550,650};

void setup()
{
Serial.begin(9600);
pinMode(2, INPUT_PULLUP);
pinMode(13, OUTPUT);

}

void loop()

{
int eingang2 = digitalRead(2);

if(eingang2 == HIGH)
{
digitalWrite(13, HIGH);
delay(150);
digitalWrite(13, LOW);

irsend.sendRaw(Raw, 200, 38); // Samsung ON_OFF

digitalWrite(13, HIGH);
delay(400);
digitalWrite(13, LOW);
}

}

Kann mir jemand sangen ob es möglich ist einen IR "überstezer" zu bauen bzw hat mir jemad einen Lösungsansatz?

Ich dachte da an folgende Variablen:

if

unsigned int ir_input_signal_1[80] = {4550,4300,650,1600,650,1550,600,1600,650,450,650,450,650,450,650,450,700,450,650,1550,600,1600,650,1550,650,450,650,450,650,500,650,450,650,450,600,500,650,1550,650,450,650,450,650,450,650,450,700,450,650,450,650,1550,650,450,650,1550,650,1550,650,1600,650,1550,650,1550,650,1550,650};

then send

unsigned int ir_output_signal_1[80] = {2450,500,1300,450,700,500,1250,500,700,500,1250,500,700,500,650,550,700,450,1300,500,700,450,1300,500,1250,500,1250,550,650,500,700,500,1300,450,700,500,650,500,1300,500,650};

Vielen Dank für eure sehr geschätzte Hilfe!

Hi,

ich habe das Thema vor wenigen Tagen mit dem Empfangen durch. In dem Beispiel ist ein sehr schönes Fehlerhandling für die RAW-Codes. Wenn du das in einen Testaufbau einspielst, dann kannst du die RAWS aus lesen (Serial Monitor) und mit einer sehr verzweigten IF Fälle definieren, wann welcher Hex genutzt wird.

Sinngemäß... wenn Taste X dann sende HEX YZ.