Kazalo:

Micro: bitni detektor nivoja hrupa: 3 koraki
Micro: bitni detektor nivoja hrupa: 3 koraki

Video: Micro: bitni detektor nivoja hrupa: 3 koraki

Video: Micro: bitni detektor nivoja hrupa: 3 koraki
Video: Дора выбила леона на концерте #дора #shorts 2024, November
Anonim
Micro: bitni detektor nivoja hrupa
Micro: bitni detektor nivoja hrupa
Micro: bitni detektor nivoja hrupa
Micro: bitni detektor nivoja hrupa
Micro: bitni detektor nivoja hrupa
Micro: bitni detektor nivoja hrupa

To je le kratek primer za detektor nivoja hrupa, ki temelji na micro: bit in Pimoroni enviro: bit.

Mikrofon na okolju: bit zazna raven zvoka in iz nastale vrednosti se izračuna položaj na matriki LED 5x5 in aktivira se ustrezna LED. Največje izmerjene vrednosti se shranijo in ostanejo prikazane na matriki LED.

Vrednosti se lahko prikažejo tudi v številkah.

Torej je v bistvu zelo preprosto orodje za odkrivanje ravni hrupa, npr. za poskuse v učilnici.

Opisana metoda za prikaz dejanskih in največjih vrednosti, ki jih zazna senzor na mikro: bitovih 5 x 5 LED matriki, se lahko uporablja tudi za druge parametre, kot so temperatura, vlaga ali tlak.

1. korak: Uporabljeni deli in programska oprema

Strojna oprema:

  • Mikro: bit
  • Okolica Pimoronija: bit - ima tri senzorje za zvok, svetlobo in barvo ter pritisk/temperaturo/vlažnost (20 GBP pri Pimoroniju)
  • Napajanje Pimoronija: bit - za napajanje naprave iz baterij (neobvezno ali na drug način za napajanje mikrobitov, 6 GBP pri Pimoroniju)

Programska oprema:

  • Microsoft MakeCode
  • Razširitev Pimoroni enviro: bit MakeCode

Če želite naložiti skript v svoj micro: bit, samo kopirajte priloženo šestnajstiško datoteko v svoj micro: bit s priloženim enviro: bit.

2. korak: Koda

Koda je bila napisana z uporabo Microsoft MakeCode v blokovnem načinu z uporabo razširitve Enviro: Bit. Bellow najdete ustrezno kodo JavaScript.

Funkcija envirobit.getSoundLevel () prebere raven zvoka s senzorja in vrne vrednost od 0 do 443.

Konstanta signal_max določa največjo vrednost dinamičnega območja, ki bo prikazana na matrici LED, zgornje vrednosti bodo obravnavane kot bit signal_max. To vam omogoča, da optimizirate občutljivost naprave za vašo aplikacijo.

Največja vrednost, zaznana v merilnem krogu, je shranjena v varianti noise_max in ostane prikazana na matrici LED.

S pritiskom na gumb "A" ponastavite noise_max in počistite zaslon, s pritiskom na gumb "B" pa se izmerjena vrednost hrupa prikaže kot dejansko število.

Za prikaz vrednosti so vrednosti pod signal_max postavljene v 25 "zaboje", ki jih predstavlja ena LED, začenši od 0 (zgoraj levo) do 24 (spodaj desno). Nato se izračuna položaj x/y in vklopi ustrezna LED. Vrednosti nad signal_max so shranjene v predalu 24. Če je vrednost pod hrupom_maksa, se bodo LED -diode znova ugasnile.

pusti noise_x = 0let signal_max = 0 naj šum_5 = 0 pusti šum_25 = 0 pusti šum_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) {noise_max = noise_25}})

Korak 3: Koda za senzor temperature (vlažnosti, tlaka) z indikatorji min/max

Koda za senzor temperature (vlažnosti, tlaka) z indikatorji min/max
Koda za senzor temperature (vlažnosti, tlaka) z indikatorji min/max

Tu najdete kodo za funkcijo enviro: bit temperature.

Parametra signal_min in signal_max nastavita najnižjo in najvišjo temperaturo (*C), prikazano na matriki LED. Tu nastavitev signal_main = 5 in signal_max = 30 povzroči, da 5 in 6*C predstavljata zgornja leva LED (0, 0) in 28/29*C spodnja desna LED (4, 4).

Obstaja prostor za optimizacijo: zaradi trenutne kode naraščajoče in padajoče temperature puščajo sled LED, ki so vklopljene ali izklopljene. Po drugi strani pa to omogoča branje trenutne temperaturne tendence (padanje/naraščanje), saj je trenutna vrednost označena z utripajočo LED.

Zamenjava getTemperature () z getHumidity () ali getPressure () in ustrezno prilagajanje vrednosti signal_min in signal_max (npr. 0/100 % oziroma 950/1150 hPA) bi omogočilo prikaz teh parametrov na matriki LED.

naj Temp_x = 0let Temp_5 = 0 naj signal_delta = 0 pusti Temp_25 = 0 pusti Temp_Min = 0 pusti signal_min = 0 pusti Temp_Max = 0 pusti 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_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}})

Priporočena: