boxtec Forum
Microcontroller => Arduino General => : palmerx April 16, 2013, 09:57:44 PM
-
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:
http://www.linksprite.com/product/showproduct.php?lang=en&id=64 (http://www.linksprite.com/product/showproduct.php?lang=en&id=64)
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: https://github.com/shirriff/Arduino-IRremote (https://github.com/shirriff/Arduino-IRremote)
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: <title>Arduino-IRremote/IRremote.cpp at master • shirriff/Arduino-IRremote • GitHub</title>
Kann mir jemand sagen was ich falsch mache?
Bin für jede Hilfe dankbar.
Mit freundlichen Grüssen,
Marc
-
Nach dem Compiler habe ich duzende Fehler in der IRremote.cpp
erster hier: <title>Arduino-IRremote/IRremote.cpp at master • shirriff/Arduino-IRremote • GitHub</title>
Kann mir jemand sagen was ich falsch mache?
Sieht für mich aus, als hättest Du eine HTML-version der Dateien runtergeladen und nicht die wirklichen Dateien.
Versuch mal den link hier: https://github.com/shirriff/Arduino-IRremote/archive/master.zip (https://github.com/shirriff/Arduino-IRremote/archive/master.zip)
-
Super DANKE!! Genau diese Hilfe habe ich gebraucht.
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? Ich habe von AMX RTI Crestron usw ganze Libarys voll mit solchen Hex Data:
muss ich da den Sendebefehl ändern? irsenhex?
In IRremote ist das nicht eingebaut. Mit sendraw kann man das im Prinzip machen, aber man muss vorher die hex Codes selbst umrechnen:
http://www.hifi-remote.com/infrared/IR-PWM.shtml (http://www.hifi-remote.com/infrared/IR-PWM.shtml)
Wäre ja auch kein spannendes Hobby, wenn es zu einfach wäre. :P
-
Uiuiuiu das ist ja ein harter brocken...
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.
Schade dann nützen auch meine risigen Libarys nichts....
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: :D ;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!
-
Habs glaub selbst geschafft!!! Irgendwie wird der erste Wert des RAW Codes nicht verwendet.... keine Ahnung wieso....?!
Der erste Wert repräsentiert, glaube ich, die pause zwischen den Codes.
-
Hat mir jemand ne Lösung:
Wenn der IR RAW Code im Serial Monitor erscheint
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};
soll mir nach delay(100);
dieser IR RAW Code gesendet werden:
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};