วันพุธที่ 19 กันยายน พ.ศ. 2550

การเขียนโปรแกรมหุ่นยนต์ (12/9/50) เดินตรงไป เมื่อชนจะถอยหลังแล้วเลี้ยว ทำไปเรื่อยๆจนเจอทางออก

codeที่ได้

' {$STAMP BS2sx}
' {$PBASIC 2.5}
ko1 VAR Word
ko2 VAR Word
ko3 VAR Word
ko4 VAR Word
ko5 VAR Word
PAUSE 1000
main: GOSUB forward : PAUSE 1000
ko1 = 0
ko2 = 0
ko3 = 0
ko5 = 0
GOSUB ul_turn : PAUSE 140
DO
GOSUB forward : PAUSE 12
GOSUB r_turn : PAUSE 13
ko1 = ko1 + 1
LOOP UNTIL(ko1 = 50)
DO
GOSUB forward : PAUSE 12
GOSUB l_turn : PAUSE 15
ko2 = ko2 + 1
LOOP UNTIL(ko2 = 55)
DO
GOSUB forward : PAUSE 12
GOSUB r_turn : PAUSE 15
ko3 = ko3 +1LOOP UNTIL(ko3 = 65)
GOSUB forward : PAUSE 1500
DO
GOSUB forward : PAUSE 12
GOSUB r_turn : PAUSE 12
ko4 = ko4 + 1LOOP UNTIL(ko4 = 100)
GOSUB forward : PAUSE 2000
GOSUB u_turn : PAUSE 228
DO
GOSUB motor_off: PAUSE 10000
LOOP UNTIL(ko5 = 1)
GOTO mainforward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
r_turn: LOW 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
l_turn: HIGH 13 : LOW 12 : LOW 14 : LOW 15 : RETURN
u_turn: LOW 13 : HIGH 12 : HIGH 15 : LOW 14 : RETURN
ul_turn: HIGH 13 : LOW 12 : LOW 15 : HIGH 14 : RETURN
motor_off: LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN

หลักการทำงาน : เดินตรงไป เมื่อชนจะถอยหลังแล้วเลี้ยวตามที่เรากำหนดไว้ในcode ( ครั้งที่ 1จะเลี้ยวขวา ครั้งที่2จะเลี้ยวขวา
ครั้งที่3จะเลี้ยวซ้าย ครั้งที่4จะเลี้ยวขวา ครั้งที่5จะเลี้ยวขวา ครั้งที่6จะเลี้ยวซ้าย ครั้งที่7จะเลี้ยวซ้าย ) และจะเจอทางออก

ปัญหาที่พบ : บางทีรถก็เลี้ยวซ้าย บางที่ก็เลี้ยวขวา

วิทีการแก้ไข : ลองเปลี่ยนรูปแบบการใช้คำสั่งเลี้ยว จากIF เป็นloop

ไม่มีความคิดเห็น: