电子说
步骤1:使用的零件和软件
硬件:
微型:位
Pimoroni enviro:bit-带有三个传感器,用于声音,光线和颜色以及压力/温度/湿度
(Pimoroni:20英镑)
Pimoroni电源:bit-用电池为设备供电
(可选,或通过其他方式为microbit供电,Pimoroni为6英镑)
软件:
Microsoft MakeCode
Pimoroni enviro:bit MakeCode扩展名
要将脚本加载到您的micro:bit,只需复制提供的
步骤2:代码
该十六进制文件已附加到enviro:bit上。块模式,使用Enviro:Bit扩展名。
然后找到相应的JavaScript代码。
函数envirobit.getSoundLevel()从传感器读取声音级别,返回0到443之间的值
常量signal_max定义d的最大值如果要在LED矩阵上显示动态范围,则以上值将被视为signal_max。这样,您可以针对应用优化设备的灵敏度。
在测量圈中检测到的最大值存储在变量noise_max中,并保持显示在LED矩阵上。
按下按钮“ A”将重置noise_max并清除屏幕,按下按钮“ B”将测得的噪声值显示为实际数字。
要显示该值,signal_max以下的值放置在一个LED表示的25个“ bins”中,从0(左上方)到24(右下方)开始。然后计算x/y位置并打开相应的LED。高于signal_max的值放在bin 24中。如果该值低于noise_max,则将再次关闭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
basic.forever(function () {
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:温度代码(湿度) ,带有最小/最大标识符的压力传感器)
在这里,您找到了enviro:bit温度功能的代码。
参数signal_min和signal_max设置LED矩阵上显示的最低和最高温度(* C)。在这里,设置signal_main = 5和signal_max = 30会导致5和6 * C由左上方的LED(0,0)表示,而28/29 * C由右下方的LED(4,4)表示。
还有优化的空间:随着当前代码的升高和降低,温度都留下了打开或关闭LED的痕迹。另一方面,这允许读取当前温度趋势(下降/上升),因为当前值由闪烁的LED指示。
用getHumidity()或getPressure()替换getTemperature()和相应地调整signal_min和signal_max值(例如分别为0/100%950/1150 hPA)将允许在LED矩阵上显示这些参数。
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
}
})
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !