17
แนะนําการใช GoGo Board เบื้องตน ดร.อานันท สีหพิทักษเกียรติ ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร มหาวิทยาลัยเชียงใหม

แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

แนะนําการใช GoGo Board เบื้องตน ดร.อานันท สีหพิทักษเกียรต ิ

ภาควิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร มหาวิทยาลัยเชียงใหม

Page 2: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-2-

สวนประกอบของ GoGo Board

อุปกรณท่ีจําเปน

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

การตอพวงกับคอมพิวเตอร GoGo Board ติดตอกับคอมพิวเตอรผานทางพอรทอนุกรม ถาคอมพิวเตอรมีพอรทดังกลาวอยู ก็สามารถนําสายอนุกรม (บางทีรูจักกันในชื่อ สาย Serial หรือ DB-9) ตอเขากับ GoGo

Board ไดโดยตรง แตเคร่ืองคอมพิวเตอรพกพาสวนใหญจะไมมีพอรทน้ี ดังน้ันจะตองใชอุปกรณท่ีเรียกวา USB to Serial Adapter

เพ่ือเสียบสายเขากับพอรท USB ของคอมพิวเตอรแทน

Page 3: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-3-

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

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

Page 4: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-4-

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

Page 5: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-5-

Page 6: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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 ซึ่งเปนคาสูงสุด คาท่ีไดน้ีจะเปล่ียนไปเมื่อมีเซ็นเซอรเสียบอยู

Page 7: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-7-

คําสั่งควบคุม GoGo Board จาก

Micro Worlds คําส่ังเกี่ยวกับเซ็นเซอร

sensor1 sensor2 sensor3 sensor4 sensor5 sensor6 sensor7 sensor8

อานคาจะเซ็นเซอรท่ีกําหนด คาท่ีไดจะอยูระหวาง 0-1023 คาท่ีไดนี้แสดงใหเห็นคาความตานทานระหวางสายท้ังสองเสนของเซ็นเซอร

• คา 1023 เปนคาปกติท่ีจะไดเมื่อไมมีเซ็นเซอรเสียบอยู ซึ่งหมายถึงคาความตานทานสูงท่ีสุด (ไมมีกระแสไฟว่ิงผานระหวางสายสองเสนไดเลย)

• คา 0 เปนคาท่ีจะไดเมื่อไมมีความตานทานระหวางสายท้ังสองเสนเลย เชน เมื่อสายแตะกัน

ตัวอยาง show sensor1

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

if sensor1 < 100[ fd 100]

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

waituntil [sensor2 > 500]

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

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

tta ttb ttc ttd

ยอมาจาก Talk To ใชกําหนดวาเราจะส่ังงานมอรเตอรพอรทใด

TalkToPort [Port-list]

ใชเมื่อตองการส่ังงานมอรเตอรมากกวาหนึ่งตัวพรอมๆ กัน

Port-list ประกอบไปดวยชื่อของพอรทมอรเตอรท่ีตองการ

ตัวอยาง TalkToPort [a b c]

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

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

Page 8: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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

Page 9: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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

Page 10: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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 บอกใหนาฬิกาเร่ิมนับจากศูนยใหม

Page 11: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-11-

เซ็นเซอร

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

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

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

Switch1 Switch2 Switch3 Switch4 Switch5 Switch6 Switch7 Switch8

ถาสวิทชที่ตออยูกับเซ็นเซอร 1-8 ถูกกดอยู คําสั่งน้ีจะรายงานคา "จริง" ออกมา ถาไมเชนน้ันก็จะรายงานคา "เท็จ"

Sensor1 Sensor2 Sensor3 Sensor4 Sensor5 Sensor6 Sensor7 Sensor8

รายงานคาเซ็นเซอร 1-8 โดยคาน้ีจะอยูระหวาง 0 ถึง 1023

คําสั่งโครงสราง

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

ภาพรวม

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

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

forever [คําสั่ง] วนทํา "คําสั่ง" ไปแบบไมมีที่สิ้นสุด

if เง่ือนไข [คําสั่ง] ถา "เง่ือนไข" เปนจริง จะทํา "คําสั่ง" เง่ือนไขที่มีคาเปน 0 ถือวามีคาเปน เท็จ คาอื่นที่ไมใช 0 จะถือวามีคาเปน จริง

ifelse condition [คําสั่ง-1] [คําสั่ง-2]

ถา "เง่ือนไข" เปนจริง จะทํา "คําสั่ง-1" ถาไมเชนน้ัน จะทํา "คําสั่ง-2"

Page 12: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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 (มีวรรคกอนหนาและหลังเคร่ืองหมายบวก).

Page 13: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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

Page 14: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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 น้ันจบการทํางานโดยไมมีการสงคา

Page 15: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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

Page 16: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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) ซ่ึงอาจสงผลใหเกิดความผิดพลาดกับขอมูลหรือโปรแกรมสวนอื่น

Page 17: แนะนําการใช GoGo Board เบื้องต น Board...-3- เร มต นใช งGานoGo Board โปรแกรม GoGo Monitor โปรแกรมน

-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 กําลงัทํางานจะสงผลใหมันหยุดการทํางานปจจุบันทันท ี