สารบัญ:

Micro:bit เครื่องตรวจจับระดับเสียง: 3 ขั้นตอน
Micro:bit เครื่องตรวจจับระดับเสียง: 3 ขั้นตอน

วีดีโอ: Micro:bit เครื่องตรวจจับระดับเสียง: 3 ขั้นตอน

วีดีโอ: Micro:bit เครื่องตรวจจับระดับเสียง: 3 ขั้นตอน
วีดีโอ: สอน เขียนโปรแกรม Tinkercad+Microbit เครื่องวัดค่าควันไฟไหม้ #input #output #EP6 2024, พฤศจิกายน
Anonim
เครื่องตรวจจับระดับเสียงไมโคร:บิต
เครื่องตรวจจับระดับเสียงไมโคร:บิต
เครื่องตรวจจับระดับเสียงไมโคร:บิต
เครื่องตรวจจับระดับเสียงไมโคร:บิต
เครื่องตรวจจับระดับเสียงไมโคร:บิต
เครื่องตรวจจับระดับเสียงไมโคร:บิต

นี่เป็นเพียงตัวอย่างสั้นๆ สำหรับเครื่องตรวจจับระดับเสียงที่อิงจาก micro:bit และ Pimoroni enviro:bit

ไมโครโฟนบน enviro:bit ตรวจจับระดับเสียง และจากค่าผลลัพธ์ ตำแหน่งบนเมทริกซ์ LED 5x5 จะถูกคำนวณและไฟ LED ที่เกี่ยวข้องจะเปิดใช้งาน ค่าสูงสุดที่วัดได้จะถูกจัดเก็บและยังคงแสดงบนเมทริกซ์ LED

ค่ายังสามารถแสดงเป็นตัวเลขได้

ดังนั้นโดยพื้นฐานแล้วเป็นเครื่องมือตรวจจับระดับเสียงที่ง่ายมากเช่น สำหรับการทดลองในห้องเรียน

วิธีการที่อธิบายเพื่อแสดงค่าจริงและค่าสูงสุดที่เซ็นเซอร์ตรวจพบในเมทริกซ์ LED micro:bits 5x5 ยังใช้สำหรับพารามิเตอร์อื่นๆ เช่น อุณหภูมิ ความชื้น หรือความดัน

ขั้นตอนที่ 1: ชิ้นส่วนและซอฟต์แวร์ที่ใช้

ฮาร์ดแวร์:

  • ไมโคร:บิต
  • Pimoroni enviro:bit - มาพร้อมกับเซ็นเซอร์สามตัวสำหรับเสียง แสงและสี และความดัน/อุณหภูมิ/ความชื้น (20 GBP ที่ Pimoroni)
  • พลังงาน Pimoroni:บิต - เพื่อจ่ายไฟให้กับอุปกรณ์จากแบตเตอรี่ (ตัวเลือกหรือวิธีอื่นใดในการจ่ายไฟให้กับ microbit, 6 GBP ที่ Pimoroni)

ซอฟต์แวร์:

  • Microsoft MakeCode
  • ส่วนขยาย Pimoroni enviro:bit MakeCode

ในการโหลดสคริปต์ไปยัง micro:bit ของคุณ เพียงคัดลอกไฟล์ hex ที่ให้มาไปยัง micro:bit โดยแนบ enviro:bit

ขั้นตอนที่ 2: รหัส

โค้ดนี้เขียนขึ้นโดยใช้ Microsoft MakeCode ในโหมดบล็อก โดยใช้ส่วนขยาย Enviro:Bit คุณจะพบกับโค้ด JavaScript ที่เกี่ยวข้อง

ฟังก์ชัน envirobit.getSoundLevel() จะอ่านระดับเสียงจากเซ็นเซอร์ โดยคืนค่าจาก 0 ถึง 443

ค่าคงที่ signal_max กำหนดค่าสูงสุดของช่วงไดนามิกที่จะแสดงบนเมทริกซ์ LED ค่าด้านบนจะถือเป็นสัญญาณ_max วิธีนี้ช่วยให้คุณปรับความไวของอุปกรณ์ให้เหมาะสมสำหรับแอปพลิเคชันของคุณ

ค่าสูงสุดที่ตรวจพบในวงกลมการวัดจะถูกเก็บไว้ในตัวแปร noise_max และยังคงแสดงอยู่บนเมทริกซ์ LED

การกดปุ่ม "A" จะรีเซ็ต noise_max และล้างหน้าจอ การกดปุ่ม "B" จะแสดงค่าเสียงรบกวนที่วัดได้เป็นตัวเลขจริง

ในการแสดงค่า ค่าด้านล่าง signal_max จะถูกวางไว้ใน 25 "bins" ซึ่งแสดงโดย LED หนึ่งดวง โดยเริ่มจาก 0 (ซ้ายบน) ถึง 24 (ขวาล่าง) จากนั้นคำนวณตำแหน่ง x/y และไฟ LED ที่เกี่ยวข้องจะเปิดขึ้น ค่าที่สูงกว่า signal_max จะถูกวางไว้ใน bin 24 หากค่าต่ำกว่า noise_max ไฟ LED จะถูกเปลี่ยนอีกครั้ง

ให้ noise_x = 0let signal_max = 0 ให้ noise_5 = 0 ให้ noise_25 = 0 ให้ noise_max = 0 basic.showString("Noise") noise_max = 0 noise_25 = 0 noise_5 = 0 signal_max = 250 basic.forever (ฟังก์ชัน () { ในขณะที่ (อินพุต.buttonIsPressed (Button. B)) { basic.showNumber (envirobit.getSoundLevel ()) basic.showString ("--") } ถ้า (input.buttonIsPressed (Button. A)) { noise_max = 0 basic.clearScreen () } noise_25 = Math.floor(envirobit.getSoundLevel() / signal_max * 25) if (noise_25 > 24) { noise_25 = 24 } noise_5 = Math.floor(noise_25 / 5) noise_x = noise_25 - noise_5 * 5 led.plot (noise_x, noise_5) basic.pause (200) ถ้า (noise_25 noise_max) { noise_max = noise_25 } })

ขั้นตอนที่ 3: รหัสสำหรับเซ็นเซอร์อุณหภูมิ (ความชื้น ความดัน) พร้อมตัวระบุค่าต่ำสุด/สูงสุด

รหัสสำหรับเซ็นเซอร์อุณหภูมิ (ความชื้น ความดัน) พร้อมตัวระบุค่าต่ำสุด/สูงสุด
รหัสสำหรับเซ็นเซอร์อุณหภูมิ (ความชื้น ความดัน) พร้อมตัวระบุค่าต่ำสุด/สูงสุด

ที่นี่คุณจะพบโค้ดสำหรับฟังก์ชัน enviro:bit temperature

พารามิเตอร์ signal_min และ signal_max ตั้งค่าอุณหภูมิต่ำสุดและสูงสุด (*C) ที่แสดงบนเมทริกซ์ LED ที่นี่การตั้งค่า signal_main=5 และ signal_max=30 ส่งผลให้ 5 และ 6*C แสดงโดย LED บนซ้าย (0, 0) และ 28/29*C โดย LED ขวาล่าง (4, 4)

มีที่ว่างสำหรับการเพิ่มประสิทธิภาพ: ด้วยรหัสปัจจุบันที่เพิ่มขึ้นและอุณหภูมิที่ลดลงจะทิ้งร่องรอยของไฟ LED ไว้ไม่ว่าจะเปิดหรือปิด ในอีกด้านหนึ่ง จะช่วยให้อ่านแนวโน้มอุณหภูมิปัจจุบัน (ลดลง/เพิ่มขึ้น) เนื่องจากค่าปัจจุบันจะแสดงด้วยไฟ LED ที่กะพริบ

การแทนที่ getTemperature() ด้วย getHumidity() หรือ getPressure() และการปรับค่า signal_min และ signal_max ตามลำดับ (เช่น 0/100 % ตามลำดับ 950/1150 hPA) จะอนุญาตให้แสดงพารามิเตอร์เหล่านี้บนเมทริกซ์ LED

ให้ Temp_x = 0 ให้ Temp_5 = 0 ให้ signal_delta = 0 ให้ Temp_25 = 0 ให้ Temp_Min = 0 ให้ signal_min = 0 ให้ Temp_Max = 0 ให้ signal_max = 0 basic.showString("Temp") signal_max = 30 signal_min = 5 signal_delta = signal_max - signal_min Temp_Max = 0 Temp_Min = 24 basic.forever (ฟังก์ชัน () { if (input.buttonIsPressed (Button. A)) { Temp_Max = 0 Temp_Min = 24 basic.clearScreen () } ในขณะที่ (input.buttonIsPressed (Button. B)) { basic.showNumber(Math.round(envirobit.getTemperature())) basic.showString("C ") } Temp_25 = Math.floor((envirobit.getTemperature() - signal_min) / signal_delta * 25) ถ้า (Temp_25 > 24) { Temp_25 = 24 } ถ้า (Temp_25 < 0) { Temp_25 = 0 } Temp_5 = Math.floor (Temp_25 / 5) Temp_x = Temp_25 - Temp_5 * 5 led.plot (Temp_x, Temp_5) basic.pause (100) ถ้า (Temp_25 Temp_Min) { led.unplot(Temp_x, Temp_5) } if (Temp_25 > Temp_Max) { Temp_Max = Temp_25 } if (Temp_25 < Temp_Min) { Temp_Min = Temp_25 } })

แนะนำ: