J
jhill44
Guest
budova bot, který se pohybuje samostatně w vyhýbání se překážkám využívající základní razítko a IR Control Freak modul ...ale já mám problémy s zastavení bot.Jsem zahájení pohybu bot s univerzální dálkové a pokoušet se zastavit bot z pohybu stiskem tlačítka na dálkovém ovladači.Nicméně tento úkol se zdá být těžší pak jsem si myslel.Z nějakého důvodu jsem dotírat dostat základní razítko na výjezdu ze smyčky příkaz k zastavení bot.nejsou k dispozici žádné problémy funning bot s OBS.vyhýbání podprogramy, ale to prostě nechce přestat.Zde je program .....
[/ Code]
'($ STAMP BS2)
'($ PBASIC 2,5)
DEBUG "program běží"
'------------[ Proměnné ]---------------------------------- -------------
irdetectleft VAR BIT
irdetectright VAR BIT
irdetectcenter VAR BIT
BUTTON_CODE VAR BYTE 'Infrated tlačítka kód
DEVICE_CODE VAR BYTE 'Infračervené kódu
'------------[ Hlavního programu ]--------------------------------- -----------
'***************************
'* Hlavní program *
'***************************
Hlavní:
GOSUB COMMAND_030 'Poslat Dálkové ovládání Command Infrated Control Freak
GOTO HLAVNÍ
COMMAND_030:
SEROUT 14, 16468, [30]
hovno:
Serin 15, 16468,1000, hlavní, [device_code, button_code]
DEBUG "tlačítko code =", DEC Button_Code, "kódu =", DEC Device_code, "", CR
Debug "," CR
DEBUG "____________________________", CR
DEBUG HOME
IF Button_code = 21 a = 1 THEN Device_code obstacle_avoidance
IF BUTTON_code = 101 a device_code = 1 pak STOP_bot
GOTO hovno'----------[ Podprogramy ]------------------------------------ ----------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
ELSE
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]
Kód:
[/ Code]
'($ STAMP BS2)
'($ PBASIC 2,5)
DEBUG "program běží"
'------------[ Proměnné ]---------------------------------- -------------
irdetectleft VAR BIT
irdetectright VAR BIT
irdetectcenter VAR BIT
BUTTON_CODE VAR BYTE 'Infrated tlačítka kód
DEVICE_CODE VAR BYTE 'Infračervené kódu
'------------[ Hlavního programu ]--------------------------------- -----------
'***************************
'* Hlavní program *
'***************************
Hlavní:
GOSUB COMMAND_030 'Poslat Dálkové ovládání Command Infrated Control Freak
GOTO HLAVNÍ
COMMAND_030:
SEROUT 14, 16468, [30]
hovno:
Serin 15, 16468,1000, hlavní, [device_code, button_code]
DEBUG "tlačítko code =", DEC Button_Code, "kódu =", DEC Device_code, "", CR
Debug "," CR
DEBUG "____________________________", CR
DEBUG HOME
IF Button_code = 21 a = 1 THEN Device_code obstacle_avoidance
IF BUTTON_code = 101 a device_code = 1 pak STOP_bot
GOTO hovno'----------[ Podprogramy ]------------------------------------ ----------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
ELSE
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]
Kód: