ตัวอย่างใช้งาน Micro:bit Education Kit V1.3 ตอนที่ 2

ทดลองใช้งานกันต่อกับชุด micro:bit Education Kit V1.3

จากตอนที่ 1 เริ่มต้นใช้งานบอร์ด AX-microBIT กับอุปกรณ์ต่อพ่วงแค่ LED กับสวิตช์เท่านั้น มาตอนที่ 2 ขอเริ่มใช้อุปกรณ์ที่เป็นเซนเซอร์มากขึ้น เริ่มจากอ่านค่าแอนะล็อกจากตัวต้านทานปรับค่าได้บนบอร์ด AX-microBIT กันก่อน

 

ตัวอย่างที่ 10 อ่านค่าแอนะล็อก แสดงผลที่ console device

https://makecode.microbit.org/_fYcdg0EuxivD

 

ค่าแอนะล็อกที่อ่านได้จาก micro:bit จะมีค่าอยู่ในช่วง 0-1023 ถ้าใช้การเลื่อนข้อมูลที่ LED 5×5 จะเห็นภาพได้ช้า ตัวอย่างที่ 3 ก่อนหน้านี้ เคยใช้คำสั่ง plot bargraph แต่ครั้งนี้จะใช้คำสั่งในหัวข้อ Serial แทน ข้อดีคือสามารถแสดงข้อมูลหลายๆ ชุดพร้อมกันได้

 

การทำงานของโปรแกรม

ข้อมูลชุดแรกจะแสดงค่าที่อ่านได้โดยตรงจากขา P2 (2/AN2) ส่วนข้อมูลชุดที่ 2 จะเป็นค่าแรงดันที่อ่านได้จริง ปกติต้องเทียบบัญญัติไตรยางศ์ แต่ Makecode ก็มีคำสั่ง Map มาช่วยให้งานง่ายขึ้น ค่าที่อ่านได้ จะแยกด้วยชื่อที่อยู่ด้านหน้า เป็น P2 และ Volt

 

การทดสอบ

เมื่อดาวน์โหลดโปรแกรมเรียบร้อย จะมีปุ่ม Show console Device ปรากฏขึ้น ให้คลิก จะเป็นการเปิดหน้าต่างแสดงกราฟ และข้อมูลที่ถูกส่งมาจาก micro:bit ให้ทดลองปรับตัวต้านทานปรับค่าได้ จะเห็นกราฟทั้งสองเส้น มีการเปลี่ยนแปลง แต่ค่าที่แสดงจะเป็นค่าที่แตกต่างกัน ค่าของ P2 จะอยู่ในช่วง 0-1023 ส่วนค่าแรงดัน (Volt) จะอยู่ในช่วง 0-3.3

ZX-02F แผงวงจรตรวจจับแสง

ZX-02F คือแผงวงจรที่ใช้ตรวจจับแสงสว่างในแบบแปรผันตรงนั่นคือ แรงดันเอาต์พุตเพิ่มเมื่อแสงตกกระทบ อุปกรณ์สำคัญคือโฟโต้ทรานซิสเตอร์เบอร์ SFH310 โดยเมื่อได้รับแสงตัวโฟโต้ทรานซิสเตอร์จะนำกระแสไฟฟ้าทันทีโดยปริมาณกระแสไฟฟ้าที่เกิดขึ้น จะขึ้นกับความเข้มของแสงที่ตกกระทบ

 

ตัวอย่างที่ 11 ทดสอบอ่านค่าจาก ZX-02F

https://makecode.microbit.org/_UgL7u9DYeLxx

    เพื่อให้ทราบค่าที่อ่านได้จาก ZX-02F จะใช้โค้ดคล้ายๆ กับตัวอย่างก่อนหน้านี้ ซึ่งจะอ่านค่าจาก ZX-02F ที่ต่ออยู่กับขา P1 แสดงผลที่หน้าต่าง Console Device

 

 

การทำงานของโปรแกรม

โค้ดเขียนสั้นๆ เพื่อนำค่าแอนะล็อกจาก ZX-02F ที่ต่ออยู่กับขา P1 ตามรูป ส่งด้วยคำสั่ง serial write value เพื่อส่งค่าไปแสดงที่ Console Device ของโปรแกรม Makecode

 

การทดสอบ

ลองเอามือบังแสงไม่ให้ตกกระทบ ZX-02F สังเกตว่าค่าที่แสดงจะลดค่าลง จนใกล้เคียง 0 เมื่อหันเข้าหาแสงค่าจะค่อยๆ เพิ่มขึ้น แต่ถ้าได้รับแสงมากๆ เช่นเอาไฟฉายมาส่องค่าจะขึ้นไปใกล้เคียง 1000 ซึ่งเป็นค่าสูงสุด

 

 

ตัวอย่างที่ 12 ไฟฉายควบคุมการเปิด/ปิดสวิตช์

https://makecode.microbit.org/_59F066RTseKk

เพื่อให้เห็นประโยชน์การนำแผงวงจรตรวจจับแสงมาใช้ เริ่มต้นง่ายๆ ด้วยการสั่งเปิด/ปิดไฟ จากระยะไกลด้วยการเอาไฟฉายส่อง

ต่อ LED และเซนเซอร์วัดแสงในตำแหน่งตามรูป

การทำงานของโปรแกรม

จากตัวอย่างก่อนหน้านี้พอสรุปได้ว่า ค่าแสงเมื่อได้รับจากไฟฉายจะมีค่าค่อนข้างสูงใกล้เคียง 1000 ในโค้ดจึงเลือกใช้ค่า 800 เป็นตัวเปรียบเทียบ โดยถ้าเป็นจริง ก่อนจะให้หลอดไฟติดหรือดับ ให้ตรวจสอบตัวแปร X ซึ่งเอาไว้เก็บสถานะ LED ก่อน โดยถ้า X=0 แสดงว่า LED ดับอยู่ ก็สั่งให้ LED ติด และกำหนดสถานะใหม่ให้ X ด้วย ถ้า X=1 แสดงว่าLED ติดอยู่ก็สั่งให้ LED ดับและกำหนดสถานะของ X ใหม่

    ก่อนจะจบการทำงาน ทำการตรวจสอบค่าแสงจากไฟฉายอีกครั้ง ว่ายังมีไฟฉายส่องอยู่หรือเปล่า ถ้ามีให้วนรอจนไฟฉายหยุดส่อง (ค่าที่อ่านได้น้อยกว่า 800)

ผลการทำงาน

เมื่อเอาไฟฉายส่องไปที่ ZX-02F 1 ครั้ง หลอดไฟติดสว่าง เมื่อส่องอีกครั้งหลอดไฟดับ สลับกันไปเรื่อยๆ

เซนเซอร์วัดแสงบนบอร์ด micro:bit

 

 

 

 

LED 25 ดวงบนบอร์ด micro:bit นอกจากเป็นอุปกรณ์เอาต์พุต ติดดับตามต้องการแล้ว ยังเป็นอินพุตรับค่าแสงจากภายนอกได้ด้วย โดยอาศัยคุณสมบัติความเป็นอุปกรณ์เซมิคอนดัคเตอร์ที่เมื่อมีแสงตกกระทบจะให้เป็นแรงดันน้อยๆ ออกมา บอร์ด micro:bit จะใช้ LED 9 จุดในตำแหน่งดังรูปเพื่ออ่านค่าแสดง โดยค่าที่อ่านได้อยู่ในช่วง 0-255 จากคำสั่งในหัวข้อ Input ชื่อ Light Level

 

 

ตัวอย่างที่ 13 เปรียบเทียบค่าจาก light level และ ZX-02F

https://makecode.microbit.org/_gK1hUoP1FCr6

ตัวอย่างนี้ให้นำ ZX-02F และ เซนเซอร์วัดแสงบน micro:bit มาวางใกล้กัน ทดสอบอ่านค่าไปแสดงที่ Console Device ด้วยคำสั่ง Serial write value

การทำงาน

จากการทดลองพบว่า ค่าจาก light level จะมีค่าเป็น 0 หรือใกล้เคียง เมื่ออยู่ในสภาวะแสงปกติ และต้องมีแสงมากพอถึงจะทำให้มีค่าเพิ่มขึ้นได้ จนถึงค่าสูงสุด 255 แต่สำหรับ ZX-02F ที่อ่านค่าแอนะล็อก ค่ามีการเปลี่ยนแปลงตั้งแต่มืดสนิทไปจนสว่างที่สุดในช่วง 0-1023

 

 

ตัวอย่างที่ 14 เปิดไฟด้วย ZX-02F แต่ปิดไฟด้วยเซนเซอร์แสงที่ micro:bit

https://makecode.microbit.org/_UKx3atWyMPbf

 

เมื่อมีเซนเซอร์แสงถึง 2 จุดให้ใช้ ก็สามารถลดความซับซ้อนในการเขียนโค้ดได้ โดยถ้าส่องไฟฉายไปที่ ZX-02F ให้ LED ติดสว่าง แต่ถ้าส่งไฟฉายไปที่ micro:bit ให้ LED ดับ พร้อมทั้งให้แสดงสถานะเป็นรูปหัวใจดวงใหญ่และหัวใจดวงเล็กด้วย สังเกตว่า การให้ LED 5×5 แสดงผลจะไม่มีผลกับการทำงานของคำสั่ง light level เลย

 

 

ข้อสังเกต เงื่อนไข if จะแยกทำงานคนละชุดกัน เนื่องจากข้อมูลที่ใช้ตรวจสอบเป็นข้อมูลคนละชุดไม่เกี่ยวข้องกัน

การอ่านค่าอุณหภูมิของ micro:bit

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

สำหรับคำสั่งที่ใช้อ่านค่าอุณหภูมิ จะใช้คำสั่ง temperature ในหัวข้อ Input โดยให้ค่าที่อ่านได้จะอยู่ในช่วง -5 ถึง 50 องศาเซนเซียส

 

 

ตัวอย่างที่ 15 เพิ่ม Extensions WhaleySans Font

    การแสดงตัวเลขที่ LED 5×5 จะแสดงได้เพียงหลักเดียวเท่านั้น ถ้ามากกว่า 1 หลักต้องใช้การเลื่อน ซึ่งต้องใช้เวลานั่งมองจนกว่าตัวเลขแสดงเสร็จ โปรแกรม MakeCode สามารถเพิ่ม Extensions ที่เป็นชุดคำสั่งนอกเหนือชุดคำสั่งมาตรฐานได้ และมีคนทำ Extensions ที่ชื่อ WhaleySans Font เพื่อให้ LED 5×5 แสดงตัวเลขได้ 2 หลัก โดยไม่ต้องเลื่อนข้อมูล

 

ขั้นตอนการเพิ่ม Extensions

1. คลิกไปที่ Extensions

2. ในช่องค้นหาพิมพ์ WhaleySans Font

3.จะพบ Extensions ดังรูป กดเลือกเพื่อติดตั้ง Extensions ได้เลย

4. Extensions WhaleySans Font จะปรากฏและมีคำสั่ง show a whaleysans number ให้ใช้งาน

ตัวอย่างที่ 16 แสดงการนับเลข 0-99 ด้วย WhaleySans Font

https://makecode.microbit.org/_9xgdYpD4J46e

LED 5×5 เมื่อต้องแสดงตัวเลขถึง 2 หลัก จะอ่านยากไปสักหน่อย ตัวอย่างนี้จะนับเลข 0-99 เพื่อให้คุ้นเคยกับตัวเลขฉบับย่อนี้

 

 

ตัวอย่างที่ 17 แสดงค่าอุณหภูมิด้วย Extensions WhaleySans Font

https://makecode.microbit.org/_9HUiwdCsrU0A

จากการใช้ Extension ก็ทำให้การแสดงเลข 2 หลักก็เป็นเรื่องง่ายแล้ว

ทดสอบดูค่าอุณหภูมิที่เกิดขึ้น ลองเอามือสัมผัสที่ด้านบนของไอซีไมโครคอนโทรลเลอร์ดูว่าค่าเปลี่ยนแปลงหรือไม่

 

 

เซนเซอร์วัดอุณหภูมิ MCP9701

    บนบอร์ด micro:bit มีตัววัดอุณหภูมิให้ใช้ แต่ก็มีข้อจำกัดเรื่องความละเอียดในการวัด และการนำเซนเซอร์ไปวัดกับของเหลวหรือสถานที่อื่นๆ ทำไม่ได้ จะมีเซนเซอร์แอนะล็อกอีกตัวที่ช่วยแก้ปัญหานี้ MCP9701 เป็นไอซีวัดอุณหภูมิที่ให้ค่าเอาต์พุตเป็นเชิงเส้น โดยทำงานที่แรงดัน 3.1-5.5V กินกระแสน้อยมากเพียง 6uA เท่านั้น การเปลี่ยนแปลงของค่าแรงดันต่ออุณหภูมิอยู่ที่ 19.5mA ต่อ องศาเซนเซียส สามารถใช้กับ micro:bit ที่มีแรงดัน 3V ได้จากสูตร

    Temp = (ADC x 0.16)-20

ค่า ADC คือค่าแอนะล็อก 10 บิตที่อ่านได้จากขาแอนะล็อก A0-A2

 

 

ตัวอย่างที่ 18 อ่านค่าจาก MCP9701 เทียบกับค่าอุณหภูมิในตัวไมโครคอนโทรลเลอร์

https://makecode.microbit.org/_Wjdf552fo202

เพื่อเป็นการเปรียบเทียบอุณหภูมิที่อ่านได้จากตัวไมโครคอนโทรลเลอร์กับอุณหภูมิจากตัวเซนเซอร์ MCP9701 ที่ต่อภายนอก จะใช้คำสั่ง serial write value พล็อตกราฟเปรียบเทียบกัน

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

ผลลัพธ์ที่ได้จะเป็นว่าค่าที่อ่านได้จาก MCP9701 มีค่าน้อยกว่าค่าจากตัวไมโครคอนโทรลเลอร์อยู่เล็กน้อย เนื่องจากความร้อนสะสมของตัวอุปกรณ์มีมากกว่า แต่ก็ถือว่าเป็นค่าที่ใกล้เคียงกัน

พักไว้เท่านี้ก่อนสำหรับตอนที่ 2 ยังมีอุปกรณ์ให้ทดสอบอีกหลายตัว คอยติดตามตอนต่อไปครับ

Facebook Comments Box