วันเสาร์ที่ 11 กรกฎาคม พ.ศ. 2552

การเขียนโปรแกรมหุ่นยนต์











ทางด้านซ้ายคือภาพของ แผงวงจร และ หุ่นยนต์ล้อ

สำหรับใครที่สนใจจะเขียนโปรแกรมหุ่นยนต์ด้วยภาษา basic stamp นั้น
#1
จะต้องหาซื้ออุปการณ์ให้ครบเสียก่อน ซึ่งก็คือ
1.หุ่นยนต์ล้อ
2.โปรแกรม basic stamp ซึ่งสามารถ download ได้ใน internet
3.คู่มือการเขียนโปรแกรมด้วยภาษา basic stamp
#2
ควรอ่านคู่มือให้ดีถึงวิธีการติดตั้งโปรแกรม การประกอบหุ่นยนต์ และการเขียนโปรแกรมเบื้องต้น การถ่ายโอนคำสั่งลงหุ่นยนต์ก่อน
#3
code ในบทความก่อนหน้าที่ท่านเห็นคือ คำสั่งที่สั่งให้หุ่นยนต์ทำกิจกรรมต่างๆ

******** สำหรับผู้อ่าน ถ้ามีอะไรจะชี้แนะก็ช่วย comment ด้วยนะครับ**********

วันอังคารที่ 18 ธันวาคม พ.ศ. 2550

B12-1.bsx

'{$STAMP BS2sx}
'{$PBASIC 2.5}
CH VAR Nib
ADC VAR Word
CNT VAR Nib
i VAR Nib
GOSUB Beep
Main: DO : LOOP UNTIL (IN1=0 ) ' Press key for start program
GOSUB Forward ' Motor on
CNT = 0
DO
CH = 1 : GOSUB RD_ADC ' Read data from left sensor
IF (ADC < 400) THEN ' Check the black line
GOSUB Beep
CNT = CNT + 1 ' Count 1 time at 1 line
DO
CH = 1 : GOSUB RD_ADC ' Wait until sensor exit line
LOOP UNTIL (ADC > 600)
ENDIF
LOOP UNTIL ( CNT = 4 ) ' Pass 4 line ?
GOSUB Motor_OFF ' Stop motor after exit loop
FOR i = 1 TO 4 ' Beep 4 time to finish
GOSUB Beep
PAUSE 200
NEXT
GOTO Main ' Again
'+++++ Analog to Digital Converter Procedure ++++++++++
RD_ADC: LOW 10: PAUSE 2: HIGH 10 ' Send acknowledge
SEROUT 10,240,[CH] ' Send aelect chip
SERIN 10,240,250,Error,[ADC.BYTE0,ADC.BYTE1] ' Read ADC
RETURN
Error: DEBUG "Error Reading",CR
RETURN
Beep: FREQOUT 11,200,800 ' Sound Routine
RETURN
'+++++ Movement Procedure +++++++++++++++++++++++++++++
Forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
Motor_OFF: LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
'++++++++++++++++++++++++++++++++++++++++++++++++++++++

B9-1.bsx

'{$STAMP BS2sx}
'{$PBASIC 2.5}
CH VAR Nib
ADC VAR Word
DO
CH = 1 ' Select Channel 1 For Analog1
GOSUB RD_ADC ' Read Data From Left Sensor
DEBUG 2,5,5, "LEFT SENSOR VALUE = ",DEC ADC
IF (ADC < 400) THEN ' Robot Lift From White Board ?
FREQOUT 11,500,800 ' Beep
ENDIF
LOOP
'+++++ Analog to Digital Converter Procedure ++++++++++
RD_ADC: LOW 10: PAUSE 2: HIGH 10 ' Send Acknowledge
SEROUT 10,240,[CH] ' Send Select Chip
SERIN 10,240,250,Error,[ADC.BYTE0,ADC.BYTE1] ' Read ADC
RETURN
Error: DEBUG "Error Reading",CR
RETURN

B8-1.bsx-Module3 read

'{$STAMP BS2sx}
'{$PBASIC 2.5}
CH VAR Nib
ADC VAR Word

DO
CH = 1 ' Select Channel 1 For Analog1
GOSUB RD_ADC ' Read Data From Left Sensor
DEBUG 2,5,5, "LEFT SENSOR VALUE = ",DEC ADC
CH = 3 ' Select Channel 3 For Analog3
GOSUB RD_ADC ' Read Data From Mid Sensor
DEBUG 2,5,6, "MID SENSOR VALUE = ",DEC ADC
CH = 5 ' Select Channel 5 For Analog5
GOSUB RD_ADC ' Read Data From Right Sensor
DEBUG 2,5,7, "RIGHT SENSOR VALUE = ",DEC ADC
PAUSE 200
LOOP

'+++++ Analog to Digital Converter Procedure ++++++++++
RD_ADC: LOW 10: PAUSE 2: HIGH 10 ' Send Acknowledge
SEROUT 10,240,[CH] ' Send Select Chip
SERIN 10,240,250,Error,[ADC.BYTE0,ADC.BYTE1] ' Read ADC
RETURN
Error: DEBUG "Error Reading",CR
RETURN

วันศุกร์ที่ 9 พฤศจิกายน พ.ศ. 2550

code หุ่นยนต์ อ่านค่าที่ล้อ

' {$STAMP BS2sx}'
{$PBASIC 2.5}
ADC VAR Word
CH VAR Byte
CNT VAR Byte
CNT = 0
PAUSE 1000
HIGH 15 : LOW 14 : HIGH 13 : LOW 12
DO
CH = 3 : GOSUB RD_ADC
IF ADC < ch =" 3"> 100)
CNT = CNT + 1
ENDIF
CH = 5
PAUSE 300
GOSUB One_block
CNT=0
GOSUB One_nt
CNT=0
GOSUB One_block
CNT=0
GOSUB One_nt
CNT=0
GOSUB One_nt
CNT=0
GOSUB One_block
CNT=0 GOSUB One_ntrv
CNT=0
GOSUB One_block
END
RD_ADC: LOW 10 : PAUSE 2 : HIGH 10
SEROUT 10,240,[CH]
SERIN 10,240,250,Error,[ADC.BYTE0,ADC.BYTE1]
RETURN
Error: DEBUG "Error reading", CR
RETURN
One_block:DO LOOP UNTIL(CNT > 11)
LOW 15 : HIGH 14 : LOW 13 : HIGH 12
PAUSE 100
LOW 15 : LOW 14 : LOW 13 : LOW 12
STOP :RETURN
One_nt:DO LOOP UNTIL(CNT > 3)
LOW 15 : LOW 14 : LOW 13 : HIGH 12
PAUSE 100
..
LOW 15 : LOW 14 : LOW 13 : LOW 12
STOP :RETURN
One_ntrv:DO LOOP UNTIL(CNT > 3)
LOW 15 : HIGH 14 : LOW 13 : LOW 12
PAUSE 100
LOW 15 : LOW 14 : LOW 13 : LOW 12
STOP :RETURN

วันอังคารที่ 23 ตุลาคม พ.ศ. 2550

code ที่ใช้ในการแข่งขัน

' {$STAMP BS2sx}
' {$PBASIC 2.5}
PAUSE 1000
main : GOSUB forward :PAUSE 1500
GOSUB t_left :PAUSE 500
GOSUB forward : PAUSE 500
GOSUB t_right : PAUSE 500
GOSUB forward : PAUSE 1000
GOSUB t_right : PAUSE 500
GOSUB forward : PAUSE 1000
GOSUB t_left : PAUSE 500
GOSUB forward : PAUSE 1000
GOSUB t_left : PAUSE 500
GOSUB forward : PAUSE 1000
GOSUB t_right :PAUSE 500
GOSUB forward : PAUSE 500
GOSUB t_right : PAUSE 550
GOSUB forward :PAUSE 2000
GOSUB t_right :PAUSE 500
GOSUB forward :PAUSE 500
GOSUB t_right :PAUSE 700
GOSUB forward : PAUSE 4000
GOSUB s_right : PAUSE 350
GOSUB forward : PAUSE 150
GOSUB motor_off : PAUSE 10000
forward : HIGH 15: LOW 14 : HIGH 13 : LOW 12 : RETURN
t_left :LOW 15 : LOW 14 : HIGH 13 :LOW 12 : RETURN
t_right :HIGH 15 : LOW 14 :LOW 13 :LOW 12 :RETURN
s_right : HIGH 15 : LOW 14 : LOW 13 : HIGH 12 : RETURN
motor_off :LOW 15 :LOW 14:LOW 13:LOW 12 :RETURN

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