Tabla de contenido:

Detector de nivel de ruido micro: bit: 3 pasos
Detector de nivel de ruido micro: bit: 3 pasos

Video: Detector de nivel de ruido micro: bit: 3 pasos

Video: Detector de nivel de ruido micro: bit: 3 pasos
Video: nivel de luz en microbit 2024, Noviembre
Anonim
Detector de nivel de ruido micro: bit
Detector de nivel de ruido micro: bit
Detector de nivel de ruido micro: bit
Detector de nivel de ruido micro: bit
Detector de nivel de ruido micro: bit
Detector de nivel de ruido micro: bit

Este es solo un breve ejemplo de un detector de nivel de ruido basado en micro: bit y Pimoroni enviro: bit.

El micrófono del enviro: bit detecta el nivel de sonido y, a partir del valor resultante, se calcula una posición en la matriz de LED de 5x5 y se activa el LED correspondiente. Los valores máximos medidos se almacenan y permanecen visualizados en la matriz de LED.

Los valores también se pueden mostrar en números.

Por lo tanto, es básicamente una herramienta de detección de nivel de ruido muy simple, p. Ej. para experimentos en el aula.

El método descrito para mostrar los valores reales y máximos detectados por un sensor en la matriz micro: bits 5x5 LED también podría usarse para otros parámetros como temperatura, humedad o presión.

Paso 1: Piezas y software utilizados

Hardware:

  • Un micro: bit
  • Un Pimoroni enviro: bit: viene con tres sensores de sonido, luz y color, y presión / temperatura / humedad (20 GBP en Pimoroni)
  • Una potencia Pimoroni: bit - para alimentar el dispositivo con baterías (opcional, o cualquier otra forma de alimentar el microbit, 6 GBP en Pimoroni)

Software:

  • Microsoft MakeCode
  • El Pimoroni enviro: extensión bit MakeCode

Para cargar el script en su micro: bit, simplemente copie el archivo hexadecimal proporcionado en su micro: bit con un enviro: bit adjunto.

Paso 2: el código

El código ha sido escrito usando Microsoft MakeCode en modo bloque, usando la extensión Enviro: Bit. Amarillo se encuentra el código JavaScript correspondiente.

La función envirobit.getSoundLevel () lee el nivel de sonido del sensor, devolviendo un valor de 0 a 443.

La constante signal_max define un valor máximo del rango dinámico que se mostrará en la matriz de LED, los valores anteriores se tratarán como un ser signal_max. Esto le permite optimizar la sensibilidad del dispositivo para su aplicación.

El valor máximo detectado en un círculo de medición se almacena en la variante noise_max y permanece visualizado en la matriz de LED.

Al presionar el botón "A" se restablece el ruido_máx y se borra la pantalla, al presionar el botón "B" se muestra el valor de ruido medido como número real.

Para mostrar el valor, los valores por debajo de signal_max se colocan en 25 "contenedores" representados por un LED, comenzando desde 0 (arriba a la izquierda) a 24 (abajo a la derecha). Luego se calcula la posición x / y y se enciende el LED correspondiente. Los valores por encima de signal_max se colocan en el bin 24. Si el valor está por debajo de noise_max, los LED se apagarán nuevamente.

let noise_x = 0let 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, ruido_5) básico.pausa (200) si (ruido_25 ruido_máx) {ruido_máx = ruido_25}})

Paso 3: un código para un sensor de temperatura (humedad, presión) con identificadores mínimo / máximo

Un código para un sensor de temperatura (humedad, presión) con identificadores de mín. / Máx
Un código para un sensor de temperatura (humedad, presión) con identificadores de mín. / Máx

Aquí encontrará un código para la función enviro: bit temperature.

Los parámetros signal_min y signal_max establecen las temperaturas mínima y máxima (* C) que se muestran en la matriz de LED. Aquí, el ajuste de signal_main = 5 y signal_max = 30 da como resultado que 5 y 6 * C estén representados por el LED superior izquierdo (0, 0) y 28/29 * C por el LED inferior derecho (4, 4).

Hay espacio para la optimización: con el código actual subiendo y bajando, las temperaturas están dejando un rastro de LED encendidos o apagados. Por otro lado, esto permite leer la tendencia actual de la temperatura (descendente / ascendente), ya que el valor actual está indicado por el LED parpadeante.

Reemplazar getTemperature () por getHumidity () o getPressure () y ajustar los valores de signal_min y signal_max en consecuencia (por ejemplo, 0/100% respectivamente 950/1150 hPA) permitiría mostrar estos parámetros en la matriz de 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. A)) { 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_Min) {led.unplot (Temp_x, Temp_5)} si (Temp_25> Temp_Max) {Temp_Max = Temp_25} if (Temp_25 <Temp_Min) {Temp_Min = Temp_25}})

Recomendado: