Taula de continguts:

Detector de nivell de soroll Micro: bit: 3 passos
Detector de nivell de soroll Micro: bit: 3 passos

Vídeo: Detector de nivell de soroll Micro: bit: 3 passos

Vídeo: Detector de nivell de soroll Micro: bit: 3 passos
Vídeo: MicroBit: Sensor de humedad Parte 3 2024, Desembre
Anonim
Detector de nivell de soroll micro: bits
Detector de nivell de soroll micro: bits
Detector de nivell de soroll micro: bits
Detector de nivell de soroll micro: bits
Detector de nivell de soroll micro: bits
Detector de nivell de soroll micro: bits

Aquest és només un breu exemple per a un detector de nivell de soroll basat en el micro: bit i el Pimoroni enviro: bit.

El micròfon del bit enviro: detecta el nivell de so i, a partir del valor resultant, es calcula una posició a la matriu de 5x5 LED i s’activa el LED corresponent. Els valors màxims mesurats s’emmagatzemen i es mantenen visualitzats a la matriu de LED.

Els valors també es poden mostrar en números.

Per tant, bàsicament és una eina de detecció de nivell de soroll molt senzilla, per exemple. per a experiments a l'aula.

El mètode descrit per mostrar els valors reals i màxims detectats per un sensor a la matriu LED micro: bits 5x5 també es podria utilitzar per a altres paràmetres com la temperatura, la humitat o la pressió.

Pas 1: parts i programari utilitzat

Maquinari:

  • Un micro: bit
  • A Pimoroni enviro: bit: inclou tres sensors de so, llum i color i pressió / temperatura / humitat (20 GBP a Pimoroni)
  • Una potència de Pimoroni: bit: per alimentar el dispositiu amb bateries (opcional o qualsevol altra manera d’alimentar el microbit, 6 GBP a Pimoroni)

Programari:

  • Microsoft MakeCode
  • L'extensió MakeCode de Pimoroni enviro: bit

Per carregar l'script al vostre micro: bit, només cal que copieu el fitxer hexadecimal proporcionat al vostre micro: bit amb un enviro: bit adjunt.

Pas 2: el codi

El codi s’ha escrit amb Microsoft MakeCode en mode de bloc, mitjançant l’extensió Enviro: Bit. A continuació trobareu el codi JavaScript corresponent.

La funció envirobit.getSoundLevel () llegeix el nivell de so del sensor, retornant un valor de 0 a 443.

La constant signal_max defineix un valor màxim del rang dinàmic que es mostrarà a la matriu de LED, els valors anteriors es tractaran com a signal_max. Això us permet optimitzar la sensibilitat del dispositiu per a la vostra aplicació.

El valor màxim detectat en un cercle de mesura s’emmagatzema a la variant noise_max i es manté a la matriu LED.

En prémer el botó "A" es restableix noise_max i s'esborra la pantalla, prement el botó "B" es mostra el valor de soroll mesurat com a número real.

Per mostrar el valor, els valors que hi ha a sota de signal_max es col·loquen en 25 "contenidors" representats per un LED, començant de 0 (superior esquerre) a 24 (inferior dret). A continuació, es calcula la posició x / y i s'encén el LED corresponent. Els valors superiors a signal_max es col·loquen a la safata 24. Si el valor és inferior a noise_max, els LED es tornaran a canviar.

deixa noise_x = 0 deixa signal_max = 0 deixa noise_5 = 0 deixa noise_25 = 0 deixa noise_max = 0 basic.showString ("Noise") noise_max = 0 noise_25 = 0 noise_5 = 0 signal_max = 250 basic.forever (function () {while (entrada.buttonIsPressed (Button. B)) {basic.showNumber (envirobit.getSoundLevel ()) basic.showString ("-")} si (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) {noise_max = noise_25}})

Pas 3: un codi per a un sensor de temperatura (humitat, pressió) amb identificadors mínims / màxims

Un codi per a un sensor de temperatura (humitat, pressió) amb identificadors mínims / màxims
Un codi per a un sensor de temperatura (humitat, pressió) amb identificadors mínims / màxims

Aquí trobareu un codi per a la funció de temperatura enviro: bit.

Els paràmetres signal_min i signal_max estableixen les temperatures mínima i màxima (* C) que es mostren a la matriu del LED. En configurar signal_main = 5 i signal_max = 30, 5 i 6 * C són representats pel LED superior esquerre (0, 0) i 28/29 * C pel LED inferior dret (4, 4).

Hi ha marge per a l'optimització: amb l'augment i la baixada del codi actual, les temperatures deixen un rastre de LEDs activats o apagats. D'altra banda, això permet llegir la tendència actual de la temperatura (caiguda / pujada), ja que el valor actual s'indica amb el LED parpellejant.

Substituir getTemperature () per getHumidity () o getPressure () i ajustar els valors signal_min i signal_max en conseqüència (per exemple, 0/100% respectivament 950/1150 hPA) permetria mostrar aquests paràmetres a la matriu LED.

deixa Temp_x = 0 deixa Temp_5 = 0 deixa signal_delta = 0 deixa Temp_25 = 0 deixa Temp_Min = 0 deixa signal_min = 0 deixa Temp_Max = 0 deixa 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 ()} mentre que (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_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}})

Recomanat: