PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Fernbedienung



robertthronhill
05.12.2004, 12:06
Hallo!

Ich habe folgendes Problem: Ich habe eine Fernbedienung, die anscheinend fast alle Tasten 2 mal sendet. Das heißt, dass alle Kommandos 2 Mal ausgeführt werden. Hat jemand eine Idee, wie ich das verhindern kann, bzw. wie ich in meinem Programm den entsprechenden Befehl nur einmal ausführen lassen kann?

Danke für die Antworten schon im Vorraus!

mfg
robertthronhill

robertthronhill
05.12.2004, 13:58
Kann man vielleicht einstellen, dass das nächste Kommando erst nach 80ms erfolgen kann und dass alles was davor kommt einfach ignoriert wird?

mfg
robertthronhill

freakysteve
05.12.2004, 19:12
Ich habe das selbe Problem.

Welche Fernbedienung verwendest du?

Mir war es eigentlich egal, weil ob der Robby jetzt ein bisschen länger vorwährts fährt oder nicht ist mir egal.

Aber probiers mit einer Pause von ein paar Millisekunden

mfg Stefan

robertthronhill
06.12.2004, 13:04
Ich verwende die Fernbedienung der Sony Stereoanlage RM-D170 (ist schon 10 Jahre alt). Das Ding sendet auf REC80. Ich hab das Problem teilweise gelöst. Und zwar so:

gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND 'zurück zum Auswahlmenü für die Fernbedienung

Aber irgendwie spielt mein Robby nach dem Befehleblock irgendwie verrückt und startet hinterher auch andere Programmteile.

mfg
robertthronhill

pebisoft
06.12.2004, 14:15
bei karstadt gibt es eine fernbedienung zum programmieren für ca 9 euro, woanders glaube ich auch (media-max). die sind sehr gut, damit steuere ich auch meinen ccrp5 und jetzt meinen "küchenbrettroboter" ohne probleme.
mfg pebisoft

robertthronhill
06.12.2004, 16:12
Kannst du mal bitte die genaue Pruoduktnummer, Hersteller und alles posten, dass ich mir die auch kaufen kann, weil die Fernbedienung geht mir auf den Geist :-& . Vielleicht kann sich ja jemand den Code von mir anschauen und mir sagen, ob ich vielleicht einen Logischen Fehler habe.



'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
'IIIIIIIIII MOBILE ROBOT EVALUATION PROGRAM IIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
' EINFACHES BEISPIEL ZUR BENUTZUNG EINER IR-FERNSTEUERUNG
' Für diese Demo benötigen Sie eine RC5 oder REC80 kompatible
' IR-Fernsteuerung, von der die ausgesendeten Codes bekannt sind.
' es werden 4 Kommandos erkannt und dazu benutzt die 4 LEDs zu schalten
' Die Fernsteuerkommandos sind für die als Zubehör erhältliche IR-Fernbedienung CV100
' (Best.Nr.349127) vereinbart, können aber natürlich beliebig geändert werden.
' Wenn Sie eine eigene Fernsteuerung verwenden wollen, deren Codes Sie aber nicht kennen
' finden Sie im Ordner TOOLS das Programm DISPLAY_IR_CODES.BAS, das es Ihnen ermöglicht
' diese Codes anzuzeigen.
'

'Folgende Kommandos sind vereinbart:
'32 - LED1 (P+)
'33 - LED2 (P-)
'17 - LED3 (V-)
'16 - LED4 (V+)

' ---------------------------------------------------------------------
' FUNKTION DES PROGRAMMS
'----------------------------------------------------------------------
'Die SYSTEM-ROUTINE COMNAV_STATUS liefert im Bezeichner IR_F ein Flag
'wenn ein IR-Signal empfangen wurde.

'Das Unterprogramm GET_IRDATA liefert in HBYTE die gesendete Adresse und in LBYTE
'die zugehörigen Kommandos.In diesem Beispiel werden nur die Kommandos ausgewertet und
'die LEDs danach geschaltet.

'------------------------------------------------------------------------
'RESOURCEN:
'Sie finden in allen Beispielen sämtliche Systemroutinen die zum Betrieb des
'Roboters notwendig sind.
'Viele davon greifen auf Hardwareresourcen zu, die Sie von C-Control her nicht
'kennen, deren genaue Funktionsweise aber im File "Project5_intern" erklärt ist.

' Für dieses Beispiel sind folgende SYSTEMROUTINEN relevant:
'
' POWER:
' gosub SUBSYS_PWR_ON ;Schaltet die Subsysteme EIN/AUS
' gosub SUBSYS_PWR_OFF

' AUSGABEN:
' gosub LED1ON ;zum Ein/Ausschalten der LED1 analog auch
' gosub LED1OFF ;LED 2bis 4
' gosub LEDSOFF ;schaltet alle LEDS aus
'
' SUBSYSTEM:
' SYS COMNAV_STATUS ;Abfrage des ACS/IR-COMM
' gosub GET_IRDATA ;liefert empfangene IR-Daten in HBYTE und LBYTE
' (jeweils FF wenn nichts empfangen wurde)
' gosub SEND_IRDATA ;Sendet die Daten in HBBYTE und LBYTE
' gosub REC80 ;Stellt das Format ein
' gosub REC80_INT ;Aktiviert den Interruptbetrieb mit REC80 Format
' gosub RC5 ;Stellt das Format ein
' gosub RC5_INT ;Aktiviert den Interruptbetrieb mit RC5 Format

' ANTRIEB
' SYS REVR ;Kette rückwärts laufen lassen R/L
' SYS RERL
' SYS FWDR ;Kette vorwärts laufen lassen R/L
' SYS FWDL
' SYS ROTR ;Auf der Stelle nach R/L drehen
' SYS ROTL


'--------------------------
'------ I/O PORTS ---------
'--------------------------
'- INTERFACE LCD/EXTPORT --
define sdio port[1]
define sclio port[3]
define strobe port[4]
'-- INTERFACE COM/NAV -----
define DATALINE port[1]
define CLOCKLINE port[2]
'---- FREIE PORTS ---------
define FREIP7 port[7]
define FREIP8 port[8]
define FREIP9 port[9]
define FREIP10 port[10]
define FREIP11 port[11]
define FREIP12 port[12]
define FREIP13 port[13]
define FREIP14 port[14]
define FREIP15 port[15]
define FREIP16 port[16]
'--------------------------
'------ SENSORS ---------
'--------------------------
define LIGHT_L ad[7]
define LIGHT_R ad[6]
define SYS_VOLTS ad[3]
define CHRG_CURRENT ad[2]
define SYS_CURRENT ad[1]
define MIC ad[4]
define TOUCH ad[5]
'---------------------------
'------ DRIVE -------------
'---------------------------
define SPEED_L da[1]
define SPEED_R da[2]
define REV_L port[6]
define REV_R port[5]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
'--- INTERFACE BUFFER ----
define LBYTE byte[1]
define HBYTE byte[2]
define SUBCMD byte[3]
'---- OPERATION DATA ------
define EXTPORT byte[4]
define LED1_F bit[29]
define LED2_F bit[30]
define LED3_F bit[31]
define LED4_F bit[32]
define SYSTEM_STATUS byte[5]
define ACSL_F bit[33]
define ACSR_F bit[34]
define IR_F bit[35]
'--------------------------
'---- USER MEMORY -------
'--------------------------
define DATA byte[6]
'--- SYSTEMROUTINEN -----------
define PLM_SLOW &H01C4
define SYSTEM &H01C9
define COMNAV &H0154
'- ERWEITERTE SYSTEM ROUTINEN -
define REVR &H0101 'ANTRIEB RECHTS RÜCKWÄRTS
define REVL &H0106 'ANTRIEB LINKS RÜCKWÄRTS
define FWDR &H010B 'ANTRIEG RECHTS VORWÄRTS
define FWDL &H0110 'ANTRIEB LINKS VORWÄRTS
define ROTR &H0115 'RECHTS DREHEN
define ROTL &H0119 'LINKS DREHEN
define REV &H011D 'RÜCKWÄRTS
define FWD &H0121 'VORWÄRTS
define COMNAV_STATUS &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER
define ACS_LO &H01E1 'ACS POWER
define ACS_HI &H01E9 '
define ACS_MAX &H01F1 '
define SEND_TLM &H014A 'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
define SEND_SPEEDR &H0134 'SENDET TLM KANAL 8,PLM RECHTS
define SEND_SPEEDL &H013A 'SENDET TLM KANAL 7,PLM LINKS
define SEND_SYSSTAT &H0144 'SENDET TLM KANAL 0,SYSTEM STATUS
'(FLAGS für ACS,FWD/REV, ACS_LO/HI/MAX)
define x word




'---------- INIT---------------
FREIP7=off:FREIP8=off:FREIP9=off:FREIP10=off
FREIP11=off:FREIP12=off:FREIP13=off:FREIP14=off
FREIP15=off:FREIP16=off

gosub SUBSYS_PWR_ON
beep 368,10,0:pause 50
'---- SYSTEM OPERATION MODE (NO INTERRUPT) ----
gosub NO_ACS_INT:beep 368,10,0:SYS ACS_MAX
'------------ ANTRIEB -------------------------
REV_L=on:REV_R=on:SYS PLM_SLOW
'--------- IR-DATENFORMAT -----------------
gosub REC80

'--------------------------------------------
'--- STEUERUNG MIT SONY FERNBEDIENUNG ---
'--------------------------------------------
#loop
pause 10:gosub LEDSOFF
SYS COMNAV_STATUS:if IR_F=off then goto loop
'---------- KOMMANDO INTERPRETER --------------
#EX_COMMAND
gosub GET_IRDATA
if LBYTE=29 then gosub CONTINUE
if LBYTE=0 then gosub TASTE1
if LBYTE=1 then gosub TASTE2
if LBYTE=2 then gosub TASTE3
if LBYTE=4 then gosub TASTE5
if LBYTE=5 then gosub TASTE6
if LBYTE=6 then gosub TASTE7
'if LBYTE=8 then gosub TASTE9
if LBYTE=32 then gosub TASTE10
'if LBYTE=33 then gosub TASTE11
goto loop

'--------- CONTINUE -----------------------
#CONTINUE
print TIMER
print "KEYNR=29"
print "---"
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND

'--------- 1 ----------------------------------
#TASTE1
SPEED_L=150:SPEED_R=150:SYS ROTL:pause 5
SPEED_L=0 :SPEED_R=0
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND

'--------- 2 ----------------------------------
#TASTE2
SPEED_L=150:SPEED_R=150:SYS FWD:pause 30
SPEED_L=0 :SPEED_R=0
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND

'--------- 3 ----------------------------------
#TASTE3
SPEED_L=150:SPEED_R=150:SYS ROTR:pause 5
SPEED_L=0 :SPEED_R=0
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND

'--------- 5 ----------------------------------
#TASTE5
SPEED_L=150:SPEED_R=150:SYS ROTL:pause 42
SPEED_L=0 :SPEED_R=0
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND

'--------- 6 ----------------------------------
#TASTE6
LED2ON:wait 5:LED2OFF
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND

'--------- 7 ----------------------------------
#TASTE7
SPEED_L=150:SPEED_R=150:SYS ROTR:pause 42
SPEED_L=0 :SPEED_R=0
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND

'--------- 10 ---------------------------------
#TASTE10
SPEED_L=150:SPEED_R=150:SYS REV:pause 30
SPEED_L=0 :SPEED_R=0
gosub SUBSYS_PWR_OFF
pause 30
gosub SUBSYS_PWR_ON
gosub REC80_INT
gosub REC80
gosub NO_ACS_INT:SYS ACS_MAX
gosub EX_COMMAND


'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII
#LED1ON
LED1_F=on:goto EXTPORT_WRITE
#LED1OFF
LED1_F=off and &HEF:goto EXTPORT_WRITE
#LED2ON
LED2_F=on:goto EXTPORT_WRITE
#LED2OFF
LED2_F=off:goto EXTPORT_WRITE
#LED3ON
LED3_F=on:goto EXTPORT_WRITE
#LED3OFF
LED3_F=off:goto EXTPORT_WRITE
#LED4ON
LED4_F=on:goto EXTPORT_WRITE
#LED4OFF
LED4_F=off:goto EXTPORT_WRITE
#LEDSOFF
EXTPORT=EXTPORT and &H0F:goto EXTPORT_WRITE
#EXTPORT_WRITE
SYS SYSTEM:pulse STROBE:RETURN

'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII

#GET_IRDATA
SUBCMD=1:sys COMNAV:return
#SEND_IRDATA
SUBCMD=0:sys COMNAV:return
#REC80
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and&HFD
HBYTE=00:SUBCMD=2:sys COMNAV:return
#REC80_INT
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03)
HBYTE=00:SUBCMD=2:sys COMNAV:return

'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
#NO_ACS_INT
SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB
HBYTE=00:SUBCMD=2:sys COMNAV:return
#ACS_INT_200
SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04
HBYTE=50:SUBCMD=2:sys COMNAV:return
#SUBSYS_PWR_ON
sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8
sys SYSTEM:return
#SUBSYS_PWR_OFF
EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM
deact sdio:deact sclio:return
#CLR_DISTANCE
SUBCMD=3:sys COMNAV:return
#L_DISTANCE
SUBCMD=6:sys COMNAV:return
#R_DISTANCE
SUBCMD=7:sys COMNAV:return

'---------COM/NAV GERÄTEREIBER -------------
'syscode "p5driv.s19"


Danke!

mfg
robertthronhill

pebisoft
06.12.2004, 17:24
ich habe die philips universal (sbc ru 254) 9 euro von karstadt. ähnliche für den gleichen preis bekommst du auch bei medimax. da man die selber für verschieden empfänger programmieren kann ,ist es ein leichtest, den code für den robby zu einzugeben.
mfg pebisoft

robertthronhill
08.12.2004, 12:35
Wie kann man die Fernbedienungen dann programmieren? Gehen also alle programmierbaren Fernbedienungen?

mfg
robertthronhill

pebisoft
08.12.2004, 16:55
alle fernbedienungen die freie codeeinstellung haben.
in der bedinungsanleitung steht der hinweis.
mfg pebisoft

Dirk
08.12.2004, 18:06
Hallo Leute,

es geht z.B. die IR-Fernbedienung CV 150-2 (CONRAD Best.-Nr. 350381).
Sie ist programmierbar und muss auf Geräte-Code 169 für RC5 eingestellt werden.

Gruß Dirk

Weisse1
09.12.2004, 16:48
Hi

die Fernbedienung Promo2 von Conrad geht auch.
Auf TV2 stellen und dann ist der Zahlenblock 1-9
gleich den Befehlen.
Also Taste 1 hat:
...LBYTE=1...

Mfg
Weisse

freakysteve
09.12.2004, 19:44
Hi

die Fernbedienung Promo2 von Conrad geht auch.
Auf TV2 stellen und dann ist der Zahlenblock 1-9
gleich den Befehlen.
Also Taste 1 hat:
...LBYTE=1...

Mfg
Weisse

Ich habe auch eine Fernbedienung von Philips, bei der ist es genau gleich.

mfg Stefan

robertthronhill
10.12.2004, 14:32
Ich habe eine Fernbedienung (SupportPlus Universal 8in1 SP-URC-81-L). Da ich jetzt schon 2 Gerätecodes habe die teilweise funktionieren, möchte ich alle bitten, falls sie eine programmierbare Fernebdienung verwenden, ihren Gerätecode hier zu posten.

Danke!

mfg
robertthronhill

pebisoft
11.12.2004, 18:05
eine programmierbare fernbedienung kann man so programmieren wie man möchte, da ist man nicht auf 2 adressen angewiesen sondern man hat eine 5bit adresse.
mfg pebisoft

pebisoft
11.12.2004, 18:06
ihr müsst euch einmal mit den rc5-code beschäftigen. gibt gute hinweise und lehrseiten im internet.
mfg pebisoft

pebisoft
11.12.2004, 18:07
am besten ihr kauft euch noch eine avr-platine mit avr und sendet den code auch einmal selber mit bascom.
mfg pebisoft

robertthronhill
12.12.2004, 09:09
Ich hatte mir auch schon überlegt, ob ich mir nicht einen eigenen Sender baue, ich weis nur noch nicht wie. Ich werde mal nach Anleitungen suchen.
Wo bekomme ich denn eine AVR-Platine her?

mfg
robertthronhill