Archiv verlassen und diese Seite im Standarddesign anzeigen : Codes von einer Fernbedienung
Ich möchte meinen Robby mit einer Fernbedienung steuern! Dafür muss ich aber die Codes der einzelnen Taster kennen, wie sie übertragen werden! Ich hab eine Fernbedienung von Philips, die Nummer ist "RC 2543/01". Ich möchte den RC5 IR - Datenrahmen gebrauchen. Kennt einer eine Seite, wo die ganzen Codes stehen?
Danke
Garret
Hallo Garret,
Am besten findet man sowas mit Google.
http://www.sprut.de/electronic/ir/rc5.htm
Viele Grüße
Flite
Ich will den Robby mit der "Volumen +" Taste fahren lassen, und nur mit der Taste. Weiß jemand, was ich da eingeben muss, damit der Roboter weiß, welche Taste gedrückt wurde? Ich hab das Problem, dass der Roboter bei egal welcher Taste nach vorne fährt.
Ich hab das dahin geschrieben "if LBYTE =16 and HBYTE =32 then goto vorwärts" Die Geräteadresse ist 32 und das Kommando ist 16
Hallo Garret,
Hm, sieht auf den ersten Blick doch ganz gut aus. Kommando 16 ist tatsächlich der Code für 'Volumen +' . Wenn ich den Artikel in dem angegebenen Link richtig verstanden habe, gibt es allerdings keine Geräteadresse 32, sondern nur 0..31.
Vielleicht könntest du mehr von deinem Programm veröffentlichen, damit man den Gesamtablauf besser verfolgen kann.
MfG
GaronG
hier ist das Hauptprogramm!
gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
beep 368,10,0:pause 50
'------- IR-FORMAT EINSTELLEN----------------
'gosub REC80
gosub RC5
'--------------------------------------------
'--- WARTEN AUF CODE UND ANZEIGEN ---
'--------------------------------------------
#LOOP
gosub GET_IRDATA
if LBYTE and HBYTE =&HFF then goto LOOP
if LBYTE =&H0C and HBYTE =&H20 then goto stop
if LBYTE =&H02 and HBYTE =&H20 then goto vorwärts
ADR=HBYTE:CMD=LBYTE:pause 50
'------- DISPLAY ADDRESS --------------------
gosub LED1ON
for counter= 1 to ADR
gosub LED4ON:pause 5:gosub LED4OFF:pause 30
next
pause 50
gosub LED1OFF:gosub LED2ON:pause 50
for counter= 1 to CMD
gosub LED4ON:pause 5:gosub LED4OFF:pause 30
gosub LEDSOFF
goto loop
'-------------------------------------------
#vorwärts
SYS FWDR:SYS FWDL:SPEED_L=100:SPEED_R=100:goto loop
#stop
SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=0:goto loop
Jetzt ist das Problem, dass er zwar nur bei der Taste "Volumen +" fährt, aber ich hab ja auch dadrin geschrieben, dass, wenn ich die "Standby" Taste drücke, dass er dann stehen bleibt. Aber er bleibt nicht stehen, und ich weiß nicht warum. In meinen Augen stimmt das Programm.
Danke
Garret
Hallo Garret,
auf den ersten Blick sehe ich in deinem Programm auch nichts böses. Vielleicht sendet deine Fernsteuerung keine '12' (bzw. &H0C). Das kannst du aber leicht testen. Im Verzeichnis TOOLS steht ein Programm DISPLAY_IR_CODE. Verändere den Code so, dass er dir das Ergebnis deiner Tastendrücke statt mit LEDs direkt am Bildschirm ausgibt. Funktioniert mit "Print" Kommando und dem Programm Hyperterminal von Windows. Kriegst du das hin?
MfG
GaronG
Arexx-Henk
22.03.2005, 20:04
Hallo,
mein Robby functioniert mit RC5 codes von einem universal fernbedienung.
Vol+ = 17 = &H11
Vol- = 16 = &H10
Prog+ = 32 = &H20
Prog- = 33 = &H21
dass program befragt/benutzt nur die LBYTE und functioniert einwandfrei.
gruss
Henk
Hallo Garret,
die RC5-Codes der meisten Fernbedienungen sind:
Taste ADR CMD
-----------------------------
ON/OFF 00/32 12
Teletext ON 00/32 60
Teletext OFF 00/32 63
CH+ 00/32 32
CH- 00/32 33
M(ute) 00/32 13
VOL- 00/32 17
VOL+ 00/32 16
AV 00/32 56
--/- 00/32 10
1 00/32 01
2 00/32 02
3 00/32 03
4 00/32 04
5 00/32 05
6 00/32 06
7 00/32 07
8 00/32 08
9 00/32 09
0 00/32 00
FF 00/32 52
REW 00/32 55
STOP 00/32 54
PAUSE 00/32 36
PLAY 00/32 50
REC 00/32 46
Dabei wechselt der Wert von ADR bei jedem Tastendruck hier zwischen 0 und 32, ist also wenig hilfreich bei der Abfrage.
Der CMD-Code (LBYTE) steht in der letzten Spalte.
Gruß Dirk
Ich denk mal schon, dass der eine '12' sendet! Bei dem Beispielprogramm DISPLAY_IR_CODE kann man ja zählen, wie oft LED4 blinkt. Das hab ich gemacht, und bei der Standby Taste blinkt sie 12 mal. In der einen Liste steht bei Standby ja auch 12.
Das er fahren soll, das geht ja, nur wenn ich eine andere Taste drücke (auch die Standby), dann fangen die LEDs an zu blinken.
Hallo Garret,
die LEDs fangen an zu blinken, wenn KEINE der 3 if-Bedingungen erfüllt ist. Denn dann läuft das Programm in den Bereich --- DISPLAY ADDRESS ----. Dieses Blinken kann übrigens ganz schön lange dauern (bei Adresse H20 und Command 12 dauert das immerhin 32,8 sec, falls ich mich nicht verrechnet habe).
Das beduetet, die Bedingung für 'goto stop' wurde nicht erfüllt. Entweder wurden nicht die richtigen Codes gesendet (einer von BEIDEN) oder der Compiler löst die Hierarchie der Rechenzeichen nicht richtig auf. (Hab ich bei Mini-Compilern schön öfter gesehen). Lösung: Klammern setzen, die Eindeutigkeit bringen, also
if ((bedingung1 = x) and (bedingung2 = y)) then goto ....
MfG
GaronG
Danke, ich probiers gleich mal aus!
Also mit den Klammern funktioniert es auch nicht. Dann denk ich mal, muss es am Code liegen, anders kann ich's mir nicht vorstellen.
Check nochmal den Programmdurchlauf. Eine einfache Debug-Methode wäre, ein bestimmtes BEEP-Signal da einzubauen, wo du erwartest, dass das Programm durchlaufen muss.
MfG
GaronG
@GaronG
Ich hab rausgefunden, wie es geht! Ich hab die Nachricht von Dirk nicht richtig gelesen. Er schreibt ja, dass die Adresse sich bei jedem Tastendruck ändert, entweder 00 oder 32. Also hab ich einfach das geschrieben:
if (LBYTE =&H02) and (HBYTE =&H00 or HBYTE =&H20) then goto vorwärts
und jetzt geht es. Ich kann den Roboter mit der 2 nach vorne fahren lassen, mit der 8 nach hinten und mit der Standby Taste bleibt er stehen.
Jetzt probier ich noch mit den Tasten 4 und 6 ihn nach links bzw. nach rechts fahren lassen. UNd mit der Volumen + und - ihn schneller oder langsamer fahren lassen.
Garret
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.