J
jhill44
Guest
het bouwen van een robot die zich zelfstandig w belemmering te voorkomen met behulp van een fundamentele stempel en een IR-module control freak ...maar Ik heb problemen met het stoppen van de bot.Ik ben de inleiding van de beweging van het bot met een universele afstandsbediening en poging om te stoppen met de bot bewegen door op een knop op de afstandsbediening.echter deze taak lijkt moeilijker dan ik had gedacht.om wat voor reden i cant get de fundamentele stempel om af te sluiten van de lus opdracht te stoppen met het bot.er zijn geen problemen funning de bot met obs.vermijden subroutines maar gewoon niet wil stoppen.hier is het programma .....
[/ code]
'($ STAMP BS2)
'($ PBASIC 2,5)
DEBUG "programma draait"
'------------[ variabelen ]---------------------------------- -------------
irdetectleft VAR BIT
irdetectright VAR BIT
irdetectcenter VAR BIT
BUTTON_CODE VAR Byte 'Infrated Button Code
DEVICE_CODE VAR Byte 'Infrarood Device Code
'------------[ belangrijkste routine ]--------------------------------- -----------
'***************************
'* MAIN PROGRAM *
'***************************
MAIN:
GOSUB COMMAND_030 'Stuur de afstandsbediening Command Infrated Control Freak
GOTO MAIN
COMMAND_030:
SEROUT 14, 16468, [30]
kak:
Serin 15, 16468,1000, hoofdgerecht, [device_code, button_code]
DEBUG "knop code =", DEC Button_Code, "Device Code =", DEC Device_code, "", CR
DEBUG "", CR
DEBUG "____________________________", CR
DEBUG HOME
INDIEN Button_code = 21 EN Device_code = 1 THEN obstacle_avoidance
INDIEN BUTTON_code = 101 EN device_code = 1 THEN STOP_bot
GOTO kak'----------[ subroutines ]------------------------------------ ----------obstacle_avoidance:
DO
FREQOUT 8, 1, 38500
irdetectleft = IN9
FREQOUT 2,1, 38500
irdetectright = IN0
FREQOUT 3,1, 38500
irdetectcenter = IN4
IF (irdetectcenter = 0) THEN
GOSUB back_up
Elseif (irdetectleft = 0) THEN
GOSUB turn_right
Elseif (irdetectright = 0) THEN
GOSUB turn_left
ALSE
GOSUB forward_pulse
ENDIF
LOOP
forward_pulse:
PAUSE 100
SEROUT 16, 8276, [ "! A1E", CR]
SEROUT 16, 8276, [ "! B1E", CR]
RETURN
turn_left:
PAUSE 20
SEROUT 16, 8276, [ "! A14", CR]
SEROUT 16, 8276, [! "B14", CR]
RETURN
turn_right:
PAUSE 20
SEROUT 16, 8276, [ "! A1E", CR]
SEROUT 16, 8276, [ "! B1E", CR]
RETURN
back_up:
PAUSE 20
SEROUT 16, 8276, [ "! A1E", CR]
SEROUT 16, 8276, [ "! B1E", CR]
RETURN
STOP_bot:
PAUSE 20
SEROUT 16, 8276, [ "! A00", CR]
SEROUT 16, 8276, [! "B00", CR]
Code:
[/ code]
'($ STAMP BS2)
'($ PBASIC 2,5)
DEBUG "programma draait"
'------------[ variabelen ]---------------------------------- -------------
irdetectleft VAR BIT
irdetectright VAR BIT
irdetectcenter VAR BIT
BUTTON_CODE VAR Byte 'Infrated Button Code
DEVICE_CODE VAR Byte 'Infrarood Device Code
'------------[ belangrijkste routine ]--------------------------------- -----------
'***************************
'* MAIN PROGRAM *
'***************************
MAIN:
GOSUB COMMAND_030 'Stuur de afstandsbediening Command Infrated Control Freak
GOTO MAIN
COMMAND_030:
SEROUT 14, 16468, [30]
kak:
Serin 15, 16468,1000, hoofdgerecht, [device_code, button_code]
DEBUG "knop code =", DEC Button_Code, "Device Code =", DEC Device_code, "", CR
DEBUG "", CR
DEBUG "____________________________", CR
DEBUG HOME
INDIEN Button_code = 21 EN Device_code = 1 THEN obstacle_avoidance
INDIEN BUTTON_code = 101 EN device_code = 1 THEN STOP_bot
GOTO kak'----------[ subroutines ]------------------------------------ ----------obstacle_avoidance:
DO
FREQOUT 8, 1, 38500
irdetectleft = IN9
FREQOUT 2,1, 38500
irdetectright = IN0
FREQOUT 3,1, 38500
irdetectcenter = IN4
IF (irdetectcenter = 0) THEN
GOSUB back_up
Elseif (irdetectleft = 0) THEN
GOSUB turn_right
Elseif (irdetectright = 0) THEN
GOSUB turn_left
ALSE
GOSUB forward_pulse
ENDIF
LOOP
forward_pulse:
PAUSE 100
SEROUT 16, 8276, [ "! A1E", CR]
SEROUT 16, 8276, [ "! B1E", CR]
RETURN
turn_left:
PAUSE 20
SEROUT 16, 8276, [ "! A14", CR]
SEROUT 16, 8276, [! "B14", CR]
RETURN
turn_right:
PAUSE 20
SEROUT 16, 8276, [ "! A1E", CR]
SEROUT 16, 8276, [ "! B1E", CR]
RETURN
back_up:
PAUSE 20
SEROUT 16, 8276, [ "! A1E", CR]
SEROUT 16, 8276, [ "! B1E", CR]
RETURN
STOP_bot:
PAUSE 20
SEROUT 16, 8276, [ "! A00", CR]
SEROUT 16, 8276, [! "B00", CR]
Code: