Micro:bit噪声电平检测器的演示

电子说

1.3w人已加入

描述

步骤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 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分