[ บทความ : Robot ] ตอนที่ 7 เรื่อง ... ศึกษา ET-ROBOT (การวนรอบ) |
ในบทความตอนที่แล้วเราได้เขียนโปรแกรม แบบเงื่อนไขกันไปแล้ว คราวนี้ก็เหลืออีกเพียงหนึ่งเรื่องเท่านั้น ก็คือ การเขียนโปรแกรมให้มีลักษณะแบบวนรอบ |
คำสั่งสำหรับวนรอบใน BASIC Stamp นั้นมีเพียงคำสั่งเดียว คือ FOR ซึ่งถือว่าเพียงพอต่อการเขียนโปรแกรมแล้วล่ะครับ มาดูรูปแบบการเขียนกันดีกว่าครับ |
รูปแบบที่ 1 | รูปแบบที่ 2 |
FOR
ตัวแปร = ค่าเริ่ม
ต้น TO ค่าสุดท้าย คำสั่ง
NEXT
|
FOR
ตัวแปร = ค่าเริ่มต้น
TO ค่าสุดท้าย
STEP อัตราการเพิ่มลด
คำสั่ง
... NEXT
|
ในรูปแบบที่
1 นั้น
โปรแกรมของเราจะทำงานเท่ากับ
ค่าสุดท้าย-ค่าเริ่มต้น+1 ครั้ง โดยในแต่ระรอบที่คำสั่ง FOR ทำงานนั้น
ตัวแปรของเรา
จะถูกเพิ่มขึ้นครั้งละ 1
ในกรณีที่ค่าเริ่มนั้นมากกว่าค่าสุดท้าย
BASIC Stamp จะมองว่า
เป็นการลดค่าลงครั้งละ 1
ซึ่งจะแตกต่างกับรูปแบบที่
2
ที่เราสามารถกำหนดอัตราการเพิ่มลดได้
ตัวอย่างเช่น K
var
WORD FOR
K = 1 to 10
DEBUG - NEXT FOR
K=1 TO 10 STEP 2
DEBUG + NEXT ในรอบแรกนั้น จะมีการแสดงเครื่องหมาย เป็นจำนวน 10 ครั้ง ส่วนในการวนรอบครั้งที่สองนั้น จะทำเพียง 5 ครั้ง นั่นคือ K จะมีค่าเป็น 1,3,5,7,9 เท่านั้น |
ในการวนรอบนั้น
ค่าของอัตราการเพิ่มลด
จะเป็นค่า บวกเท่านั้น
ถ้าเราสั่งว่า
FOR K = 1 to 10 STEP 1
NEXT ค่า 1 จะถูกมองเป็น 65535 ดังนั้น การวนรอบจำทำงานเพียงครั้งเดียว |
ก่อนที่จะรันโปรแกรมตัวอย่างนี้
ผู้อ่านจะต้องต่อ วงจร
LED เข้ากับขา AUX 0 ก่อนนะครับ
เอาล่ะตัวโปรแกรมเป็นดังนี้ครับ '{$STAMP
BS2p} '{$PORT
COM1} XBAR
var WORD SUM
var WORD I
var WORD BEGIN:
SUM = 0
FOR I = 1 TO 10
SUM = SUM + I
NEXT
XBAR = SUM / I DEBUG dec ? XBAR, dec ? SUM
AUXIO
FOR I=1 TO XBAR
TOGGLE 0
SLEEP 1
NEXT
EXIT:
GOTO EXIT |
การทำงานของโปรแกรมตัวอย่างมีอยู่ว่า
จะทำการหาผลรวมของค่าตัวเลขตั้งแต่
1 ถึง 10
แล้วมาเก็บเอาไว้ในตัวแปร SUM โดยใช้ตัวแปร
I เป็นตัวนับ
หลังจากนั้น เรากำหนดว่า XBAR
= SUM / I แล้วจึงสั่งให้แสดงค่าผลลัพธ์กลับไปที่เครื่อง
PC ผลลัพธ์ของการทำงาน
จึงแสดงออกมาดังนี้
|
และหลังจากที่มีการส่งข้อความกลับมาที่เครื่อง
PC โปรแกรมของเรานั้นก็จะเลือกการทำงานไปที่พอร์ต
AUX แล้วเริ่มวนรอบอีกครั้ง
โดยคราวนี้ วนรอบเป็น 1 ถึง
XBAR (ทำ 5 ครั้ง)
ส่วนในการวนรอบแต่ละครั้ง
ก็จะมีคำสั่งอยู่เพียง 2
คำสั่ง คือ TOGGLE 0 กับ
SLEEP 1 คำสั่ง
TOGGLE 0 มีความหมายว่า
ให้ทำการกลับบิตของพอร์ต AUX0
คือ ถ้าเดิมเป็น 1
ก็จะเปลี่ยนเป็น 0
และถ้าเดิมเป็น 0
ก็จะถูกเปลี่ยนมาเป็น 1
หลังจากนั้นก็หน่วงเวลาด้วย
SLEEP ด้วยเหตุนี้
จึงสรุปได้ว่า จะมีการติด/ดับของหลอด
LED รวมกันเป็นจำนวน 5
ครั้ง ...
เป็นการจบโปรแกรมครับ ^_^ สรุป
เมื่อมาถึงขั้นตอนนี้เราก็ได้เรียนรู้รูปแบบของภาษาเบสิก
สำหรับ
BASIC Stamp กันครบแล้ว
ในส่วนที่เหลือนั้นจะเป็นพวกคำสั่ง
ซึ่งผู้อ่านสามารถหาดาวน์โหลด
ได้จากเว็บของ ETT นี่ล่ะครับ
(ลองเข้าไปชม Product พวก
BASIC Stamp ดูนะครับ)
หน้าที่ของผมที่ทำตัวเป็นผู้แนะนำส่วนที่ขาดไปจากคำอธิบายในเอกสารคู่มือของ
ETT ก็เลยจบลงไปด้วย
...
ใครที่สนใจเขียนโปรแกรมควบคุมหุ่นยนต์ก็สามารถ
ดาวน์โหลดตัวอย่างโปรแกรม
กันได้เลยครับ
รับรองว่าคราวนี้
สามารถอ่านโค้ดโปรแกรม
รู้เรื่อง แน่นอนครับ ส่วนบทความที่เหลือของ
ET-ROBOT STAMP P40 ก็คือ
ตัวอย่างโปรแกรมนะครับ ...
ผมก็จะทยอย
นำมาขึ้นเว็บให้ครับ
สุดท้ายต้องขอขอบคุณทาง
ETT ที่ได้ส่งตัวอย่างบอร์ด
BASIC Stamp และ ET-ROBOT Stamp P40 มาให้ทดลองครับผม
|