การเก็บค่าแสงของโปรแกรม Robolab ในหุ่นยนต์ Lego Mindstorms

การใช้เซนเซอร์แสงตรวจสอบเส้นดำจะต้องมีค่าแสงที่ไว้ใช้ในการเปรียบเทียบ ซึ่งค่าแสงดังกล่าวมีวิธีได้มาดังนี้ (1) นำเซนเซอร์แสงที่ติดตั้งกับหุ่นยนต์ไปวัดค่าแสงพื้นผิวที่เป็นสีขาว (2) นำเซนเซอร์แสงตัวเดียวกันไปวัดค่าแสงพื้นผิวที่เป็นสีดำและ (3) นำค่าแสงที่เซนเซอร์วัดได้พื้นผิวที่เป็นสีขาวและสีดำมารวมกันแล้วหารด้วยสอง

work002

ภาพแสดงการวัดแสงเพื่อหาค่าแสงนำไปใช้เปรียบเทียบ

ทุกครั้งที่สภาพแวดล้อมหรือสภาพแสงเปลี่ยนไป ค่าแสงที่นำไปใช้ในการเปรียบเทียบก็เปลี่ยนไปด้วย ดังนั้นจึงมีความจำเป็นที่จะต้องทำการหาค่าแสงทุกๆ ครั้ง ซึ่งบางครั้งอาจจะทำให้เกิดความผิดพลาด เพื่อป้องกันความผิดพลาดนั้นจึงต้องเขียนโปรแกรมให้หุ่นยนต์เก็บค่าของแสงอัตโนมัติและหาค่าเพื่อไปใช้เปรียบเทียบ
ขั้นตอนการทำงานของโปรแกรมให้หุ่นยนต์เก็บค่าของแสงอัตโนมัติ

work003

ภาพแสดงขั้นตอนการวัดแสงเพื่อหาค่าแสงนำไปใช้เปรียบเทียบ

และสามารถเขียนเป็นโปรแกรมได้ดังนี้

work004

ภาพแสดงโปรแกรมให้หุ่นยนต์เคลื่อนที่ไปหยุดที่เส้นดำ โดยเก็บค่าของแสงอัตโนมัติ

ความหมายของโปรแกรมมีดังนี้

icon010
1) เริ่มต้นโปรแกรม
2) ให้ค่าแสงที่พอร์ตครั้งแรกเป็น 0
3) แสดงตัวหนังสือ “Check White”ตรงกลางหน้าจอ LCD บรรทัดที่ 0
4) คอยจนกว่าจะมีการกดเซนเซอร์สัมผัสที่พอร์ต 3
5) มีเสียงเตือน
6) กล่องบรรจุสีแดงรับค่าแสงจากเซนเซอร์แสงที่พอร์ต 1
7) ให้ค่าแสงจากกล่องบรรจุสีแดงเซนเซอร์แสงที่พอร์ต 1 มีชื่อว่า w1
8) แสดงค่าชอง w1 ตรงกลางหน้าจอ LCD บรรทัดที่ 3

icon011
9) แสดงตัวหนังสือ “Check Black”ตรงกลางหน้าจอ LCD บรรทัดที่ 0
10) คอยจนกว่าจะมีการกดเซนเซอร์สัมผัสที่พอร์ต 3
11) มีเสียงเตือน
12) กล่องบรรจุสีแดงรับค่าแสงจากเซนเซอร์แสงที่พอร์ต 1
13) ให้ค่าแสงจากกล่องบรรจุสีแดงเซนเซอร์แสงที่พอร์ต 1 มีชื่อว่า b1
14) แสดงค่าชอง b1 ตรงกลางหน้าจอ LCD บรรทัดที่ 4
15) แสดงตัวหนังสือ “Light Reference”ตรงกลางหน้าจอ LCD บรรทัดที่ 6
16) นำค่าของ w1 และ b1 มาคำนวณหาค่าแสงเพื่อจะนำไปใช้เปรียบเทียบ สมการ (w1+b1)/2 แล้วเก็บค่าไว้ในกล่องบรรจุสีแดง
17) แสดงการคำนวณที่ได้ตรงกลางหน้าจอ LCD บรรทัดที่ 6 เก็บค่าไว้ในกล่องบรรจุสีแดง

icon012
18) คอยจนกว่าจะมีการกดเซนเซอร์สัมผัสที่พอร์ต 3
19) หุ่นยนต์เคลื่อนที่ไปข้างหน้า
20) หุ่นยนต์เคลื่อนที่ไปข้างหน้า
21) คอยจนกว่าค่าแสงที่เซนเซอร์แสงที่พอร์ต 1 มีค่าน้อยกว่าค่าแสงที่เก็บในกล่องบรรจุสีแดง
22) หุ่นยนต์หยุดเคลื่อนที่
23) จบโปรแกรม

เครื่องมือไอคอนที่จะต้องใช้ในการเขียนโปรแกรมมีดังนี้

 begin Begin เริ่มต้นโปรแกรม
 icon001 Zero Light Sensor ให้ค่าแสงเป็น 0
 icon004 Wait for Push คอยจนกว่าจะมีการกด
 icon002 Write Text แสดงตัวหนังสือที่หน้าจอ LCD
 icon013 Formatted Text แสดงค่าของตัวแปรที่หน้าจอ LCD
 icon005 Fill Container กล่องบรรจุรับค่าที่ใส่เข้าไป
 icon006 Light Container กล่องบรรจุรับค่าแสง
 icon007 Formula Container กล่องบรรจุรับค่าที่คำนวณ
 motorB Motor B มอเตอร์ B เคลื่อนที่ไปข้างหน้า
 motorC Motor C มอเตอร์ C เคลื่อนที่ไปข้างหน้า
 icon008 Wait for Dark รอจนกระทั่งเซนเซอร์ที่พอร์ต 1 อ่านค่าแสงได้มืดกว่าค่าที่ตั้งไว้ ในที่นี้คือ ค่าจากกล่องบรรจุสีแดงที่รับค่ามาจากการคำนวณอัตโนมัติ
 2556-04-09 21_33_36-Data Logging and Motors Stop All Output หยุดการทำงานของทุกอุปกรณ์ Output เช่น มอเตอร์ หลอดไฟ
 end End จบโปรแกรม

การเขียนโปรแกรมเพื่อให้หุ่นยนต์เก็บค่าแสงอัตโนมัติ สามารถช่วยลดความคลาดเคลื่อนจากสภาพแสงที่เปลี่ยนแปลงไปในแต่ละสภาพแวดล้อม แต่ก็ไม่ได้หมายถึงให้ผู้ควบคุมหุ่นยนต์ละเลยการตรวจสอบค่าแสงเลย ผู้ควบคุมหุ่นยนต์จะต้องเข้าใจและตระหนักถึงหลักการพื้นฐานของการวัดแสงและต้องตรวจสอบทิศทางของแสงแต่ละสภาพแวดล้อมก่อนที่จะให้หุ่นยนต์เก็บค่าแสงอัตโนมัติได้ค่าแสงที่ถูกต้องและแม่นยำแท้จริง

ข้อเสนอแนะจากประสบการณ์
นักเรียนที่เข้าแข่งขันหุ่นยนต์อัตโนมัติ ในงานศิลปะหัตกรรมนักเรียนฯ มักจะประสบกับปัญหาเรื่องพื้นที่จัดการแข่งขันมีสภาพแวดล้อมแบบเปิด แสงสว่างจากภายนอกสามารถเข้ามาในสนามแข่งขันได้ ทำให้ค่าแสงเปลี่ยนแปลงตลอดเวลาไม่มีความแน่นอน
แต่ถ้านักเรียนได้ศึกษาและเข้าใจเรื่องการเก็บค่าแสงอัตโนมัติจะทำให้นักเรียนสามารถแก้ปัญหาดังกล่าวที่จะเกิดขึ้นที่สนามแข่งขัน
และเมื่อตรวจสอบโปรแกรมเก็บค่าแสงอัตโนมัติ ในภาพตัวอย่างด้านล่าง

autolight001

มีสัญลักษณ์เกี่ยวกับการเก็บค่า ซึ่งสัญลักษณ์ที่นำมาใช้นั้นนักเรียนควรศึกษาความรู้เกี่ยวกับเรื่องตัวแปรเพิ่มเติมก็จะสามารถทำความเข้าใจโปรแกรมได้อย่างสมบูรณ์

เอกสารอ้างอิง
Martha N. Cyr. (2002). LEGO MindStorms for School Using ROBOLAB. Massachusetts: [n.p.].