LaZarZ
20.11.2005, 17:24
Hallo
Ich habe meinen Roby erst vor kurzem gekauft und wollte nun dass er ein Viereck abfährt und nach jeder Drehung ein Led an macht.
Damit er beim 4. Mal aufhört lasse ich es mit einer For Schleife abfragen. Doch anstat immer schön der Reihe nach die Schritte durch zu gehen führt er sie wilkürlich aus und stopt nicht. :-k
DEFINE anzahl BYTE[1]
'---------- INIT---------------
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
'--------------------------------------------
'--- WEGSTRECKENZÄHLER ---
'--------------------------------------------
gosub CLR_DISTANCE:gosub LEDSOFF
' mainloop
'----------------------------------------------
FOR anzahl = 1 TO 4 step 1
if anzahl=1 THEN gosub led_1
if anzahl=2 THEN gosub led_2
if anzahl=3 THEN gosub led_3
if anzahl=4 THEN gosub led_4
NEXT
#led_1
gosub LED1ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
#led_2
gosub LED2ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
#led_3
gosub LED3ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
#led_4
gosub LED4ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
beep 368,10,0
goto stop
' fahren
'-----------------------------------------------
#fahren
print "fahren"
gosub move_fwd
pause 5:SYS COMNAV_STATUS
gosub L_DISTANCE
print "lbyte="; lbyte
if LBYTE = 20 then gosub drehung else goto fahren
return
' stop move_fwd turn
'--------------------------------------------
#stop
gosub LED4ON:SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=0:end
#move_fwd
SYS FWDR:SYS FWDL:SPEED_L=155:SPEED_R=155:return
#turn
SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=155:return
' drehung
'---------------------------------------------
#drehung
gosub CLR_DISTANCE
gosub turn
#zähl_loop
pause 5:SYS COMNAV_STATUS
gosub R_DISTANCE
print "links"; lbyte
If lbyte < 10 Then GoTo zähl_loop
return
Greatings Andreas
Ich habe meinen Roby erst vor kurzem gekauft und wollte nun dass er ein Viereck abfährt und nach jeder Drehung ein Led an macht.
Damit er beim 4. Mal aufhört lasse ich es mit einer For Schleife abfragen. Doch anstat immer schön der Reihe nach die Schritte durch zu gehen führt er sie wilkürlich aus und stopt nicht. :-k
DEFINE anzahl BYTE[1]
'---------- INIT---------------
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
'--------------------------------------------
'--- WEGSTRECKENZÄHLER ---
'--------------------------------------------
gosub CLR_DISTANCE:gosub LEDSOFF
' mainloop
'----------------------------------------------
FOR anzahl = 1 TO 4 step 1
if anzahl=1 THEN gosub led_1
if anzahl=2 THEN gosub led_2
if anzahl=3 THEN gosub led_3
if anzahl=4 THEN gosub led_4
NEXT
#led_1
gosub LED1ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
#led_2
gosub LED2ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
#led_3
gosub LED3ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
#led_4
gosub LED4ON
gosub CLR_DISTANCE
gosub fahren
pause 5:SYS COMNAV_STATUS
SPEED_L=0:SPEED_R=0:SYS FWDR:SYS FWDL
pause 50:SYS COMNAV_STATUS
return
beep 368,10,0
goto stop
' fahren
'-----------------------------------------------
#fahren
print "fahren"
gosub move_fwd
pause 5:SYS COMNAV_STATUS
gosub L_DISTANCE
print "lbyte="; lbyte
if LBYTE = 20 then gosub drehung else goto fahren
return
' stop move_fwd turn
'--------------------------------------------
#stop
gosub LED4ON:SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=0:end
#move_fwd
SYS FWDR:SYS FWDL:SPEED_L=155:SPEED_R=155:return
#turn
SYS FWDR:SYS FWDL:SPEED_L=0:SPEED_R=155:return
' drehung
'---------------------------------------------
#drehung
gosub CLR_DISTANCE
gosub turn
#zähl_loop
pause 5:SYS COMNAV_STATUS
gosub R_DISTANCE
print "links"; lbyte
If lbyte < 10 Then GoTo zähl_loop
return
Greatings Andreas