[ บทความ : 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 มาให้ทดลองครับผม

 

 


เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง :  ๑ ม.ค. ๒๕๔๗