Cuprins:

Detector de nivel de zgomot Micro: bit: 3 pași
Detector de nivel de zgomot Micro: bit: 3 pași

Video: Detector de nivel de zgomot Micro: bit: 3 pași

Video: Detector de nivel de zgomot Micro: bit: 3 pași
Video: Costeo biju ‼️luat la palme de interlopi‼️#bucuresti #emipian #florinsalam #dans #interlopi 2024, Noiembrie
Anonim
Detector de nivel de zgomot Micro: bit
Detector de nivel de zgomot Micro: bit
Detector de nivel de zgomot Micro: bit
Detector de nivel de zgomot Micro: bit
Detector de nivel de zgomot Micro: bit
Detector de nivel de zgomot Micro: bit

Acesta este doar un scurt exemplu pentru un detector de nivel de zgomot bazat pe micro: bit și Pimoroni enviro: bit.

Microfonul de pe enviro: bit detectează nivelul sonor, iar din valoarea rezultată se calculează o poziție pe matricea LED 5x5 și se activează LED-ul corespunzător. Valorile maxime măsurate sunt stocate și rămân afișate pe matricea LED.

Valorile pot fi afișate și în cifre.

Deci este practic un instrument foarte simplu de detectare a nivelului de zgomot, de ex. pentru experimente în sala de clasă.

Metoda descrisă pentru a afișa valorile reale și maxime detectate de un senzor pe matricea LED micro: biți 5x5 ar putea fi utilizată și pentru alți parametri precum temperatura, umiditatea sau presiunea.

Pasul 1: Piese și software utilizate

Hardware:

  • Un micro: bit
  • A Pimoroni enviro: bit - vine cu trei senzori pentru sunet, lumină și culoare și presiune / temperatură / umiditate (20 GBP la Pimoroni)
  • O putere Pimoroni: bit - pentru a alimenta dispozitivul din baterii (opțional sau orice alt mod de a alimenta microbitul, 6 GBP la Pimoroni)

Software:

  • Microsoft MakeCode
  • Extensia Pimoroni enviro: bit MakeCode

Pentru a încărca scriptul pe micro: bit, trebuie doar să copiați fișierul hex furnizat pe micro: bit cu un enviro: bit atașat.

Pasul 2: Codul

Codul a fost scris folosind Microsoft MakeCode în modul bloc, utilizând extensia Enviro: Bit. Mai jos găsiți codul JavaScript corespunzător.

Funcția envirobit.getSoundLevel () citește nivelul de sunet de la senzor, returnând o valoare de la 0 la 443.

Constanta signal_max definește o valoare maximă a intervalului dinamic care urmează să fie afișat pe matricea LED, valorile de mai sus vor fi tratate ca ființă signal_max. Acest lucru vă permite să optimizați sensibilitatea dispozitivului pentru aplicația dvs.

Valoarea maximă detectată într-un cerc de măsurare este stocată în varianta noise_max și rămâne afișată pe matricea LED.

Apăsând butonul "A" se resetează noise_max și se șterge ecranul, apăsând butonul "B" se afișează valoarea zgomotului măsurat ca număr real.

Pentru a afișa valoarea, valorile de sub signal_max sunt plasate în 25 de "coșuri" reprezentate de un LED, începând de la 0 (stânga sus) la 24 (dreapta jos). Apoi se calculează poziția x / y și se aprinde LED-ul corespunzător. Valorile peste signal_max sunt plasate în coșul 24. Dacă valoarea este sub noise_max, LED-urile vor fi comutate din nou.

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 (funcție () {while (intrare.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}})

Pasul 3: un cod pentru un senzor de temperatură (umiditate, presiune) cu identificatori min / max

Un cod pentru un senzor de temperatură (umiditate, presiune) cu identificatori min / max
Un cod pentru un senzor de temperatură (umiditate, presiune) cu identificatori min / max

Aici găsiți un cod pentru funcția de temperatură de biți.

Parametrii signal_min și signal_max setează temperaturile minime și maxime (* C) afișate pe matricea LED. Aici setarea signal_main = 5 și signal_max = 30 are ca rezultat 5 și 6 * C fiind reprezentate de LED-ul din stânga sus (0, 0) și 28/29 * C de LED-ul din dreapta jos (4, 4).

Există spațiu pentru optimizare: odată cu creșterea și scăderea codului actual, temperaturile lasă o urmă de LED-uri fie aprinse, fie oprite. Pe de altă parte, acest lucru permite citirea tendinței actuale de temperatură (scădere / creștere), deoarece valoarea curentă este indicată de LED-ul intermitent.

Înlocuirea getTemperature () cu getHumidity () sau getPressure () și ajustarea corespunzătoare a valorilor signal_min și signal_max (de exemplu, 0/100% respectiv 950/1150 hPA) ar permite afișarea acestor parametri pe matricea LED.

lasa Temp_x = 0 lasa Temp_5 = 0 lasa signal_delta = 0 lasa Temp_25 = 0 lasa Temp_Min = 0 lasa signal_min = 0 lasa Temp_Max = 0 lasa 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}})

Recomandat: