步驟1:使用的零件和軟件
硬件:
微型:位
Pimoroni enviro:bit-帶有三個傳感器,用于聲音,光線和顏色以及壓力/溫度/濕度
(Pimoroni:20英鎊)
(可選,或通過其他方式為microbit供電,Pimoroni為6英鎊)
軟件:
Microsoft MakeCode
Pimoroni enviro:bit MakeCode擴展名
要將腳本加載到您的micro:bit,只需復(fù)制提供的
步驟2:代碼
該十六進制文件已附加到enviro:bit上。塊模式,使用Enviro:Bit擴展名。
然后找到相應(yīng)的JavaScript代碼。
函數(shù)envirobit.getSoundLevel()從傳感器讀取聲音級別,返回0到443之間的值
常量signal_max定義d的最大值如果要在LED矩陣上顯示動態(tài)范圍,則以上值將被視為signal_max。這樣,您可以針對應(yīng)用優(yōu)化設(shè)備的靈敏度。
在測量圈中檢測到的最大值存儲在變量noise_max中,并保持顯示在LED矩陣上。
按下按鈕“ A”將重置noise_max并清除屏幕,按下按鈕“ B”將測得的噪聲值顯示為實際數(shù)字。
要顯示該值,signal_max以下的值放置在一個LED表示的25個“ bins”中,從0(左上方)到24(右下方)開始。然后計算x/y位置并打開相應(yīng)的LED。高于signal_max的值放在bin 24中。如果該值低于noise_max,則將再次關(guān)閉LED。
let noise_x = 0
let signal_max = 0
let noise_5 = 0
let noise_25 = 0
let noise_max = 0
basic.showString(“Noise”)
noise_max = 0
noise_25 = 0
noise_5 = 0
signal_max = 250
while (input.buttonIsPressed(Button.B)) {
basic.showNumber(envirobit.getSoundLevel())
basic.showString(“--”)
}
if (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)
if (noise_25 《 noise_max) {
led.unplot(noise_x, noise_5)
}
if (noise_25 》 noise_max) {
noise_max = noise_25
}
})
步驟3:溫度代碼(濕度) ,帶有最小/最大標(biāo)識符的壓力傳感器)
在這里,您找到了enviro:bit溫度功能的代碼。
參數(shù)signal_min和signal_max設(shè)置LED矩陣上顯示的最低和最高溫度(* C)。在這里,設(shè)置signal_main = 5和signal_max = 30會導(dǎo)致5和6 * C由左上方的LED(0,0)表示,而28/29 * C由右下方的LED(4,4)表示。
還有優(yōu)化的空間:隨著當(dāng)前代碼的升高和降低,溫度都留下了打開或關(guān)閉LED的痕跡。另一方面,這允許讀取當(dāng)前溫度趨勢(下降/上升),因為當(dāng)前值由閃爍的LED指示。
用getHumidity()或getPressure()替換getTemperature()和相應(yīng)地調(diào)整signal_min和signal_max值(例如分別為0/100%950/1150 hPA)將允許在LED矩陣上顯示這些參數(shù)。
let Temp_x = 0
let Temp_5 = 0
let signal_delta = 0
let Temp_25 = 0
let Temp_Min = 0
let signal_min = 0
let Temp_Max = 0
let 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(function () {
if (input.buttonIsPressed(Button.A)) {
Temp_Max = 0
Temp_Min = 24
basic.clearScreen()
}
while (input.buttonIsPressed(Button.B)) {
basic.showNumber(Math.round(envirobit.getTemperature()))
basic.showString(“C ”)
}
Temp_25 = Math.floor((envirobit.getTemperature() - signal_min) / signal_delta * 25)
if (Temp_25 》 24) {
Temp_25 = 24
}
if (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)
if (Temp_25 《 Temp_Max && 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
}
})
責(zé)任編輯:wv
-
檢測器
+關(guān)注
關(guān)注
1文章
866瀏覽量
47721
發(fā)布評論請先 登錄
相關(guān)推薦
評論