Mbits with microBLOCK บทที่ 4 ไมโครโฟนและเซนเซอร์วัดความเร่ง

ต่อเนื่องจากตอนที่แล้วที่ยังไม่ได้กล่าวถึง อุปกรณ์อินพุตเอาต์พุตสำคัญบนบอร์ด 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 กันบ้างคอยติดตามครับ

Facebook Comments Box