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

sensor very close

' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM1}
ADC VAR Word
R VAR Word
I VAR Byte
X VAR Word

PAUSE 1000
HIGH 10
DO
GOSUB forward
GOSUB RD_ADC
IF ( ADC > 385 ) THEN
GOSUB backward : PAUSE 80
GOSUB motor_off : PAUSE 10000
ENDIF
LOOP

RD_ADC: LOW 10 : PAUSE 1 : HIGH 10
SEROUT 10,240,[1]
SERIN 10,240,[ADC.BYTE0,adc.BYTE1]
RETURN
Error: DEBUG "Error Reading" , CR
RETURN

forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
backward: HIGH 12 : LOW 13 : HIGH 14 : LOW 15 : RETURN
S_left: HIGH 13 : LOW 12 : HIGH 14 : LOW 15 : RETURN
S_Right: HIGH 12 : LOW 13 : HIGH 15 : LOW 14 : RETURN
T_Right: LOW 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
T_LEFT: HIGH 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
Motor_off:LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN

sensor 5 cm

' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM1}
ADC VAR Word
R VAR Word
I VAR Byte
X VAR Word

PAUSE 1000
HIGH 10
DO
GOSUB forward
GOSUB RD_ADC
IF ( ADC > 250 ) THEN
GOSUB backward : PAUSE 80
GOSUB motor_off : PAUSE 10000
ENDIF
LOOP

RD_ADC: LOW 10 : PAUSE 1 : HIGH 10
SEROUT 10,240,[1]
SERIN 10,240,[ADC.BYTE0,adc.BYTE1]
RETURN
Error: DEBUG "Error Reading" , CR
RETURN

forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
backward: HIGH 12 : LOW 13 : HIGH 14 : LOW 15 : RETURN
S_left: HIGH 13 : LOW 12 : HIGH 14 : LOW 15 : RETURN
S_Right: HIGH 12 : LOW 13 : HIGH 15 : LOW 14 : RETURN
T_Right: LOW 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
T_LEFT: HIGH 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
Motor_off:LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN

sensor 3 cm

' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM1}
ADC VAR Word
R VAR Word
I VAR Byte
X VAR Word

PAUSE 1000
HIGH 10
DO
GOSUB forward
GOSUB RD_ADC
IF ( ADC > 320 ) THEN
GOSUB backward : PAUSE 80
GOSUB motor_off : PAUSE 10000
ENDIF
LOOP

RD_ADC: LOW 10 : PAUSE 1 : HIGH 10
SEROUT 10,240,[1]
SERIN 10,240,[ADC.BYTE0,adc.BYTE1]
RETURN
Error: DEBUG "Error Reading" , CR
RETURN

forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
backward: HIGH 12 : LOW 13 : HIGH 14 : LOW 15 : RETURN
S_left: HIGH 13 : LOW 12 : HIGH 14 : LOW 15 : RETURN
S_Right: HIGH 12 : LOW 13 : HIGH 15 : LOW 14 : RETURN
T_Right: LOW 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
T_LEFT: HIGH 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
Motor_off:LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN


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

ทัดสวิตช์


' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM1}
PAUSE 2000
GOSUB forward
GOSUB idea
GOSUB backward : PAUSE 400
GOSUB S_LEFT : PAUSE 190
GOSUB idea
GOSUB backward : PAUSE 400
GOSUB S_LEFT : PAUSE 190
GOSUB idea
GOSUB backward : PAUSE 400
GOSUB S_right : PAUSE 190
GOSUB idea
GOSUB backward : PAUSE 400
GOSUB S_left : PAUSE 190
GOSUB idea
GOSUB backward : PAUSE 400
GOSUB S_left : PAUSE 190
GOSUB idea
GOSUB backward : PAUSE 400
GOSUB S_right : PAUSE 190
GOSUB idea
GOSUB backward : PAUSE 400
GOSUB S_right : PAUSE 190
GOSUB idea
END

forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
backward: HIGH 12 : LOW 13 : HIGH 14 : LOW 15 : RETURN
S_left: HIGH 13 : LOW 12 : HIGH 14 : LOW 15 : RETURN
S_Right: HIGH 12 : LOW 13 : HIGH 15 : LOW 14 : RETURN
T_Right: LOW 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
T_LEFT: HIGH 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
Motor_off:LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
idea:
GOSUB forward
DO
LOOP UNTIL ( IN1 = 0 ) OR ( IN6 = 0 )RETURN
เป็นการ สั่งให้หุ่นยนต์เดินหน้าไปเรื่อยๆ เมื่อชน
1 ถอยหลังแล้วเลี้ยวขวา
2 ถอยหลังแล้วเลี้ยวขวา
3 ถอยหลังแล้วเลี้ยวซ้าย
4 ถอยหลังแล้วเลี้ยวขวา
5 ถอยหลังแล้วเลี้ยวขวา
6 ถอยหลังแล้วเลี้ยวซ้าย
7 ถอยหลังแล้วเลี้ยวซ้าย
แล้วก็ถึงจุดหมาย


LOOP UNTIL ( IN1 = 0 ) OR ( IN6 = 0 )
เมื่อสวิตช์ข้างซ้ายชน จะทำให้สมการ IN6=0 เป็นจริง หรือ เมื่อสวิตช์ข้างขวาชน จะทำให้สมการ IN1=0 เป็นจริง ซึ่งจะชนข้างไหน
ผลที่ได้จะเหมือนกีน และจะหุ่นยนต์จะทำตามคำสั่งที่ต่อท้าย เช่น
GOSUB backward : PAUSE 400
GOSUB S_right : PAUSE 190