ต่อเนื่องจากตอนที่แล้วที่ยังไม่ได้กล่าวถึง อุปกรณ์อินพุตเอาต์พุตสำคัญบนบอร์ด Mbits
นั่นคือ ไมโครโฟนและ เซนเซอร์วัดความเร่ง เอาไปทำอะไรได้บ้าง มาดูกัน
ไมโครโฟน
เป็นที่ทราบว่าไมโครโฟนทำหน้าที่เปลี่ยนสัญญาณเสียงให้เป็นสัญญาณไฟฟ้าในที่นี้เมื่อผ่านวงจรแปลงแอนะล็อกเป็นดิจิตัลแล้ว
ค่าที่อ่านได้จากบล็อก sound level (0-4095) จะอยู่ในช่วง 0-4095
ตัวอย่างที่ 14 อ่านค่าจากไมโครโฟนแสดงผลที่หน้าต่าง Terminal
ค่าเสียงในสภาวะปกติ กับเมื่อได้รับการกระตุ้นจะมีค่าต่างกัน ต้องลองทดสอบดูการเปลี่ยนแปลงของตัวเลขที่หน้าต่าง Terminal นำค่าเหล่านี้เป็นค่าสำหรับการเขียนโปรแกรมเปรียบเทียบในตัวอย่างต่อไป
ตัวอย่างที่ 15 เปิด/ปิดไฟด้วยเสียง
https://ide.microblock.app/?open=1647164945245-fAjrMM.mby
การทำงาน
จากระดับเสียงที่อ่านค่าได้จากตัวอย่างก่อนหน้านี้พบว่าค่าที่มากกว่าปกติคือค่าที่เกิน 2500 ขึ้นไป ดังนั้นจึงใช้ค่า 2500 เป็นจุดเปรียบเทียบ แต่ก่อนจะให้ LED RGB 5×5 ติดหรือดับจะต้องตรวจสอบก่อนว่าสถานะเดิมก่อนหน้านี้ (ตัวแปร X) มีค่าเป็นอย่างไร ถ้ามีค่าเป็น 0 แสดงว่าเดิมดับอยู่ ก็สั่งให้ติด (เป็นรูปหัวใจ) และให้ค่าเปลี่ยนเป็น 1 ถ้าเดิมเป็น 1 แสดงว่าเดิมติดอยู่ก็สั่งให้ดับ และให้ค่า X เปลี่ยนเป็น 0 ท้ายสุดจะต้องหน่วงเวลาเล็กน้อยไม่ให้เกิดเหตุการณ์ซ้ำเร็วเกินไป
เซนเซอร์วัดความเร่ง Accelerometer
บนบอร์ด Mbits มีติดตั้งเซนเซอร์ MPU6050 เป็นเซนเซอร์วัดความเร่ง 3 แกนนำค่าความเร่งมาประยุกต์ใช้งานได้หลากหลายตามชุดคำสั่งในหัวข้อ Input ดังนี้
ตัวอย่างที่ 16 เขย่าสุ่มค่าตัวเลข 1-9
https://ide.microblock.app/?open=1647211347205-4Ilj9k.mby
เพื่อให้แสดงตัวเลขได้เต็มจอ จะใช้คำสั่ง display show 1-chars ทุกครั้งที่มีการเขย่า จะเป็นการกระตุ้นให้สุ่มตัวเลขแล้วนำมาแสดงที่ LED RGB 5×5
ตัวอย่างที่ 17 กระตุ้นให้ทำงานด้วย Gesture ต่างๆ
การกระตุ้นมีหลายรูปแบบตามรูป นำค่าเหล่านี้เขียนเป็นโค้ดเพื่อให้เห็นภาพ
https://ide.microblock.app/?open=1647229309854-CK5VXc.mby
การทำงาน
จากตัวอย่างจะตรวจสอบการหมุนการเอียงในทิศทางต่างๆ และแสดงผลออกมาเป็นตัวอักษร ยกเว้น free fall หรือการตกอิสระจะใช้เป็นการสร้างเสียงออกมาแทน เนื่องจากจะดูผลที่หน้าจอ LED RGB 5×5 ได้ยาก
ตัวอย่างที่ 18 เอียงจุดไล่ติดกะพริบ
https://ide.microblock.app/?open=1647234611129-Y1MYsR.mby
ค่าที่อ่านได้จากบล็อก acceleration จะมีค่าอยู่ระหว่าง -1023 ถึง 1023 ทำให้ค่าเป็นบวก ต้องนำมาบวกกับ 1023 กลายเป็น 0-2046 และแปลงไปใช้กับตำแหน่ง LED RGB 5×5 ค่า 0-4 ต้องหารด้วย 450 แต่ค่าการหารเป็นเลขทศนิยม ใช้คำสั่ง round down (ปัดเศษลง) ให้กลายเป็นเลขจำนวนเต็ม นำค่าไปพล็อตเป็นตำแหน่งของ LED RGB แกน X และ Y สุดท้ายให้กะพริบด้วย ก็สั่งให้ติดเว้นระยะสลับให้ดับด้วยในตำแหน่งเดิม
ผลการทำงาน
ตัวอย่างที่ 19 เกมเอียงบอร์ดดับไฟ
https://ide.microblock.app/?open=1647238657115-BaNusT.mby
จากตัวอย่างก่อนหน้านี้ ดัดแปลงให้เป็นเกมง่ายๆ โดยเพิ่มตัวแปร XX และ YY สุ่มตำแหน่ง LED เป้าหมายติด เพื่อแยกแยะความต่าง LED
เป้าหมายจะติดค้างและสุ่มสี ส่วน LED ค้นหาจะติดกะพริบสีแดง
ในการเลื่อนไปหาจะใช้การเอียงบอร์ด เมื่อตำแหน่งทั้งแกน X และ Y ตรงกับ LED เป้าหมาย ให้เสียงออกลำโพงแล้วสุ่มตำแหน่งใหม่ เมื่อค้นหา LED เป้าหมายได้ 1 จุดจะเพิ่ม 1 คะแนน (ตัวแปร CNT ) แสดงคะแนนที่หน้าต่าง Terminal
ตอนนี้ทดลองใช้อุปกรณ์อินพุตเอาต์พุตพื้นฐานบนบอร์ดทั้งหมดแล้ว
ตอนต่อไปจะว่ากันด้วยเรื่องการเชื่อมต่ออุปกรณ์ภายนอก
โดยใช้บอร์ด AX-mbit กันบ้างคอยติดตามครับ
INEX English documentation and manual – Download here !!