แนะนําการใช GoGo Board เบื้องตน                 ดร.อานันท สีหพิทักษเกียรติ      ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรร...
สวนประกอบของ GoGo Boardอุปกรณที่จําเปน                             แหลงจายไฟ                              GoGo Board ...
เริ่มตนใชงาน GoGo Boardโปรแกรม GoGo Monitorโปรแกรมนี้เปนโปรแกรมหลักที่ใชในการตรวจสอบการทํางานของ GoGo Board โดยสามารถด...
เมื่อทดลองจนเชื่อมตอกับ GoGo Board ไดแลวก็จะเขาถึงหนาตางควบคุมหลักของโปรแกรมดังภาพ                                  ...
-5-
แผงควบคุมหลักของโปรแกรม GoGo Monitor แบงออกเปน 3 สวนใหญดวยกันคือ  1.   สวนการควบคุมทั่วไป – สวนนี้ใชทดสอบการเชื่อม...
คําสั่งควบคุม GoGo Board จาก                                Micro Worlds                                   คําสั่งเกี่ยวกั...
Off        ปดมอรเตอร                 หมายเหตุ – คําสั่งนี้จริงๆ แลว รวมคําสั่ง Break และ Coast เขาดวยกัน คือ        ...
คําสั่งควบคุม GoGo Board จาก                                 GoGo MonitorมอรเตอรGoGo Board มีมอรเตอรสี่ตัวชื่อวา A, B...
เวลาดวยคําสั่ง wait เราสามารถบอกให GoGo Board อยูเฉยๆ ใหเวลาผานไประยะหนึ่ง ในขณะที่ GoGoBoard อยูเฉยๆ นี้ มอรเตอรจ...
เซ็นเซอรGoGo Board มีเซ็นเซอรอยู 8 พอรทดวยกัน ชื่อวา sensor1-8 มีอปกรณหลายชนิดที่สามารถใชงานกับ                   ...
waituntil [เงื่อนไข]            โปรแกรมจะรอและไมทําคําสั่งถัดไปจนกระทั่ง "เงื่อนไข" เปนจริง โปรด                        ...
ภาษา Logo ไมไดใชระบบลําดับความสําคัญของเครื่องหมายคณิตศาสตรที่เปนมาตรฐานทั่วไป แตจะถือเอาตามลําดับการเขียนเรียงจากซ...
Procedures และการรับ-สงคา (input-output)คําจํากัดความการสราง procedure จะเริ่มดวยคําสั่ง to ตามดวยชื่อ procedure ตามด...
ตัวแปรการสรางตัวแปร Global จะทําโดยใชคําสั่ง make “ชื่อตัวแปร เชน        Make “cats 0        make “dogs 1จะสรางตัวแปรส...
การบันทึกและเรียกคืนขอมูล (Data Recording and Playback)ภาษา Logo มี global array ขนาด 8000 ชอง อยูหนึ่งตัวซึ่งสามารถใช...
การสื่อสารขอมูลทางชองสัญญาณอนุกรม (Serial Port)ภาพรวมGoGo Board สามารถสงและรับขอมูลหากันผานทางชองสัญญาณอนุกรมไดโดยใ...
Upcoming SlideShare
Loading in …5
×

Go go board introduction

4,495 views

Published on

  • Be the first to comment

Go go board introduction

  1. 1. แนะนําการใช GoGo Board เบื้องตน ดร.อานันท สีหพิทักษเกียรติ ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร มหาวิทยาลัยเชียงใหม
  2. 2. สวนประกอบของ GoGo Boardอุปกรณที่จําเปน แหลงจายไฟ GoGo Board ใชไฟไดจากสองแหลงคือ ถาน AA จํานวน 6 กอน ซึ่งจะบรรจุอยูในลังถานดาน ใต หรือจะเสียบไฟจากหมอแปลงไฟกระแส ตรงที่มีแรงดันระหวาง 9-12 โวลท การตอพวงกับคอมพิวเตอร GoGo Board ติดตอกับคอมพิวเตอรผานทาง พอรทอนุกรม ถาคอมพิวเตอรมีพอรทดังกลาว อยู ก็สามารถนําสายอนุกรม (บางทีรูจักกันใน ชื่อ สาย Serial หรือ DB-9) ตอเขากับ GoGo Board ไดโดยตรง แตเครื่องคอมพิวเตอรพกพา สวนใหญจะไมมีพอรทนี้ ดังนั้นจะตองใช อุปกรณที่เรียกวา USB to Serial Adapter เพื่อเสียบสายเขากับพอรท USB ของ คอมพิวเตอรแทน -2-
  3. 3. เริ่มตนใชงาน GoGo Boardโปรแกรม GoGo Monitorโปรแกรมนี้เปนโปรแกรมหลักที่ใชในการตรวจสอบการทํางานของ GoGo Board โดยสามารถดาวนโหลดโปรแกรมนี้ไดฟรีที่ http://www.gogoboard.org เมื่อติดตั้งและใชงานโปรแกรมจะพบหนาตางดังรูปตอไปนี้การที่จะเริ่มใชงาน GoGo Board ไดนั้นเราจะตองทราบหมายเลขพอรทสื่อสาร (COM port) ที่ใชกอน แลวจึงกดปุม“เชื่อมตอ” หมายเลขนี้จะมีคาตางกันไป หากไมทราบวาจะใชคาใดใหเขาไปดูหมายเลขพอรทสื่อสารของเครื่องที่มีไดทางDevice Manager ของ Windows โดยพิมพคําสั่ง devmgmt.msc ในหนาตาง Run -3-
  4. 4. เมื่อทดลองจนเชื่อมตอกับ GoGo Board ไดแลวก็จะเขาถึงหนาตางควบคุมหลักของโปรแกรมดังภาพ -4-
  5. 5. -5-
  6. 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. 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 ttdTalkToPort ใชเมื่อตองการสั่งงานมอรเตอรมากกวาหนึ่งตัวพรอมๆ กัน [Port-list] Port-list ประกอบไปดวยชื่อของพอรทมอรเตอรที่ตองการ ตัวอยาง TalkToPort [a b c] จะเลือกมอรเตอร A, B, และ C On เปดมอรเตอรที่เลือกไวใหหมุน -7-
  8. 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 10Thisway 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. 9. คําสั่งควบคุม GoGo Board จาก GoGo MonitorมอรเตอรGoGo Board มีมอรเตอรสี่ตัวชื่อวา A, B, C, และ D การใชงานมอรเตอรนั้นจะเริ่มตนดวยการเลือกมอรเตอร (ใชคําสั่ง a, b, ab, ฯลฯ) แลวบอกมันวาตองการใหทําอะไร (เชน, on (เปด), off(ปด), rd (กลับทิศ) ฯลฯ)a, เลือกสั่งงานมอรเตอร Ab, เลือกสั่งงานมอรเตอร Bc, เลือกสั่งงานมอรเตอร Cd, เลือกสั่งงานมอรเตอร Dสามารถผสมอักษรเพื่อเลือกมอรเตอรหลายตัวเชน ab, เลือกสั่งงานมอรเตอร AB acd เลือกสั่งงานมอรเตอร A C และ Don เปดมอรเตอรที่เลือกไวoff ปดมอรเตอรที่เลือกไวonfor ระยะเวลา เปดมอรเตอรไวเปนเวลาหนึ่ง, "ระยะเวลา" เปนตัวกําหนดวามอรเตอรจะถูก เปดไวเปนเวลานานเทาใด หนวยของเวลาคือ หนึ่งในสิบของวินาที ยกตัวอยางเชน onfor 10 จะเปดมอรเตอรไวเปนเวลาหนึ่งวินาทีthisway กําหนดทิศทางการหมุนของมอรเตอรใหเปน "ทางนี้" (ซึ่งจะเปนทางไหนนั้น ขึ้นอยูกับการตอมอรเตอร) ไฟสถานะเมื่อมอรเตอรหมุน "ทางนี" จะเปนสี ้ เขียวthatway กําหนดทิศทางการหมุนของมอรเตอรใหเปน "ทางนั้น" (ซึ่งจะเปนทาง ตรงกันขามกับ "ทางนี") ไฟสถานะเมื่อมอรเตอรหมุน "ทางนั้น" จะเปนสีแดง ้rd กลับทิศการหมุน ไมวามอรเตอรจะหมุนทางใด คําสั่งนี้จะกลับทิศการหมุน นั้นใหเปนทางตรงขามsetpower ระดับ ตั้งคากําลังของมอรเตอร: คา "ระดับ" มีชวงอยูระหวาง 0 (ไมกําลังเลย มอร เตอรจะหยุด) ไปจนถึง 7 (เต็มกําลัง) คาระดับกําลังปกติของมอรเตอรคือ 7 -9-
  10. 10. เวลาดวยคําสั่ง wait เราสามารถบอกให GoGo Board อยูเฉยๆ ใหเวลาผานไประยะหนึ่ง ในขณะที่ GoGoBoard อยูเฉยๆ นี้ มอรเตอรจะถูกเปดทิ้งไวก็ได เชน ab, on wait 20 offจะเปดมอรเตอร A และ B ไวเปนเวลา 2 วินาที คําสั่งนี้ใหผลเหมือนกันกับ: ab, onfor 20นอกจากนี้ในตัว GoGo Board ยังมีนาฬิกาที่เดินอยูตลอดเวลาแมในขณะที่ GoGo Board กําลังทํางานอยางอื่นอยู มีคําสั่งสองคําสั่งที่ใชงานนาฬิกานี้คือ resett ซึ่งจะทําใหนาฬิกาเริ่มนับจากศูนยใหม และtimer ซึ่งจะแจงคานาฬิกาปจจุบัน (เปนคาตัวเลขคาหนึ่ง)ตารางตอไปนี้สรุปการใชงานคําสั่ง wait, timer, และ resettwait ระยะเวลา หยุดอยูเฉยๆ เปนเวลาเทากับคา "ระยะเวลา" ที่กําหนด หนวยของ เวลาคือ หนึ่งในสิบวินาที ตัวอยางเชน wait 10 จะทําให GoGo Board อยูเฉยๆ เปนเวลาหนึ่งวินาที.timer แจงคานาฬิกา หนวยของเวลาจะนับทุกๆ 0.1 วินาที ดังนั้นถา timer = 20, แสดงวานาฬิกาเริ่มนับมาเปนเวลาสองวินาทีresett บอกใหนาฬิกาเริ่มนับจากศูนยใหม -10-
  11. 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. 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] endprocedure ตอไปนี้ทําการเปดมอรเตอร A แลวรอจดกวาสวิทช 2 ถูกกด แลวจึงปดมอรเตอร to on-wait-off a, on waituntil [switch2] off endprocedure ตอไปนี้จะทําการอานคาสวิทช 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. 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 operationor ตรรกะ "หรือ"not ตรรกะ "ไม"random ใชสุมคาตัวเลข คาที่ไดจะอยูระหวาง -32768 ถึง +32768. ถาตองการลดชวง ของคาลง ใหใชการหารเอาเศษ (%) เชน (random % 100) จะไดคาสุม ตั้งแต 0 ถึง 99 -13-
  14. 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 จะสงคาบางไมสงคาบางไมได) การทํางานของ GoGoBoard จะลมเหลวทันทีถา procedure นั้นจบการทํางานโดยไมมีการสงคา -14-
  15. 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. 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. 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-

×