J
jhill44
Guest
xây dựng một bot đó di chuyển autonomously w tránh trở ngại sử dụng một con dấu cơ bản và kiểm soát một ir freak mô-đun ...nhưng tôi đang gặp sự cố ngừng bot.i am khởi sự chuyển động của bot với một điều khiển từ xa phổ quát và cố gắng để dừng bot từ di chuyển bằng cách đẩy một nút trên điều khiển từ xa.Tuy nhiên công việc này có vẻ là khó khăn hơn sau đó tôi đã nghĩ.đối với một số lý do i cant nhận được đóng dấu cơ bản để thoát ra khỏi vòng lặp lệnh để dừng bot.không có vấn đề funning các bot với obs.tránh subroutines nhưng nó chỉ không muốn dừng lại.đây là chương trình .....
[/ code]
'($ Stamp BS2)
'($ PBASIC 2,5)
DEBUG "chương trình đang chạy"
'------------[ biến ]---------------------------------- -------------
irdetectleft VAR Bit
irdetectright VAR Bit
irdetectcenter VAR Bit
BUTTON_CODE VAR BYTE 'Infrated Button Mã
Thiết bị hồng ngoại DEVICE_CODE VAR BYTE 'Mã
'------------[ chính thói quen ]--------------------------------- -----------
'***************************
'* CHÍNH CHƯƠNG TRÌNH *
'***************************
CHÍNH:
GOSUB COMMAND_030 'Gửi lệnh điều khiển từ xa để Infrated Control Freak
GOTO CHÍNH
COMMAND_030:
SEROUT 14, 16.468, [30]
poop:
15 SERIN, 16468,1000, chính, [device_code, button_code]
DEBUG nút "code =", DEC Button_Code, "Device Mã =", DEC Device_code, "", CR
DEBUG "", CR
DEBUG "____________________________", CR
DEBUG CHỦ
NẾU Button_code = 21 VÀ Device_code = 1 THEN obstacle_avoidance
NẾU BUTTON_code = 101 và = 1 device_code THEN STOP_bot
GOTO poop'----------[ subroutines ]------------------------------------ ----------obstacle_avoidance:
DO
FREQOUT 8, 1, 38.500
irdetectleft = IN9
FREQOUT 2,1, 38.500
irdetectright = IN0
FREQOUT 3,1, 38.500
irdetectcenter = IN4
NẾU (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, 8.276, [ "A1E"!, CR]
SEROUT 16, 8.276, [ "b1E"!, CR]
RETURN
turn_left:
PAUSE 20
SEROUT 16, 8.276, [ "A14"!, CR]
SEROUT 16, 8.276, [ "! B14", CR]
RETURN
turn_right:
PAUSE 20
SEROUT 16, 8.276, [ "A1E"!, CR]
SEROUT 16, 8.276, [ "b1E"!, CR]
RETURN
back_up:
PAUSE 20
SEROUT 16, 8.276, [ "a1E"!, CR]
SEROUT 16, 8.276, [ "B1E"!, CR]
RETURN
STOP_bot:
PAUSE 20
SEROUT 16, 8.276, [ "A00"!, CR]
SEROUT 16, 8.276, [ "B00"!, CR]
Mã số:
[/ code]
'($ Stamp BS2)
'($ PBASIC 2,5)
DEBUG "chương trình đang chạy"
'------------[ biến ]---------------------------------- -------------
irdetectleft VAR Bit
irdetectright VAR Bit
irdetectcenter VAR Bit
BUTTON_CODE VAR BYTE 'Infrated Button Mã
Thiết bị hồng ngoại DEVICE_CODE VAR BYTE 'Mã
'------------[ chính thói quen ]--------------------------------- -----------
'***************************
'* CHÍNH CHƯƠNG TRÌNH *
'***************************
CHÍNH:
GOSUB COMMAND_030 'Gửi lệnh điều khiển từ xa để Infrated Control Freak
GOTO CHÍNH
COMMAND_030:
SEROUT 14, 16.468, [30]
poop:
15 SERIN, 16468,1000, chính, [device_code, button_code]
DEBUG nút "code =", DEC Button_Code, "Device Mã =", DEC Device_code, "", CR
DEBUG "", CR
DEBUG "____________________________", CR
DEBUG CHỦ
NẾU Button_code = 21 VÀ Device_code = 1 THEN obstacle_avoidance
NẾU BUTTON_code = 101 và = 1 device_code THEN STOP_bot
GOTO poop'----------[ subroutines ]------------------------------------ ----------obstacle_avoidance:
DO
FREQOUT 8, 1, 38.500
irdetectleft = IN9
FREQOUT 2,1, 38.500
irdetectright = IN0
FREQOUT 3,1, 38.500
irdetectcenter = IN4
NẾU (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, 8.276, [ "A1E"!, CR]
SEROUT 16, 8.276, [ "b1E"!, CR]
RETURN
turn_left:
PAUSE 20
SEROUT 16, 8.276, [ "A14"!, CR]
SEROUT 16, 8.276, [ "! B14", CR]
RETURN
turn_right:
PAUSE 20
SEROUT 16, 8.276, [ "A1E"!, CR]
SEROUT 16, 8.276, [ "b1E"!, CR]
RETURN
back_up:
PAUSE 20
SEROUT 16, 8.276, [ "a1E"!, CR]
SEROUT 16, 8.276, [ "B1E"!, CR]
RETURN
STOP_bot:
PAUSE 20
SEROUT 16, 8.276, [ "A00"!, CR]
SEROUT 16, 8.276, [ "B00"!, CR]
Mã số: