วันเสาร์ที่ 15 ธันวาคม พ.ศ. 2555

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


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


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


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

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



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

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


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


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


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







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

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

 
Begin                  เริ่มต้นโปรแกรม

Zero Light Sensor ให้ค่าแสงเป็น 0

Wait for Push         คอยจนกว่าจะมีการกด

Write Text          แสดงตัวหนังสือที่หน้าจอ LCD
 

Formatted Text          แสดงค่าของตัวแปรที่หน้าจอ LCD
 

Fill Container          กล่องบรรจุรับค่าที่ใส่เข้าไป
 
Light Container          กล่องบรรจุรับค่าแสง
 


Formula Container  กล่องบรรจุรับค่าที่คำนวณ
 


Motor B                  มอเตอร์ B เคลื่อนที่ไปข้างหน้า
 

Motor C                  มอเตอร์ C เคลื่อนที่ไปข้างหน้า
 

Wait for Dark    รอจนกระทั่งเซนเซอร์ที่พอร์ต 1 อ่านค่าแสงได้มืดกว่าค่าที่ตั้งไว้ ในที่นี้คือ ค่าจากกล่องบรรจุสีแดงที่รับค่ามาจากการคำนวณอัตโนมัติ
 



Stop All Output หยุดการทำงานของทุกอุปกรณ์ Output เช่น มอเตอร์ หลอดไฟ
 

End                         จบโปรแกรม



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


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

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



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