SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
แนะนําการใช GoGo Board เบื้องตน
                 ดร.อานันท สีหพิทักษเกียรติ
      ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร
                   มหาวิทยาลัยเชียงใหม
สวนประกอบของ GoGo Board




อุปกรณที่จําเปน
                             แหลงจายไฟ
                              GoGo Board ใชไฟไดจากสองแหลงคือ ถาน
                              AA จํานวน 6 กอน ซึ่งจะบรรจุอยูในลังถานดาน
                              ใต หรือจะเสียบไฟจากหมอแปลงไฟกระแส
                              ตรงที่มีแรงดันระหวาง 9-12 โวลท

                             การตอพวงกับคอมพิวเตอร
                              GoGo Board ติดตอกับคอมพิวเตอรผานทาง
                              พอรทอนุกรม ถาคอมพิวเตอรมีพอรทดังกลาว
                              อยู ก็สามารถนําสายอนุกรม (บางทีรูจักกันใน
                              ชื่อ สาย Serial หรือ DB-9) ตอเขากับ GoGo
                              Board ไดโดยตรง แตเครื่องคอมพิวเตอรพกพา
                              สวนใหญจะไมมีพอรทนี้ ดังนั้นจะตองใช
                              อุปกรณที่เรียกวา USB to Serial Adapter
                              เพื่อเสียบสายเขากับพอรท USB ของ
                              คอมพิวเตอรแทน



                       -2-
เริ่มตนใชงาน GoGo Board
โปรแกรม GoGo Monitor
โปรแกรมนี้เปนโปรแกรมหลักที่ใชในการตรวจสอบการทํางานของ GoGo Board โดยสามารถดาวนโหลดโปรแกรมนี้ไดฟรี
ที่ http://www.gogoboard.org เมื่อติดตั้งและใชงานโปรแกรมจะพบหนาตางดังรูปตอไปนี้




การที่จะเริ่มใชงาน GoGo Board ไดนั้นเราจะตองทราบหมายเลขพอรทสื่อสาร (COM port) ที่ใชกอน แลวจึงกดปุม
“เชื่อมตอ” หมายเลขนี้จะมีคาตางกันไป หากไมทราบวาจะใชคาใดใหเขาไปดูหมายเลขพอรทสื่อสารของเครื่องที่มีไดทาง
Device Manager ของ Windows โดยพิมพคําสั่ง devmgmt.msc ในหนาตาง Run




                                                       -3-
เมื่อทดลองจนเชื่อมตอกับ GoGo Board ไดแลวก็จะเขาถึงหนาตางควบคุมหลักของโปรแกรมดังภาพ




                                                   -4-
-5-
แผงควบคุมหลักของโปรแกรม GoGo Monitor แบงออกเปน 3 สวนใหญดวยกันคือ

  1.   สวนการควบคุมทั่วไป – สวนนี้ใชทดสอบการเชื่อมตอกับ GoGo Board เชน
       สงเสียง – สั่งให GoGo Board สงเสียงรองสั้นๆ
       เปด LED, ปด LED – สั่งเปด และ ปด ไฟแสดงสถานการณทํางานบน GoGo Board
       PING – จะตรวจสอบรุนของ GoGo Board ที่ใชงานอยู


  2.   สวนควบคุมมอรเตอร – GoGo Board มีพอรทเสียบมอรเตอรทั้งหมด 4 ชอง โดยแตละชองมีชื่อวา A, B,
       C, D ตามลําดับ หากตองการควบคุมการทํางานของมอรเตอรใดก็ใหเลือกมอรเตอรนั้นโดยการทําเครื่องหมายใน
       ชองดานขางชื่อของมอรเตอรนั้นๆ โดยสามารถเลือกมอรเตอรไดหลายตัวพรอมกัน เมื่อเลือกมอรเตอรที่ตองการ
       แลวก็สามารถสั่งงานตางๆ ไดดังนี้
       เปด, ปด – สั่งเปดและปดพอรทนั้นๆ
       เบรก –คือการใสแรงตานการหมุนเพื่อใหมอรเตอรอยูนิ่ง
       ปลอย – คือการตัดไฟเฉยๆ มอรเตอรสามารถหมุนฟรีได
       กําลัง – คือการตั้งคาวามอรเตอรจะหมุดดวยกําลังสูงต่ําเพียงใด โดย 7 คือกําลังสูงสุด
       ทางนี,้ ทางนั้น – คือการกําหนดทิศทางการหมุนของมอรเตอร
       กลับทิศ – คือการกลับทิศการหมุนของมอรเตอร

  3.   เซ็นเซอร – GoGo Board มีพอรทเซ็นเซอรทั้งหมด 8 ชอง เรียกชื่อวา เซ็นเซอร 1 ถึง เซ็นเซอร 8 โดย GoGo
       Board จะสงคาของเซ็นเซอรเหลานี้มายังโปรแกรม GoGo Monitor อยางตอเนื่องทันทีหลังจากกดปุม “เริ่ม”

       ปกติแลวหากไมมีเซ็นเซอรตอเชื่อมอยูคาที่อานไดจะมีคาเทากับ 1023 ซึ่งเปนคาสูงสุด คาที่ไดนี้จะเปลี่ยนไปเมื่อ
       มีเซ็นเซอรเสียบอยู




                                                          -6-
คําสั่งควบคุม GoGo Board จาก
                                Micro Worlds
                                   คําสั่งเกี่ยวกับเซ็นเซอร

 sensor1       อานคาจะเซ็นเซอรที่กําหนด คาที่ไดจะอยูระหวาง 0-1023 คาที่ไดนี้แสดงใหเห็น
 sensor2       คาความตานทานระหวางสายทั้งสองเสนของเซ็นเซอร
 sensor3
 sensor4
                   •    คา 1023 เปนคาปกติที่จะไดเมื่อไมมีเซ็นเซอรเสียบอยู ซึ่งหมายถึงคา
 sensor5
                        ความตานทานสูงที่สุด (ไมมีกระแสไฟวิ่งผานระหวางสายสองเสนได
 sensor6
                        เลย)
 sensor7
                   •    คา 0 เปนคาที่จะไดเมื่อไมมีความตานทานระหวางสายทั้งสองเสนเลย
 sensor8
                        เชน เมื่อสายแตะกัน


 ตัวอยาง
                                                 show sensor1

               จะแสดงคาเซ็นเซอร 1 ออกมา


                                       if sensor1 < 100[ fd 100]

               สั่งใหเตาเดินหนา 100 กาวถาเซ็นเซอรมีคานอยกวา 100


                                       waituntil [sensor2 > 500]

               โปรแกรมจะหยุดรอจนกวาคาเซ็นเซอร 2 จะมากกวา 500


                                    คําสั่งควบคุมมอรเตอร

    tta        ยอมาจาก Talk To ใชกําหนดวาเราจะสั่งงานมอรเตอรพอรทใด
    ttb
    ttc
    ttd

TalkToPort     ใชเมื่อตองการสั่งงานมอรเตอรมากกวาหนึ่งตัวพรอมๆ กัน
 [Port-list]
               Port-list ประกอบไปดวยชื่อของพอรทมอรเตอรที่ตองการ
 ตัวอยาง
                                           TalkToPort [a b c]

               จะเลือกมอรเตอร A, B, และ C



    On         เปดมอรเตอรที่เลือกไวใหหมุน



                                                  -7-
Off        ปดมอรเตอร

                 หมายเหตุ – คําสั่งนี้จริงๆ แลว รวมคําสั่ง Break และ Coast เขาดวยกัน คือ
                 คําสั่ง Off จะสั่งเบรกกอนเปนเวลาสั้นๆ แลวตามดวย Coast เพื่อตัดไฟ และ
                 ประหยัดพลังงาน

     Coast       ปดมอรเตอรโดยไมเบรก คือตัดไฟเฉยๆ มอรเตอรอาจไมหยุดหมุนในทันที

     Break       ปดมอรเตอรโดยการเบรก คือ จะมีแรงฝนไมใหมอรเตอรหมุน ซึ่งอาจทําใหมอรเต
                 อรหยุดหมุนไดเร็ว แตวิธีนี้ก็จะกินไฟมาก จึงไมควรทิ้งมอรเตอรไวในสถานะนี้
                 นานๆ

OnFor Duration   Turns on the active port for a Duration of time. Duration is in tenth of a
                 second.

    ตัวอยาง
                                                     tta
                                                     on
                                                     wait 10
                                                     off

                 จะเปดมอรเตอรพอรท A ไว 1 วินาทีแลวปด ซึ่งทํางานเหมือนกันกับคําสั่งตอไปนี้


                                                    tta
                                                    onfor 10
Thisway Thatway ใชกําหนดทิศทางการหมุนของมอรเตอร โดย Thisway กับ Thatway อาจ
                หมายถึงการหมุนตามเข็มหรือทวนเข็มนาฬิกาก็ไดแลวแตทิศทางการเสียบมอร
                เตอรลงบน GoGo Board



      Rd         ใชกลับทิศการหมุนของมอรเตอร

SetPower Power ใชกําหนดระดับกําลังของมอรเตอร

                 Power มีคาระหวาง 0 ถึง 7 โดย 7 คือกําลังสูงสุดในคณะที่ 0 เหมือนการปดมอร
                 เตอรนั่นเอง
    ตัวอยาง
                                           TalkToMotor [a b c d]
                                           setpower 4

                 จะตั้งคากําลังของมอรเตอรทุกตัวตั้งแต A-D ใหมีคาเทากับ 4




                                                   -8-
คําสั่งควบคุม GoGo Board จาก
                                 GoGo Monitor
มอรเตอร
GoGo Board มีมอรเตอรสี่ตัวชื่อวา A, B, C, และ D การใชงานมอรเตอรนั้นจะเริ่มตนดวยการเลือกมอร
เตอร (ใชคําสั่ง a, b, ab, ฯลฯ) แลวบอกมันวาตองการใหทําอะไร (เชน, on (เปด), off(ปด), rd (กลับ
ทิศ) ฯลฯ)

a,                         เลือกสั่งงานมอรเตอร A

b,                         เลือกสั่งงานมอรเตอร B

c,                         เลือกสั่งงานมอรเตอร C

d,                         เลือกสั่งงานมอรเตอร D

สามารถผสมอักษรเพื่อ
เลือกมอรเตอรหลายตัว
เชน

      ab,                  เลือกสั่งงานมอรเตอร AB

      acd                  เลือกสั่งงานมอรเตอร A C และ D

on                         เปดมอรเตอรที่เลือกไว

off                        ปดมอรเตอรที่เลือกไว

onfor ระยะเวลา             เปดมอรเตอรไวเปนเวลาหนึ่ง, "ระยะเวลา" เปนตัวกําหนดวามอรเตอรจะถูก
                           เปดไวเปนเวลานานเทาใด หนวยของเวลาคือ หนึ่งในสิบของวินาที
                           ยกตัวอยางเชน onfor 10 จะเปดมอรเตอรไวเปนเวลาหนึ่งวินาที
thisway                    กําหนดทิศทางการหมุนของมอรเตอรใหเปน "ทางนี้" (ซึ่งจะเปนทางไหนนั้น
                           ขึ้นอยูกับการตอมอรเตอร) ไฟสถานะเมื่อมอรเตอรหมุน "ทางนี" จะเปนสี
                                                                                           ้
                           เขียว
thatway                    กําหนดทิศทางการหมุนของมอรเตอรใหเปน "ทางนั้น" (ซึ่งจะเปนทาง
                           ตรงกันขามกับ "ทางนี") ไฟสถานะเมื่อมอรเตอรหมุน "ทางนั้น" จะเปนสีแดง
                                                  ้
rd                         กลับทิศการหมุน ไมวามอรเตอรจะหมุนทางใด คําสั่งนี้จะกลับทิศการหมุน
                           นั้นใหเปนทางตรงขาม
setpower ระดับ             ตั้งคากําลังของมอรเตอร: คา "ระดับ" มีชวงอยูระหวาง 0 (ไมกําลังเลย มอร
                           เตอรจะหยุด) ไปจนถึง 7 (เต็มกําลัง) คาระดับกําลังปกติของมอรเตอรคือ 7




                                                     -9-
เวลา
ดวยคําสั่ง wait เราสามารถบอกให GoGo Board อยูเฉยๆ ใหเวลาผานไประยะหนึ่ง ในขณะที่ GoGo
Board อยูเฉยๆ นี้ มอรเตอรจะถูกเปดทิ้งไวก็ได เชน

         ab, on wait 20 off

จะเปดมอรเตอร A และ B ไวเปนเวลา 2 วินาที คําสั่งนี้ใหผลเหมือนกันกับ:

         ab, onfor 20

นอกจากนี้ในตัว GoGo Board ยังมีนาฬิกาที่เดินอยูตลอดเวลาแมในขณะที่ GoGo Board กําลังทํางาน
อยางอื่นอยู มีคําสั่งสองคําสั่งที่ใชงานนาฬิกานี้คือ resett ซึ่งจะทําใหนาฬิกาเริ่มนับจากศูนยใหม และ
timer ซึ่งจะแจงคานาฬิกาปจจุบัน (เปนคาตัวเลขคาหนึ่ง)

ตารางตอไปนี้สรุปการใชงานคําสั่ง wait, timer, และ resett

wait ระยะเวลา                      หยุดอยูเฉยๆ เปนเวลาเทากับคา "ระยะเวลา" ที่กําหนด หนวยของ
                                   เวลาคือ หนึ่งในสิบวินาที ตัวอยางเชน wait 10 จะทําให GoGo
                                   Board อยูเฉยๆ เปนเวลาหนึ่งวินาที.
timer                              แจงคานาฬิกา หนวยของเวลาจะนับทุกๆ 0.1 วินาที ดังนั้นถา timer
                                   = 20, แสดงวานาฬิกาเริ่มนับมาเปนเวลาสองวินาที
resett                             บอกใหนาฬิกาเริ่มนับจากศูนยใหม




                                                  -10-
เซ็นเซอร
GoGo Board มีเซ็นเซอรอยู 8 พอรทดวยกัน ชื่อวา sensor1-8 มีอปกรณหลายชนิดที่สามารถใชงานกับ
                                                               ุ
เซ็นเซอรนี้ได เชน

    •    อุปกรณที่มีสถานะเปด/ปด เชนปุม หรือ สวิตชชนิดตางๆ
    •    เซ็นเซอรที่เปลี่ยนแปลงคาความตานทานของตัวเอง เชน เซ็นเซอรแสง หรือ เซ็นเซอรอุณหภูมิ
    •    อุปกรณอิเลคทรอนิคสใดๆ ที่ผลิตความตางศักดิ์ ระหวาง 0 ถึง 5 โวลต

คําสั่งที่ใชอานคาเซ็นเซอรมีอยูสองแบบดวยกัน แบบแรกเรียกวา switch ซึ่งจะสงคาจริงหรือเท็จกลับมา
เทานั้น (ใชกับเซ็นเซอรที่มีสองสถานะคือเปดหรือปด) แบบที่สองคือ sensor ซึ่งจะสงคาตัวเลขระหวาง
0 ถึง 1023 ออกมา โดยคาที่ไดจะขึ้นอยูกับเซ็นเซอรที่ใช

        Switch1           ถาสวิทชที่ตออยูกับเซ็นเซอร 1-8 ถูกกดอยู คําสั่งนี้จะรายงานคา "จริง" ออกมา ถา
        Switch2           ไมเชนนั้นก็จะรายงานคา "เท็จ"
        Switch3
        Switch4
        Switch5
        Switch6
        Switch7
        Switch8
        Sensor1           รายงานคาเซ็นเซอร 1-8 โดยคานี้จะอยูระหวาง 0 ถึง 1023
        Sensor2
        Sensor3
        Sensor4
        Sensor5
        Sensor6
        Sensor7
        Sensor8

คําสั่งโครงสราง
ภาษา Logo มีคําสั่งโครงสรางชุดเล็กๆ ที่มีประโยชนมาก คําสั่งเหลานี้ประกอบไปดวยคําสั่งที่ใชในการ
วนรอบ, ทดสอบเงื่อนไข, รอแบบมีเงื่อนไข, และคําสั่งจบการทํางานของโปรแกรม

ภาพรวม

คําสั่งโครงสรางที่มีใน ภาษา Logo ถูกสรุปไวในตารางตอไปนี้

repeat ครั้ง [คําสั่ง]           วนทํา "คําสั่ง" เปนจํานวนครั้งเทากับ "ครั้ง" คา "ครั้ง" อาจเปนคาคงที่
                                 ,คาจากการคํานวน, หรือตัวแปรก็ได
forever [คําสั่ง]                วนทํา "คําสั่ง" ไปแบบไมมีที่สิ้นสุด

if เงื่อนไข [คําสั่ง]            ถา "เงื่อนไข" เปนจริง จะทํา "คําสั่ง" เงื่อนไขที่มีคาเปน 0 ถือวามีคาเปน
                                 เท็จ คาอื่นที่ไมใช 0 จะถือวามีคาเปน จริง
ifelse condition                 ถา "เงื่อนไข" เปนจริง จะทํา "คําสั่ง-1" ถาไมเชนนั้น จะทํา "คําสั่ง-2"
[คําสั่ง-1] [คําสั่ง-2]

                                                    -11-
waituntil [เงื่อนไข]            โปรแกรมจะรอและไมทําคําสั่งถัดไปจนกระทั่ง "เงื่อนไข" เปนจริง โปรด
                                สังเกตวาเงื่อนไขจะตองอยูในวงเล็บเหลี่ยม ไมเหมือนกับคําสั่ง if และ
                                ifelse ที่เงือนไขไมตองอยูในวงเล็บใดๆ
stop                            หยุดการทํางานของ procedure ปจจุบัน และ กลับไปทําคําสั่งถัดไปใน
                                procedure แม (procedure ที่เรียกใชงาน procedure ปจจุบัน)
output คา                      หยุดการทํางานของ procedure ปจจุบัน และ สง "คา" กลับไปยัง
                                procedure แม

ตัวอยาง

procedure ตอไปนี้จะทําใหมอรเตอร A หมุนกลับไปกลับมา 10 ครั้ง

        to flippy
          repeat 10 [a, onfor 10 rd]
        end

สองตัวอยางตอไปนี้แสดงใหเห็นวิธีที่จะทําใหมอรเตอร A หมุนกลับไปกลับมาเรื่อยๆ ไมมีวันสิ้นสุด

        to flippy-forever-1
          forever [a, onfor 10 rd]
        end


procedure ตอไปนี้ทําการเปดมอรเตอร A แลวรอจดกวาสวิทช 2 ถูกกด แลวจึงปดมอรเตอร

        to on-wait-off
          a, on
          waituntil [switch2]
          off
        end

procedure ตอไปนี้จะทําการอานคาสวิทช 2 อยูเรื่อยๆ ถาสวิทชถูกกดมอรเตอร A จะหมุนไป "ทางนี"
                                                                                               ้
แตถาสวิทชไมถูกกดมอรเตอรจะหมุนไป "ทางนั้น"

        to switch-controls-direction
          a, on
          forever [
            ifelse switch2 [thisway][thatway]
          ]
        end

ระบบตัวเลข
GoGo Board ใชระบบตัวเลขขนาด 16 บิท ซึ่งหมายความวาคาตัวเลขที่สามารถใชงานไดจะอยูระหวาง
-32768 ถึง +32767.

การใชงานเครื่องหมายทางเลขคณิตจะตองมีการเวนวรรคทั้งสองดานเสมอ นั่นคือการเขียน 3+4 เปน
รูปแบบที่ผิด รูปแบบที่ถูกคือ 3 + 4 (มีวรรคกอนหนาและหลังเครื่องหมายบวก).

                                                 -12-
ภาษา Logo ไมไดใชระบบลําดับความสําคัญของเครื่องหมายคณิตศาสตรที่เปนมาตรฐานทั่วไป แตจะ
ถือเอาตามลําดับการเขียนเรียงจากซายไปขวา ดังนั้น

        3+4*5

จะมีคาเทากับ 35 เพราะ ภาษา Logo จะทํา 3 + 4 แลวคูณผลลัพทดวย 5. (ซึ่งตางจากมาตรฐานการ
ประมวลผลในภาษาคอมพิวเตอรทั่วไป ซึ่งจะถือวา * สําคัญกวา + ดังนั้นผลลัพทที่จะไดจะเปน 4*5
แลวบวกดวย 3)

วงเล็บเปนวิธีการที่ใชในการกําหนดลําดับกอนหนังใหกับการคํานวน เชน

        (3 + (4 * 5))

คาที่ไดคือ 23.

ตารางตอไปนี้แสดงเครื่องหมายทางคณิตศาสตรทั้งหมดที่มีใน ภาษา Logo

+                       บวก (แบบ infix)
-                       ลบ (แบบ infix)

*                       คูณ (แบบ infix)
/                       หาร (แบบ infix)
%                       หารเอาเศษ (เชน 5 % 3 จะเทากับ 2)

and                     ตรรกะ "และ" ใชทั้งกับการหาทางทางตรรกศาสตร (จริงหรือเท็จ) และ
                        bitwise operation
or                      ตรรกะ "หรือ"

not                     ตรรกะ "ไม"

random                  ใชสุมคาตัวเลข คาที่ไดจะอยูระหวาง -32768 ถึง +32768. ถาตองการลดชวง
                        ของคาลง ใหใชการหารเอาเศษ (%) เชน (random % 100) จะไดคาสุม
                        ตั้งแต 0 ถึง 99




                                               -13-
Procedures และการรับ-สงคา (input-output)
คําจํากัดความ

การสราง procedure จะเริ่มดวยคําสั่ง to ตามดวยชื่อ procedure ตามดวยชุดคําสั่งที่เปนใจความของ
procedure แลวจบดวยคําสั่ง end ตัวอยางตอไปนี้ เปนการสราง procedure ชื่อวา flash ซึ่งทําการเปด
และปดมอรเตอร A สิบครั้ง

        to flash
          repeat 10 [a, onfor 5 wait 5]
        end

การรับคา (Inputs)

เราสามารถกําหนด Procedures ใหทําการรับคาได ซึ่งคาดังกลาวจะกลายเปนตัวแปรของ procedure
นั้นๆ (local variable) การกําหนดการรับคาจะทําโดยการใชเครื่องหมาย colon (:) ตัวอยางตอไปนี้เปน
การสราง procedure ชื่อ flash ซึ่งมีการรับคาหนึ่งคา (ชื่อวา n) คาที่รับเขามานี้ถูกใชในการกําหนด
จํานวนครั้งการวนรอบของคําสั่ง repeat

        to flash :n
          repeat :n [a, onfor 5 wait 5]
        end

เมื่อเรียกใช procedure นี้จะตองตามดวยคาตัวเลขหนึ่งคาเสมอ เชน flash 5, flash 10, flash 20, ฯลฯ

procedure สามารถรับคากี่คาก็ได ภาษา Logo ไมไดจํากัดไว แตในทางปฎิบัติบริมาณหนวยความจําที่
เหลืออยูของ GoGo Board จะเปนตัวจํากัด

การสงคา (Outputs)

Procedure สามารถสงคากลับไดโดยใชคําสั่ง output เมื่อ procedure เรียกใชคําสั่งดังกลาวแลว มันจะ
จบการทํางานทันที ตัวอยางตอไปนี้แสดง procedure ชื่อ detect ซึ่งจะสงคา 0, 1, หรือ 2 ขึ้นอยูกับคา
ของเซ็นเซอร 1


        to detect
          make “temp sensor1
          if :temp < 300 [output 1]
          if :temp < 500 [output 2]
          output 3
        end

ในตัวอยางนี้มีการสรางตัวแปรชื่อ temp ซึ่งถูกใชในการเก็บคาของเซ็นเซอร 1 ถาคาเซ็นเซอรนี้นอยกวา
300 procedure จะสงคา 1 แตถาคาเซ็นเซอรมากกวา 300 คําสั่งถัดไปจะทํางาน ซึ่งจะทดสอบวาถาคา
ดังกลาวนอยกวา 500 procedure จะสงคา 2 ทายที่สุดถาคาเซ็นเซอรไมนอยกวา 500 procedure จะ
สงคา 3

ขอควรระวัง ถาตัดสินใจใชคําสั่ง output แลว จะตองตรวจสอบใหแนใจเสมอวา procedure นั้นจะมี
การสงคาไมวาในกรณีใดๆ (นั่นคือ procedure จะสงคาบางไมสงคาบางไมได) การทํางานของ GoGo
Board จะลมเหลวทันทีถา procedure นั้นจบการทํางานโดยไมมีการสงคา


                                                 -14-
ตัวแปร
การสรางตัวแปร Global จะทําโดยใชคําสั่ง make “ชื่อตัวแปร เชน

        Make “cats 0
        make “dogs 1

จะสรางตัวแปรสองตัวชื่อ cats และ dogs และกําหนดคาใหเปน 0 และ 1 ตามลําดับ

จะสังเกตไดวาเวลาเราจะเขียนคาลงในตัวแปรเราจะใสเครื่องหมายคําพูดนําหนาชื่อตัวแปรเสมอ แตถา
ตองการอานคาจากตัวแปรจะใชเครื่องหมาย : แทน เชน

        If :cats > 0 [ a, on ]

จะทดสอบวาคาในตัวแปร cats มากกวา 0 หรือไม ถาใชก็จะเปดมอรเตอร A

        Make “cats :cats + 1

จะเพิ่มคาตัวแปร cats ขึ้น 1

ตัวแปรจะถูกจัดเก็บในหนวยความจํา RAM ซึ่งจะตองมีไฟเลี้ยงอยูเสมอ ดังนั้นคาตัวแปรจะสูญหายถาปด
GoGo Board




                                              -15-
การบันทึกและเรียกคืนขอมูล (Data Recording and Playback)

ภาษา Logo มี global array ขนาด 8000 ชอง อยูหนึ่งตัวซึ่งสามารถใชงานกับคําสั่งตอไปนี้ได

setdp ตําแหนง          ตั้งคาตัวชี้ตําแหนง

record คา              บันทึก "คา" ลงไปในตําแหนงปจจุบัน และเลื่อนตัวชี้ใหไปอยูในตําแหนงถัดไป

recall                  เรียกคืนคาในตําแหนงปจจุบัน และเลื่อนตัวชี้ใหไปอยูในตําแหนงถัดไป


ตัวอยาง procedure ชื่อ take-data ตอไปนี้จะบันทึกคาเซ็นเซอร A ทุกๆ หนึ่งวินาที

         to take-data
           setdp 0
           repeat 1000 [record sensor1 wait 10]
         end

เมื่อมีการบันทึกขอมูลแลว สามารถใช GoGo Monitor ในการดึงขอมูลมาเก็บไวในรูปแบบของไฟล CSV
(Comma Separated Values) เพื่อนําไปประมวลผลโดยใชโปรแกรมอื่นๆ เชน Excel ตอไป

หมายเหตุ ภาษา Logo ไมมีการตรวจสอบวาการบันทึกขอมูลเกินขอบเขตหรือไม (มากกวา 8000) ซึ่ง
อาจสงผลใหเกิดความผิดพลาดกับขอมูลหรือโปรแกรมสวนอื่น




                                                -16-
การสื่อสารขอมูลทางชองสัญญาณอนุกรม (Serial Port)
ภาพรวม

GoGo Board สามารถสงและรับขอมูลหากันผานทางชองสัญญาณอนุกรมไดโดยใชคําสั่ง send และ
serial ตามลําดับ คําสั่ง serial จะรายงานคาที่ไดรับลาสุด นอกจากนี้ยังมีคําสั่ง newserial? ซึ่งจะ
รายงานคาจริงถา GoGo Board ไดรับรับมูลตัวใหมเขามาแตยังไมไดถูกนําไปใช

ลองพิจารณาตัวอยางตอไปนี้ procedure ชื่อ sender จะทําการสงขอมูลไปยังคอมพิวเตอร, โดยคาที่สง
จะเปนคาสุมระหวาง 0 ถึง 2

        to sender
          forever [
            send random % 3
            beep
            wait 30
        ]
        end

คําสั่ง random % 3 จะสรางคา 0, 1, หรือ 2 ซึ่งเปนผลจากการใชเครื่องหมาย "หารเอาเศษ" คาที่ได
จะถูกสงโดยคําสั่ง send หลังจากนั้น ก็จะสงเสียง beeps และรอ 3 วินาทีกอนที่จะวนสรางและสงคา
ออกไปอีกครั้ง

ในตัวอยางที่สอง Procedure ชื่อ doit จะทําการรับคาที่ Computer แลวจะเปดมอรเตอร A, มอรเตอร B
หรือทั้งคู ขึ้นอยูกับคาที่มันไดรับ

        to doit
          forever [
            waituntil [newserial?]
            if serial = 0 [a, onfor 10]
            if serial = 1 [b, onfor 10]
            if serial = 2 [ab, onfor 10]
          ]
        end

หมายเหตุ

GoGo Board ใชคา 128 ถึง 134 สําหรับการทํางานระดับต่ําระหวาง GoGo Board ดังนั้นพยายามอยา
สงคาตัวเลขเหลานี้ คาเหลานี้อาจทําใหหนวยความจําของ GoGo Board บางตัว (ตัวที่เปดอยูแตไมได
ทํางานอะไร) ถูกเขียนทับและสงผลเสียหายได

ปุมบนตัว GoGo Board

เมื่อกดปุมในขณะที่ GoGo Board ไมไดทํางานอะไร จะทําใหมันเริ่มตนประมวลผล procedure แรกที่
เขียนไวในหนาจอของ ภาษา Logo

ถากดปุมในขณะที่ GoGo Board กําลังทํางานจะสงผลใหมันหยุดการทํางานปจจุบันทันที




                                                -17-

Weitere ähnliche Inhalte

Was ist angesagt?

การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)
การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)
การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)Innovative Experiment Co.,Ltd.
 
Robot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotisRobot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotisInnovative Experiment Co.,Ltd.
 
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์Wittayakorn Yasingthong
 

Was ist angesagt? (6)

Pop bot
Pop botPop bot
Pop bot
 
การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)
การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)
การใช้งานหุ่นยนต์ IPST-MicroBOX SE (i-BOT)
 
Pop x2 FireBOT present
Pop x2 FireBOT presentPop x2 FireBOT present
Pop x2 FireBOT present
 
Pop bot-xt v 2013-11-11
Pop bot-xt v 2013-11-11Pop bot-xt v 2013-11-11
Pop bot-xt v 2013-11-11
 
Robot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotisRobot Arm opencm และมอเตอร์ dynamixel จาก robotis
Robot Arm opencm และมอเตอร์ dynamixel จาก robotis
 
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
เริ่มต้นการเขียนโปรแกรมหุ่นยนต์
 

Ähnlich wie Go go board introduction (9)

คู่มือGogoboard
คู่มือGogoboardคู่มือGogoboard
คู่มือGogoboard
 
53211817 10 december
53211817 10 december53211817 10 december
53211817 10 december
 
1.อิเล็กทรอนิกส์
1.อิเล็กทรอนิกส์1.อิเล็กทรอนิกส์
1.อิเล็กทรอนิกส์
 
Scr
ScrScr
Scr
 
หน่วยที่ 7การควบคุมทางไฟฟ้า
หน่วยที่ 7การควบคุมทางไฟฟ้าหน่วยที่ 7การควบคุมทางไฟฟ้า
หน่วยที่ 7การควบคุมทางไฟฟ้า
 
8 ธันวาคม 2554
8 ธันวาคม 25548 ธันวาคม 2554
8 ธันวาคม 2554
 
ไฟฟ้าและวงจร
ไฟฟ้าและวงจรไฟฟ้าและวงจร
ไฟฟ้าและวงจร
 
ไฟฟ้าและวงจร
ไฟฟ้าและวงจรไฟฟ้าและวงจร
ไฟฟ้าและวงจร
 
ไฟฟ้าและวงจร
ไฟฟ้าและวงจรไฟฟ้าและวงจร
ไฟฟ้าและวงจร
 

Mehr von สุรินทร์ ดีแก้วเกษ

การเคลื่อนที่ของสัตว์มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์มีกระดูกสันหลังการเคลื่อนที่ของสัตว์มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์มีกระดูกสันหลังสุรินทร์ ดีแก้วเกษ
 
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลังการเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลังสุรินทร์ ดีแก้วเกษ
 
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลังการเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลังสุรินทร์ ดีแก้วเกษ
 
การเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียว
การเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียวการเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียว
การเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียวสุรินทร์ ดีแก้วเกษ
 
ใบความรู้เรื่อง โครงงานคอมพิวเตอร์
ใบความรู้เรื่อง โครงงานคอมพิวเตอร์ใบความรู้เรื่อง โครงงานคอมพิวเตอร์
ใบความรู้เรื่อง โครงงานคอมพิวเตอร์สุรินทร์ ดีแก้วเกษ
 
หลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้น
หลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้นหลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้น
หลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้นสุรินทร์ ดีแก้วเกษ
 
คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์
คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์
คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์สุรินทร์ ดีแก้วเกษ
 

Mehr von สุรินทร์ ดีแก้วเกษ (20)

คู่มือการใช้งาน
คู่มือการใช้งานคู่มือการใช้งาน
คู่มือการใช้งาน
 
การเคลื่อนที่ของสิ่งมีชีวิต
การเคลื่อนที่ของสิ่งมีชีวิตการเคลื่อนที่ของสิ่งมีชีวิต
การเคลื่อนที่ของสิ่งมีชีวิต
 
การเคลื่อนที่ของสัตว์มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์มีกระดูกสันหลังการเคลื่อนที่ของสัตว์มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์มีกระดูกสันหลัง
 
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลังการเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
 
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลังการเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
การเคลื่อนที่ของสัตว์ไม่มีกระดูกสันหลัง
 
การเคลื่อนที่ของคน
การเคลื่อนที่ของคนการเคลื่อนที่ของคน
การเคลื่อนที่ของคน
 
การเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียว
การเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียวการเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียว
การเคลื่อนที่ของสิ่งมีชีวิตเซลล์เดียว
 
อวัยวะรับความรู้สึก
อวัยวะรับความรู้สึกอวัยวะรับความรู้สึก
อวัยวะรับความรู้สึก
 
การทำงานของระบบประสาท
การทำงานของระบบประสาทการทำงานของระบบประสาท
การทำงานของระบบประสาท
 
เซลล์ประสาทและระบบประสาทของคน
เซลล์ประสาทและระบบประสาทของคนเซลล์ประสาทและระบบประสาทของคน
เซลล์ประสาทและระบบประสาทของคน
 
ศูนย์ควบคุมระบบประสาท
ศูนย์ควบคุมระบบประสาทศูนย์ควบคุมระบบประสาท
ศูนย์ควบคุมระบบประสาท
 
การรับรู้และการตอบสนอง
การรับรู้และการตอบสนองการรับรู้และการตอบสนอง
การรับรู้และการตอบสนอง
 
การทำงานของเซลล์ประสาท
การทำงานของเซลล์ประสาทการทำงานของเซลล์ประสาท
การทำงานของเซลล์ประสาท
 
ง 30245 การสร้างงานมัลติมีเดีย
ง 30245 การสร้างงานมัลติมีเดีย ง 30245 การสร้างงานมัลติมีเดีย
ง 30245 การสร้างงานมัลติมีเดีย
 
ใบความรู้เรื่อง โครงงานคอมพิวเตอร์
ใบความรู้เรื่อง โครงงานคอมพิวเตอร์ใบความรู้เรื่อง โครงงานคอมพิวเตอร์
ใบความรู้เรื่อง โครงงานคอมพิวเตอร์
 
ความคิดสร้างสรรค์
ความคิดสร้างสรรค์ความคิดสร้างสรรค์
ความคิดสร้างสรรค์
 
หลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้น
หลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้นหลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้น
หลักการวิเคราะห์ผลิตภัณฑ์เบื้องต้น
 
ระบบเทคโนโลยี
ระบบเทคโนโลยีระบบเทคโนโลยี
ระบบเทคโนโลยี
 
คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์
คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์
คำอธิบายรายวิชา ง 20250 กระบวนการคิดโดยใช้หุ่นยนต์
 
คำอธิบายรายวิชา ง 32101 เทคโนโลยี 2
คำอธิบายรายวิชา ง 32101 เทคโนโลยี 2คำอธิบายรายวิชา ง 32101 เทคโนโลยี 2
คำอธิบายรายวิชา ง 32101 เทคโนโลยี 2
 

Go go board introduction

  • 1. แนะนําการใช GoGo Board เบื้องตน ดร.อานันท สีหพิทักษเกียรติ ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร มหาวิทยาลัยเชียงใหม
  • 2. สวนประกอบของ GoGo Board อุปกรณที่จําเปน แหลงจายไฟ GoGo Board ใชไฟไดจากสองแหลงคือ ถาน AA จํานวน 6 กอน ซึ่งจะบรรจุอยูในลังถานดาน ใต หรือจะเสียบไฟจากหมอแปลงไฟกระแส ตรงที่มีแรงดันระหวาง 9-12 โวลท การตอพวงกับคอมพิวเตอร GoGo Board ติดตอกับคอมพิวเตอรผานทาง พอรทอนุกรม ถาคอมพิวเตอรมีพอรทดังกลาว อยู ก็สามารถนําสายอนุกรม (บางทีรูจักกันใน ชื่อ สาย Serial หรือ DB-9) ตอเขากับ GoGo Board ไดโดยตรง แตเครื่องคอมพิวเตอรพกพา สวนใหญจะไมมีพอรทนี้ ดังนั้นจะตองใช อุปกรณที่เรียกวา USB to Serial Adapter เพื่อเสียบสายเขากับพอรท USB ของ คอมพิวเตอรแทน -2-
  • 3. เริ่มตนใชงาน GoGo Board โปรแกรม GoGo Monitor โปรแกรมนี้เปนโปรแกรมหลักที่ใชในการตรวจสอบการทํางานของ GoGo Board โดยสามารถดาวนโหลดโปรแกรมนี้ไดฟรี ที่ http://www.gogoboard.org เมื่อติดตั้งและใชงานโปรแกรมจะพบหนาตางดังรูปตอไปนี้ การที่จะเริ่มใชงาน GoGo Board ไดนั้นเราจะตองทราบหมายเลขพอรทสื่อสาร (COM port) ที่ใชกอน แลวจึงกดปุม “เชื่อมตอ” หมายเลขนี้จะมีคาตางกันไป หากไมทราบวาจะใชคาใดใหเขาไปดูหมายเลขพอรทสื่อสารของเครื่องที่มีไดทาง Device Manager ของ Windows โดยพิมพคําสั่ง devmgmt.msc ในหนาตาง Run -3-
  • 4. เมื่อทดลองจนเชื่อมตอกับ GoGo Board ไดแลวก็จะเขาถึงหนาตางควบคุมหลักของโปรแกรมดังภาพ -4-
  • 5. -5-
  • 6. แผงควบคุมหลักของโปรแกรม GoGo Monitor แบงออกเปน 3 สวนใหญดวยกันคือ 1. สวนการควบคุมทั่วไป – สวนนี้ใชทดสอบการเชื่อมตอกับ GoGo Board เชน สงเสียง – สั่งให GoGo Board สงเสียงรองสั้นๆ เปด LED, ปด LED – สั่งเปด และ ปด ไฟแสดงสถานการณทํางานบน GoGo Board PING – จะตรวจสอบรุนของ GoGo Board ที่ใชงานอยู 2. สวนควบคุมมอรเตอร – GoGo Board มีพอรทเสียบมอรเตอรทั้งหมด 4 ชอง โดยแตละชองมีชื่อวา A, B, C, D ตามลําดับ หากตองการควบคุมการทํางานของมอรเตอรใดก็ใหเลือกมอรเตอรนั้นโดยการทําเครื่องหมายใน ชองดานขางชื่อของมอรเตอรนั้นๆ โดยสามารถเลือกมอรเตอรไดหลายตัวพรอมกัน เมื่อเลือกมอรเตอรที่ตองการ แลวก็สามารถสั่งงานตางๆ ไดดังนี้ เปด, ปด – สั่งเปดและปดพอรทนั้นๆ เบรก –คือการใสแรงตานการหมุนเพื่อใหมอรเตอรอยูนิ่ง ปลอย – คือการตัดไฟเฉยๆ มอรเตอรสามารถหมุนฟรีได กําลัง – คือการตั้งคาวามอรเตอรจะหมุดดวยกําลังสูงต่ําเพียงใด โดย 7 คือกําลังสูงสุด ทางนี,้ ทางนั้น – คือการกําหนดทิศทางการหมุนของมอรเตอร กลับทิศ – คือการกลับทิศการหมุนของมอรเตอร 3. เซ็นเซอร – GoGo Board มีพอรทเซ็นเซอรทั้งหมด 8 ชอง เรียกชื่อวา เซ็นเซอร 1 ถึง เซ็นเซอร 8 โดย GoGo Board จะสงคาของเซ็นเซอรเหลานี้มายังโปรแกรม GoGo Monitor อยางตอเนื่องทันทีหลังจากกดปุม “เริ่ม” ปกติแลวหากไมมีเซ็นเซอรตอเชื่อมอยูคาที่อานไดจะมีคาเทากับ 1023 ซึ่งเปนคาสูงสุด คาที่ไดนี้จะเปลี่ยนไปเมื่อ มีเซ็นเซอรเสียบอยู -6-
  • 7. คําสั่งควบคุม GoGo Board จาก Micro Worlds คําสั่งเกี่ยวกับเซ็นเซอร sensor1 อานคาจะเซ็นเซอรที่กําหนด คาที่ไดจะอยูระหวาง 0-1023 คาที่ไดนี้แสดงใหเห็น sensor2 คาความตานทานระหวางสายทั้งสองเสนของเซ็นเซอร sensor3 sensor4 • คา 1023 เปนคาปกติที่จะไดเมื่อไมมีเซ็นเซอรเสียบอยู ซึ่งหมายถึงคา sensor5 ความตานทานสูงที่สุด (ไมมีกระแสไฟวิ่งผานระหวางสายสองเสนได sensor6 เลย) sensor7 • คา 0 เปนคาที่จะไดเมื่อไมมีความตานทานระหวางสายทั้งสองเสนเลย sensor8 เชน เมื่อสายแตะกัน ตัวอยาง show sensor1 จะแสดงคาเซ็นเซอร 1 ออกมา if sensor1 < 100[ fd 100] สั่งใหเตาเดินหนา 100 กาวถาเซ็นเซอรมีคานอยกวา 100 waituntil [sensor2 > 500] โปรแกรมจะหยุดรอจนกวาคาเซ็นเซอร 2 จะมากกวา 500 คําสั่งควบคุมมอรเตอร tta ยอมาจาก Talk To ใชกําหนดวาเราจะสั่งงานมอรเตอรพอรทใด ttb ttc ttd TalkToPort ใชเมื่อตองการสั่งงานมอรเตอรมากกวาหนึ่งตัวพรอมๆ กัน [Port-list] Port-list ประกอบไปดวยชื่อของพอรทมอรเตอรที่ตองการ ตัวอยาง TalkToPort [a b c] จะเลือกมอรเตอร A, B, และ C On เปดมอรเตอรที่เลือกไวใหหมุน -7-
  • 8. Off ปดมอรเตอร หมายเหตุ – คําสั่งนี้จริงๆ แลว รวมคําสั่ง Break และ Coast เขาดวยกัน คือ คําสั่ง Off จะสั่งเบรกกอนเปนเวลาสั้นๆ แลวตามดวย Coast เพื่อตัดไฟ และ ประหยัดพลังงาน Coast ปดมอรเตอรโดยไมเบรก คือตัดไฟเฉยๆ มอรเตอรอาจไมหยุดหมุนในทันที Break ปดมอรเตอรโดยการเบรก คือ จะมีแรงฝนไมใหมอรเตอรหมุน ซึ่งอาจทําใหมอรเต อรหยุดหมุนไดเร็ว แตวิธีนี้ก็จะกินไฟมาก จึงไมควรทิ้งมอรเตอรไวในสถานะนี้ นานๆ OnFor Duration Turns on the active port for a Duration of time. Duration is in tenth of a second. ตัวอยาง tta on wait 10 off จะเปดมอรเตอรพอรท A ไว 1 วินาทีแลวปด ซึ่งทํางานเหมือนกันกับคําสั่งตอไปนี้ tta onfor 10 Thisway Thatway ใชกําหนดทิศทางการหมุนของมอรเตอร โดย Thisway กับ Thatway อาจ หมายถึงการหมุนตามเข็มหรือทวนเข็มนาฬิกาก็ไดแลวแตทิศทางการเสียบมอร เตอรลงบน GoGo Board Rd ใชกลับทิศการหมุนของมอรเตอร SetPower Power ใชกําหนดระดับกําลังของมอรเตอร Power มีคาระหวาง 0 ถึง 7 โดย 7 คือกําลังสูงสุดในคณะที่ 0 เหมือนการปดมอร เตอรนั่นเอง ตัวอยาง TalkToMotor [a b c d] setpower 4 จะตั้งคากําลังของมอรเตอรทุกตัวตั้งแต A-D ใหมีคาเทากับ 4 -8-
  • 9. คําสั่งควบคุม GoGo Board จาก GoGo Monitor มอรเตอร GoGo Board มีมอรเตอรสี่ตัวชื่อวา A, B, C, และ D การใชงานมอรเตอรนั้นจะเริ่มตนดวยการเลือกมอร เตอร (ใชคําสั่ง a, b, ab, ฯลฯ) แลวบอกมันวาตองการใหทําอะไร (เชน, on (เปด), off(ปด), rd (กลับ ทิศ) ฯลฯ) a, เลือกสั่งงานมอรเตอร A b, เลือกสั่งงานมอรเตอร B c, เลือกสั่งงานมอรเตอร C d, เลือกสั่งงานมอรเตอร D สามารถผสมอักษรเพื่อ เลือกมอรเตอรหลายตัว เชน ab, เลือกสั่งงานมอรเตอร AB acd เลือกสั่งงานมอรเตอร A C และ D on เปดมอรเตอรที่เลือกไว off ปดมอรเตอรที่เลือกไว onfor ระยะเวลา เปดมอรเตอรไวเปนเวลาหนึ่ง, "ระยะเวลา" เปนตัวกําหนดวามอรเตอรจะถูก เปดไวเปนเวลานานเทาใด หนวยของเวลาคือ หนึ่งในสิบของวินาที ยกตัวอยางเชน onfor 10 จะเปดมอรเตอรไวเปนเวลาหนึ่งวินาที thisway กําหนดทิศทางการหมุนของมอรเตอรใหเปน "ทางนี้" (ซึ่งจะเปนทางไหนนั้น ขึ้นอยูกับการตอมอรเตอร) ไฟสถานะเมื่อมอรเตอรหมุน "ทางนี" จะเปนสี ้ เขียว thatway กําหนดทิศทางการหมุนของมอรเตอรใหเปน "ทางนั้น" (ซึ่งจะเปนทาง ตรงกันขามกับ "ทางนี") ไฟสถานะเมื่อมอรเตอรหมุน "ทางนั้น" จะเปนสีแดง ้ rd กลับทิศการหมุน ไมวามอรเตอรจะหมุนทางใด คําสั่งนี้จะกลับทิศการหมุน นั้นใหเปนทางตรงขาม setpower ระดับ ตั้งคากําลังของมอรเตอร: คา "ระดับ" มีชวงอยูระหวาง 0 (ไมกําลังเลย มอร เตอรจะหยุด) ไปจนถึง 7 (เต็มกําลัง) คาระดับกําลังปกติของมอรเตอรคือ 7 -9-
  • 10. เวลา ดวยคําสั่ง wait เราสามารถบอกให GoGo Board อยูเฉยๆ ใหเวลาผานไประยะหนึ่ง ในขณะที่ GoGo Board อยูเฉยๆ นี้ มอรเตอรจะถูกเปดทิ้งไวก็ได เชน ab, on wait 20 off จะเปดมอรเตอร A และ B ไวเปนเวลา 2 วินาที คําสั่งนี้ใหผลเหมือนกันกับ: ab, onfor 20 นอกจากนี้ในตัว GoGo Board ยังมีนาฬิกาที่เดินอยูตลอดเวลาแมในขณะที่ GoGo Board กําลังทํางาน อยางอื่นอยู มีคําสั่งสองคําสั่งที่ใชงานนาฬิกานี้คือ resett ซึ่งจะทําใหนาฬิกาเริ่มนับจากศูนยใหม และ timer ซึ่งจะแจงคานาฬิกาปจจุบัน (เปนคาตัวเลขคาหนึ่ง) ตารางตอไปนี้สรุปการใชงานคําสั่ง wait, timer, และ resett wait ระยะเวลา หยุดอยูเฉยๆ เปนเวลาเทากับคา "ระยะเวลา" ที่กําหนด หนวยของ เวลาคือ หนึ่งในสิบวินาที ตัวอยางเชน wait 10 จะทําให GoGo Board อยูเฉยๆ เปนเวลาหนึ่งวินาที. timer แจงคานาฬิกา หนวยของเวลาจะนับทุกๆ 0.1 วินาที ดังนั้นถา timer = 20, แสดงวานาฬิกาเริ่มนับมาเปนเวลาสองวินาที resett บอกใหนาฬิกาเริ่มนับจากศูนยใหม -10-
  • 11. เซ็นเซอร GoGo Board มีเซ็นเซอรอยู 8 พอรทดวยกัน ชื่อวา sensor1-8 มีอปกรณหลายชนิดที่สามารถใชงานกับ ุ เซ็นเซอรนี้ได เชน • อุปกรณที่มีสถานะเปด/ปด เชนปุม หรือ สวิตชชนิดตางๆ • เซ็นเซอรที่เปลี่ยนแปลงคาความตานทานของตัวเอง เชน เซ็นเซอรแสง หรือ เซ็นเซอรอุณหภูมิ • อุปกรณอิเลคทรอนิคสใดๆ ที่ผลิตความตางศักดิ์ ระหวาง 0 ถึง 5 โวลต คําสั่งที่ใชอานคาเซ็นเซอรมีอยูสองแบบดวยกัน แบบแรกเรียกวา switch ซึ่งจะสงคาจริงหรือเท็จกลับมา เทานั้น (ใชกับเซ็นเซอรที่มีสองสถานะคือเปดหรือปด) แบบที่สองคือ sensor ซึ่งจะสงคาตัวเลขระหวาง 0 ถึง 1023 ออกมา โดยคาที่ไดจะขึ้นอยูกับเซ็นเซอรที่ใช Switch1 ถาสวิทชที่ตออยูกับเซ็นเซอร 1-8 ถูกกดอยู คําสั่งนี้จะรายงานคา "จริง" ออกมา ถา Switch2 ไมเชนนั้นก็จะรายงานคา "เท็จ" Switch3 Switch4 Switch5 Switch6 Switch7 Switch8 Sensor1 รายงานคาเซ็นเซอร 1-8 โดยคานี้จะอยูระหวาง 0 ถึง 1023 Sensor2 Sensor3 Sensor4 Sensor5 Sensor6 Sensor7 Sensor8 คําสั่งโครงสราง ภาษา Logo มีคําสั่งโครงสรางชุดเล็กๆ ที่มีประโยชนมาก คําสั่งเหลานี้ประกอบไปดวยคําสั่งที่ใชในการ วนรอบ, ทดสอบเงื่อนไข, รอแบบมีเงื่อนไข, และคําสั่งจบการทํางานของโปรแกรม ภาพรวม คําสั่งโครงสรางที่มีใน ภาษา Logo ถูกสรุปไวในตารางตอไปนี้ repeat ครั้ง [คําสั่ง] วนทํา "คําสั่ง" เปนจํานวนครั้งเทากับ "ครั้ง" คา "ครั้ง" อาจเปนคาคงที่ ,คาจากการคํานวน, หรือตัวแปรก็ได forever [คําสั่ง] วนทํา "คําสั่ง" ไปแบบไมมีที่สิ้นสุด if เงื่อนไข [คําสั่ง] ถา "เงื่อนไข" เปนจริง จะทํา "คําสั่ง" เงื่อนไขที่มีคาเปน 0 ถือวามีคาเปน เท็จ คาอื่นที่ไมใช 0 จะถือวามีคาเปน จริง ifelse condition ถา "เงื่อนไข" เปนจริง จะทํา "คําสั่ง-1" ถาไมเชนนั้น จะทํา "คําสั่ง-2" [คําสั่ง-1] [คําสั่ง-2] -11-
  • 12. waituntil [เงื่อนไข] โปรแกรมจะรอและไมทําคําสั่งถัดไปจนกระทั่ง "เงื่อนไข" เปนจริง โปรด สังเกตวาเงื่อนไขจะตองอยูในวงเล็บเหลี่ยม ไมเหมือนกับคําสั่ง if และ ifelse ที่เงือนไขไมตองอยูในวงเล็บใดๆ stop หยุดการทํางานของ procedure ปจจุบัน และ กลับไปทําคําสั่งถัดไปใน procedure แม (procedure ที่เรียกใชงาน procedure ปจจุบัน) output คา หยุดการทํางานของ procedure ปจจุบัน และ สง "คา" กลับไปยัง procedure แม ตัวอยาง procedure ตอไปนี้จะทําใหมอรเตอร A หมุนกลับไปกลับมา 10 ครั้ง to flippy repeat 10 [a, onfor 10 rd] end สองตัวอยางตอไปนี้แสดงใหเห็นวิธีที่จะทําใหมอรเตอร A หมุนกลับไปกลับมาเรื่อยๆ ไมมีวันสิ้นสุด to flippy-forever-1 forever [a, onfor 10 rd] end procedure ตอไปนี้ทําการเปดมอรเตอร A แลวรอจดกวาสวิทช 2 ถูกกด แลวจึงปดมอรเตอร to on-wait-off a, on waituntil [switch2] off end procedure ตอไปนี้จะทําการอานคาสวิทช 2 อยูเรื่อยๆ ถาสวิทชถูกกดมอรเตอร A จะหมุนไป "ทางนี" ้ แตถาสวิทชไมถูกกดมอรเตอรจะหมุนไป "ทางนั้น" to switch-controls-direction a, on forever [ ifelse switch2 [thisway][thatway] ] end ระบบตัวเลข GoGo Board ใชระบบตัวเลขขนาด 16 บิท ซึ่งหมายความวาคาตัวเลขที่สามารถใชงานไดจะอยูระหวาง -32768 ถึง +32767. การใชงานเครื่องหมายทางเลขคณิตจะตองมีการเวนวรรคทั้งสองดานเสมอ นั่นคือการเขียน 3+4 เปน รูปแบบที่ผิด รูปแบบที่ถูกคือ 3 + 4 (มีวรรคกอนหนาและหลังเครื่องหมายบวก). -12-
  • 13. ภาษา Logo ไมไดใชระบบลําดับความสําคัญของเครื่องหมายคณิตศาสตรที่เปนมาตรฐานทั่วไป แตจะ ถือเอาตามลําดับการเขียนเรียงจากซายไปขวา ดังนั้น 3+4*5 จะมีคาเทากับ 35 เพราะ ภาษา Logo จะทํา 3 + 4 แลวคูณผลลัพทดวย 5. (ซึ่งตางจากมาตรฐานการ ประมวลผลในภาษาคอมพิวเตอรทั่วไป ซึ่งจะถือวา * สําคัญกวา + ดังนั้นผลลัพทที่จะไดจะเปน 4*5 แลวบวกดวย 3) วงเล็บเปนวิธีการที่ใชในการกําหนดลําดับกอนหนังใหกับการคํานวน เชน (3 + (4 * 5)) คาที่ไดคือ 23. ตารางตอไปนี้แสดงเครื่องหมายทางคณิตศาสตรทั้งหมดที่มีใน ภาษา Logo + บวก (แบบ infix) - ลบ (แบบ infix) * คูณ (แบบ infix) / หาร (แบบ infix) % หารเอาเศษ (เชน 5 % 3 จะเทากับ 2) and ตรรกะ "และ" ใชทั้งกับการหาทางทางตรรกศาสตร (จริงหรือเท็จ) และ bitwise operation or ตรรกะ "หรือ" not ตรรกะ "ไม" random ใชสุมคาตัวเลข คาที่ไดจะอยูระหวาง -32768 ถึง +32768. ถาตองการลดชวง ของคาลง ใหใชการหารเอาเศษ (%) เชน (random % 100) จะไดคาสุม ตั้งแต 0 ถึง 99 -13-
  • 14. Procedures และการรับ-สงคา (input-output) คําจํากัดความ การสราง procedure จะเริ่มดวยคําสั่ง to ตามดวยชื่อ procedure ตามดวยชุดคําสั่งที่เปนใจความของ procedure แลวจบดวยคําสั่ง end ตัวอยางตอไปนี้ เปนการสราง procedure ชื่อวา flash ซึ่งทําการเปด และปดมอรเตอร A สิบครั้ง to flash repeat 10 [a, onfor 5 wait 5] end การรับคา (Inputs) เราสามารถกําหนด Procedures ใหทําการรับคาได ซึ่งคาดังกลาวจะกลายเปนตัวแปรของ procedure นั้นๆ (local variable) การกําหนดการรับคาจะทําโดยการใชเครื่องหมาย colon (:) ตัวอยางตอไปนี้เปน การสราง procedure ชื่อ flash ซึ่งมีการรับคาหนึ่งคา (ชื่อวา n) คาที่รับเขามานี้ถูกใชในการกําหนด จํานวนครั้งการวนรอบของคําสั่ง repeat to flash :n repeat :n [a, onfor 5 wait 5] end เมื่อเรียกใช procedure นี้จะตองตามดวยคาตัวเลขหนึ่งคาเสมอ เชน flash 5, flash 10, flash 20, ฯลฯ procedure สามารถรับคากี่คาก็ได ภาษา Logo ไมไดจํากัดไว แตในทางปฎิบัติบริมาณหนวยความจําที่ เหลืออยูของ GoGo Board จะเปนตัวจํากัด การสงคา (Outputs) Procedure สามารถสงคากลับไดโดยใชคําสั่ง output เมื่อ procedure เรียกใชคําสั่งดังกลาวแลว มันจะ จบการทํางานทันที ตัวอยางตอไปนี้แสดง procedure ชื่อ detect ซึ่งจะสงคา 0, 1, หรือ 2 ขึ้นอยูกับคา ของเซ็นเซอร 1 to detect make “temp sensor1 if :temp < 300 [output 1] if :temp < 500 [output 2] output 3 end ในตัวอยางนี้มีการสรางตัวแปรชื่อ temp ซึ่งถูกใชในการเก็บคาของเซ็นเซอร 1 ถาคาเซ็นเซอรนี้นอยกวา 300 procedure จะสงคา 1 แตถาคาเซ็นเซอรมากกวา 300 คําสั่งถัดไปจะทํางาน ซึ่งจะทดสอบวาถาคา ดังกลาวนอยกวา 500 procedure จะสงคา 2 ทายที่สุดถาคาเซ็นเซอรไมนอยกวา 500 procedure จะ สงคา 3 ขอควรระวัง ถาตัดสินใจใชคําสั่ง output แลว จะตองตรวจสอบใหแนใจเสมอวา procedure นั้นจะมี การสงคาไมวาในกรณีใดๆ (นั่นคือ procedure จะสงคาบางไมสงคาบางไมได) การทํางานของ GoGo Board จะลมเหลวทันทีถา procedure นั้นจบการทํางานโดยไมมีการสงคา -14-
  • 15. ตัวแปร การสรางตัวแปร Global จะทําโดยใชคําสั่ง make “ชื่อตัวแปร เชน Make “cats 0 make “dogs 1 จะสรางตัวแปรสองตัวชื่อ cats และ dogs และกําหนดคาใหเปน 0 และ 1 ตามลําดับ จะสังเกตไดวาเวลาเราจะเขียนคาลงในตัวแปรเราจะใสเครื่องหมายคําพูดนําหนาชื่อตัวแปรเสมอ แตถา ตองการอานคาจากตัวแปรจะใชเครื่องหมาย : แทน เชน If :cats > 0 [ a, on ] จะทดสอบวาคาในตัวแปร cats มากกวา 0 หรือไม ถาใชก็จะเปดมอรเตอร A Make “cats :cats + 1 จะเพิ่มคาตัวแปร cats ขึ้น 1 ตัวแปรจะถูกจัดเก็บในหนวยความจํา RAM ซึ่งจะตองมีไฟเลี้ยงอยูเสมอ ดังนั้นคาตัวแปรจะสูญหายถาปด GoGo Board -15-
  • 16. การบันทึกและเรียกคืนขอมูล (Data Recording and Playback) ภาษา Logo มี global array ขนาด 8000 ชอง อยูหนึ่งตัวซึ่งสามารถใชงานกับคําสั่งตอไปนี้ได setdp ตําแหนง ตั้งคาตัวชี้ตําแหนง record คา บันทึก "คา" ลงไปในตําแหนงปจจุบัน และเลื่อนตัวชี้ใหไปอยูในตําแหนงถัดไป recall เรียกคืนคาในตําแหนงปจจุบัน และเลื่อนตัวชี้ใหไปอยูในตําแหนงถัดไป ตัวอยาง procedure ชื่อ take-data ตอไปนี้จะบันทึกคาเซ็นเซอร A ทุกๆ หนึ่งวินาที to take-data setdp 0 repeat 1000 [record sensor1 wait 10] end เมื่อมีการบันทึกขอมูลแลว สามารถใช GoGo Monitor ในการดึงขอมูลมาเก็บไวในรูปแบบของไฟล CSV (Comma Separated Values) เพื่อนําไปประมวลผลโดยใชโปรแกรมอื่นๆ เชน Excel ตอไป หมายเหตุ ภาษา Logo ไมมีการตรวจสอบวาการบันทึกขอมูลเกินขอบเขตหรือไม (มากกวา 8000) ซึ่ง อาจสงผลใหเกิดความผิดพลาดกับขอมูลหรือโปรแกรมสวนอื่น -16-
  • 17. การสื่อสารขอมูลทางชองสัญญาณอนุกรม (Serial Port) ภาพรวม GoGo Board สามารถสงและรับขอมูลหากันผานทางชองสัญญาณอนุกรมไดโดยใชคําสั่ง send และ serial ตามลําดับ คําสั่ง serial จะรายงานคาที่ไดรับลาสุด นอกจากนี้ยังมีคําสั่ง newserial? ซึ่งจะ รายงานคาจริงถา GoGo Board ไดรับรับมูลตัวใหมเขามาแตยังไมไดถูกนําไปใช ลองพิจารณาตัวอยางตอไปนี้ procedure ชื่อ sender จะทําการสงขอมูลไปยังคอมพิวเตอร, โดยคาที่สง จะเปนคาสุมระหวาง 0 ถึง 2 to sender forever [ send random % 3 beep wait 30 ] end คําสั่ง random % 3 จะสรางคา 0, 1, หรือ 2 ซึ่งเปนผลจากการใชเครื่องหมาย "หารเอาเศษ" คาที่ได จะถูกสงโดยคําสั่ง send หลังจากนั้น ก็จะสงเสียง beeps และรอ 3 วินาทีกอนที่จะวนสรางและสงคา ออกไปอีกครั้ง ในตัวอยางที่สอง Procedure ชื่อ doit จะทําการรับคาที่ Computer แลวจะเปดมอรเตอร A, มอรเตอร B หรือทั้งคู ขึ้นอยูกับคาที่มันไดรับ to doit forever [ waituntil [newserial?] if serial = 0 [a, onfor 10] if serial = 1 [b, onfor 10] if serial = 2 [ab, onfor 10] ] end หมายเหตุ GoGo Board ใชคา 128 ถึง 134 สําหรับการทํางานระดับต่ําระหวาง GoGo Board ดังนั้นพยายามอยา สงคาตัวเลขเหลานี้ คาเหลานี้อาจทําใหหนวยความจําของ GoGo Board บางตัว (ตัวที่เปดอยูแตไมได ทํางานอะไร) ถูกเขียนทับและสงผลเสียหายได ปุมบนตัว GoGo Board เมื่อกดปุมในขณะที่ GoGo Board ไมไดทํางานอะไร จะทําใหมันเริ่มตนประมวลผล procedure แรกที่ เขียนไวในหนาจอของ ภาษา Logo ถากดปุมในขณะที่ GoGo Board กําลังทํางานจะสงผลใหมันหยุดการทํางานปจจุบันทันที -17-