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

การเขียนโปรแกรมหุ่นยนต์ ให้หุ่นเดินตามที่เรากำหนดโดยนับจำนวนวงรีที่ล้อที่หุ่นเห็น

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

CNT = 0
PAUSE 1000
GOSUB Forward
DO
CH = 3 : GOSUB RD_ADC
IF (ADC < 100) THEN
DO
CH = 3 : GOSUB RD_ADC
LOOP UNTIL (ADC > 100)
CNT = CNT + 1
DEBUG DEC CNT
ENDIF
LOOP UNTIL (CNT > 19)
GOSUB Motor_OFF
STOP
'+++++ Analog to Digital Converter Procedure ++++++++++
RD_ADC: LOW 10 : PAUSE 2: HIGH 10
SEROUT 10,240, [CH]
SERIN 10,240,25,Error, [ADC.BYTE0,ADC.BYTE1]
RETURN
Error: DEBUG "Error Reading", CR
RETURN
'+++++++++++++++Movement Procedure+++++++++++++++++++++
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_Left : HIGH 12 : LOW 13 : LOW 15 : LOW 14 : RETURN
T_Right: LOW 12: HIGH 13 : HIGH 15 : HIGH 14 : RETURN
Motor_OFF : LOW 13 : LOW 12 : LOW 14 : LOW 15 : RETURN

การเขียนโปรแกรมหุ่นยนต์ ให้หุ่นเดินตามที่เรากำหนดโดยนับจำนวนวงรีที่ล้อที่หุ่นเห็น

' {$STAMP BS2sx}

' {$PBASIC 2.5}

ADC VAR WordCH

VAR Byte

DO

CH = 3

GOSUB RD+_ADC

DEBUG CLS, "LEFT SENSOR = ", DEC ADC, TAB

CH = 5

GOSUB RD_ADC

DEBUG "RIGHT SENSOR = ", DEC ADC, TAB

PAUSE 300

LOOP

'+++++ Analog TO Digital Converter Procedure +++++++++

RD_ADX: LOW 1 : PAUSE 2: HIGH 10

SEROUT 10,240,[CH]

SERIN 10,240,25,Error, [ADC.BYTE0,ADC.BYTE1]

RETURN

Error: DEBUG "Error Reading:, CR

RETURN

กิจกรรมที่ 1

' {$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 < 100 THEN
DO
CH = 3 : GOSUB RD_ADC
LOOP UNTIL(ADC > 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

การเขียนโปรแกรมหุ่นยนต์ ให้หน้าต่างDebug Terminal และ แสดงค่าของRremoteตามที่เรากด

CODE ที่ได้
' {$STAMP BS2sx}
' {$PBASIC 2.5}key VAR Byte
DO
SERIN 3,2063,[key] 'recive 1200 8n1 on p3
DEBUG key , TAB ' show on debug terminal
LOOP


วันพุธที่ 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

การเขียนโปรแกรมหุ่นยนต์ (19/9/50) เดินตรงไป เมื่อเจอสิ่งกิดขวางจะหยุดโดยไม่ชน

codeที่ได้

' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM1}
ADC VAR Word
R VAR Word
I VAR Byte
X VAR Word
ko VAR Word
PAUSE 1000
HIGH 10
GOSUB forward
GOSUB RD_ADC
IF ( ADC > 75) THEN
DO
GOSUB motor_off
LOOP UNTIL(ko=1)
ENDIF
RD_ADC: LOW 10 : PAUSE 1 : HIGH 10
SEROUT 10,240,[1]
SERIN 10,240,[ADC.BYTE0,adc.BYTE1]
RETURN
Error: DEBUG "Error Reading" , CRRETURN
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
Motor_off:LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN

หลักการทำงาน :เดินตรงไ ป เมื่อเจอสิ่งกิดขวาง หุ่นจะหยุด โดยไม่ชน

ปัญหาที่พบ : เสียบสายพอร์ดผิดที่ ทำให้เซ็นเซอร์ไม่ทำงาน ระยะห่างจากผนังไม่เป็นไปตามต้องการ

วิธีแก้ไข : เปรียบเทียบหุ่นของเพื่อนแล้ว เสียบสายของหุ่นเราให้ถูก

วันพุธที่ 22 สิงหาคม พ.ศ. 2550

การเขียนโปรแกรมหุ่นยนต์ (22/8/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
ko4 = 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 +1
LOOP UNTIL(ko3 = 65)
GOSUB forward : PAUSE 1500
DO
GOSUB forward : PAUSE 12
GOSUB r_turn : PAUSE 12
ko4 = ko4 + 1
LOOP UNTIL(ko4 = 100)
GOSUB forward : PAUSE 2000
GOSUB u_turn : PAUSE 228
DOGOSUB motor_off: PAUSE10000
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

หลักการทำงาน : จะทำงานโดยตรงไป 25 เซนติเมตร เมื่อเจอหลักให้อ้อมหลักจนถึงหลักที่สาม ซิ่งแต่ละหลักจะห่างกัน 50 เซนติเมตร แล้วเดินตรงไป 50เซนติเมตร แล้วหมุนตัว เดินตรงไปอีก 100 เซนติเมตร แล้วหมุนตัวให้หน้าหุ่นเข้าสู่สนาม

ปัญหาที่พบ : หุ่นเดินไม่ได้ตามระยะทางที่ต้องการ หมุนตัวไม่ได้ตามที่ต้องการ เดินแต่ละรอบไม่เท่ากันพอดี



วิธีการแก้ไข : ลองแทนตัวเลขหาช่วง แล้วค่อยระบุ และเวลาทดลองทำหลายๆรอบ

การเขียนโปรแกรมหุ่นยนต์ (9/8/50)ให้หุ่นยนต์หลบเสา(สอบ)

จะทำงานโดยตรงไป 25 เซนติเมตร เมื่อเจอหลักให้อ้อมหลักจนถึงหลักที่สาม ซิ่งแต่ละหลักจะห่างกัน 50 เซนติเมตร แล้วเดินตรงไป 50เซนติเมตร แล้วหมุนตัว เดินตรงไปอีก 100 เซนติเมตร แล้วหมุนตัวให้หน้าหุ่นเข้าสู่สนาม


วันพุธที่ 8 สิงหาคม พ.ศ. 2550

การเขียนโปรแกรมหุ่นยนต์ (18/7/50) เดินตรงไป แล้วโค้ง แล้วตรงกลับ (คำสั่งจะใช้เป็นลูบ)

CODEที่ได้

' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM2}
ko VAR Word
PAUSE 1000
main:GOSUB forward : PAUSE 800
ko = 0
DO GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
ko = ko + 1
LOOP UNTIL ( ko = 86 )
GOSUB forward : PAUSE 800
GOSUB motor_stop : PAUSE 10000
GOTO main
forward : HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
r_turn : LOW 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
motor_stop : LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN

หลักการทำงาน : เดินตรงไป 1 บล็อก แล้วโค้ง 1 บล็อก แล้วตรงกลับ 1 บล็อก(คำสั่งจะใช้เป็นลูบ)

ปัญหาที่พบ : ผมทำแล้วหุ่นหมุนไม่หยุดเพราะใช้คำว่า Nib (เกินรอบคำสั่ง)

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

การเขียนโปรแกรมหุ่นยนต์ (18/7/50) เดินตรงไป แล้วโค้ง แล้วตรงกลับ

CODEที่ได้

' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM2}
PAUSE 1000
main:
GOSUB forward : PAUSE 800
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 10
GOSUB r_turn : PAUSE 12
GOSUB forward : PAUSE 800
GOSUB motor_stop : PAUSE 10000
GOTO main
forward : HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
r_turn : LOW 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
motor_stop : LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN

หลักการทำงาน : เดินตรงไป 1 บล็อก แล้วโค้ง 1 บล็อก แล้วตรงกลับ 1 บล็อก

ปัญหาที่พบ : ผมทำให้โค้งพอดีไม่ได้

วิธีการแก้ไข : ลองแทนตัวเลขหาช่วง แล้วค่อยระบุ

การเขียนโปรแกรมหุ่นยนต์ (4/7/50)หมุนตัว เดินเป็นรูปสามเหลี่ยม แล้วหมุนตัวกลับทางเดิม(ก่อนออก)

CODEที่ได้

' {$STAMP BS2sx}
' {$PBASIC 2.5}
' {$PORT COM1}
PAUSE 1000
main: GOSUB u_turn : PAUSE 100
GOSUB forward : PAUSE 750
GOSUB u_turn : PAUSE 220
GOSUB forward : PAUSE 750
GOSUB u_turn : PAUSE 220
GOSUB forward : PAUSE 750
GOSUB u_turn : PAUSE 200
GOSUB motor_stop : PAUSE 10000
GOTO main
u_turn : LOW 13 : HIGH 12 : HIGH 15 : LOW 14 : RETURN
forward : HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
motor_stop : LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN


หลักการทำงาน : หมุนตัว 30 องศา เดินเป็นรูปสามเหลี่ยมระยะทาง 1 บล็อก แล้วหมุนตัวกลับทางเดิม(ก่อนออก)


ปัญหาที่พบ : ผมไม่ทราบว่า30 และ6o องศาจะใช้CODEเท่าใด และหุ่นเดินไม่ตรง ทำให้CODEไม่ตรงตามที่คู่มือบอกไว้ และพื้นไม่ตรง

วิธีการแก้ไข : ลองหาตัวเลขที่เริ่มให้ใกล้ความเป็นจริง เริ่มปรับหลักร้อยแล้วสิบแล้วหน่วยจนตรง และต้องออกไปทดลองนอกห้อง

การเขียนโปรแกรมหุ่นยนต์ (4/7/50)เดินไปกลับเป็นเส้นตรง

CODEที่ได้
' {$STAMP BS2sx}
'{$PBASIC 2.5}
'{$PORT COM1}
PAUSE 1000
main:GOSUB forward : PAUSE 1000
GOSUB U_turn : PAUSE 298
GOSUB forward : PAUSE 1000
GOSUB U_turn : PAUSE 265
GOSUB motor_stop : PAUSE 10000
GOTO main
forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
U_turn : LOW 13 : HIGH 12 : HIGH 15 : LOW 14 : RETURN
motor_stop : LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
หลักการทำงาน : เดินตรงไป 1 บล็อก หมุนตัว แล้วเดินตรงไป 1 บล็อก หมุนตัวกลับที่เดิม
ปัญหาที่พบ : ผมไม่ทราบว่าองศาที่ได้เป็น180 ไม่รู้ว่าจะใช้CODEเท่าใด และหุ่นเดินไม่ตรง ทำให้CODEไม่ตรงตามที่คู่มือบอกไว้ และพื้นไม่ตรง
วิธีการแก้ไข : ลองหาตัวเลขที่เริ่มให้ใกล้ความเป็นจริง เริ่มปรับหลักร้อยแล้วสิบแล้วหน่วยจนตรง และต้องออกไปทดลองนอกห้อง

การเขียนโปรแกรมหุ่นยนต์ (4/7/50)เดินตรงไปแล้วถอยหลัง

CODEที่ได้

' {$STAMP BS2sx}
' {$PBASIC 2.5}
PAUSE 1000
MAIN : GOSUB FORWARD : PAUSE 950
GOSUB BACKWARD : PAUSE 950
GOSUB MOTOR_OFF : PAUSE 10000
GOTO Main
Forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
Backward: HIGH 12 : LOW 13 : HIGH 14 : LOW 15 : RETURN
motor_off:LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
หลัการทำงาน : เดินตรงไป 1 บล็อก แล้วถอยหลักกลับ 1 บล็อก
ปัญหาที่พบ : ไม่มี
วิธีการแก้ไข : ไม่มี

การเขียนโปรแกรมหุ่นยนต์ (4/7/50)เดินไปเส้นตรง

CODEที่ได้

' {$STAMP BS2sx}
'{$PBASIC 2.5}
'{$PORT COM1}
PAUSE 1000
main:GOSUB forward : PAUSE 950
motor_stop : PAUSE 10000
GOTO main
forward: HIGH 13 : LOW 12 : HIGH 15 : LOW 14 : RETURN
motor_stop : LOW 13 : LOW 12 : LOW 15 : LOW 14 : RETURN
หลักการทำงาน : เดินตรงไป 1 บล็อก
ปัญหาที่พบ : ตัวเลขCODEที่ได้ไม่พอดี1ช่อง
การแก้ไข : ลองหาตัวเลขที่เริ่มให้ใกล้ความเป็นจริง เริ่มปรับหลักร้อยแล้วสิบแล้วหน่วยจนตรง

วันพุธที่ 27 มิถุนายน พ.ศ. 2550

ประโยชน์ในการใช้งานของBlog

1.เพื่อใช้Blogนี้ในการเรียนวิชา การเขียนโปรแกรมหุ่นยนต์
1.1 วิชานี้อาจารย์ ให้ใช้ในการแสดงผล ปัญหาที่พบ ของหุ่นยนต์ที่พบ
1.2 ให้อาจารย์และเพื่อนแสดงความคิดเห็น และข้อเสนอแนะ
2.เพื่ออ่านข้อเสนอแนะแล้วนำไปปรับปรุง
3.เพื่อให้ อาจารย์ และเพื่อนช่วยในแก้ไขปัญหาของหุ่นยนต์(ที่ผมทำยังไม่ได้)