Indholdsfortegnelse:

Micro: bit Støjniveau -detektor: 3 trin
Micro: bit Støjniveau -detektor: 3 trin

Video: Micro: bit Støjniveau -detektor: 3 trin

Video: Micro: bit Støjniveau -detektor: 3 trin
Video: Spiral Bits - Compression VS Upcut VS Downcut VS Straight - Never Before Seen 19,000 FPS HD Video 2024, November
Anonim
Micro: bit Støjniveau detektor
Micro: bit Støjniveau detektor
Micro: bit Støjniveau detektor
Micro: bit Støjniveau detektor
Micro: bit Støjniveau detektor
Micro: bit Støjniveau detektor

Dette er kun et kort eksempel på en støjniveau detektor baseret på micro: bit og Pimoroni enviro: bit.

Mikrofonen på enviro: bit registrerer lydniveauet, og ud fra den resulterende værdi beregnes en position på 5x5 LED -matrixen, og den tilsvarende LED aktiveres. De maksimale målte værdier gemmes og forbliver vist på LED -matricen.

Værdierne kan også vises i tal.

Så det er dybest set et meget simpelt støjniveau detekteringsværktøj, f.eks. til eksperimenter i klasseværelset.

Den beskrevne metode til visning af faktiske og maksimumværdier opdaget af en sensor på micro: bits 5x5 LED matrix kan også bruges til andre parametre som temperatur, fugtighed eller tryk.

Trin 1: Brugte dele og software

Hardware:

  • En mikro: bit
  • En Pimoroni enviro: bit - leveres med tre sensorer til lyd, lys og farve og tryk/temperatur/luftfugtighed (20 GBP på Pimoroni)
  • En Pimoroni -effekt: bit - for at drive enheden fra batterier (valgfri eller anden måde at drive mikrobiten på, 6 GBP på Pimoroni)

Software:

  • Microsoft MakeCode
  • Pimoroni enviro: bit MakeCode -udvidelsen

For at indlæse scriptet til din micro: bit, skal du bare kopiere den medfølgende hex-fil til din micro: bit med en enviro: bit vedhæftet.

Trin 2: Koden

Koden er blevet skrevet ved hjælp af Microsoft MakeCode i blokeringstilstand ved hjælp af Enviro: Bit -udvidelsen. Her finder du den tilsvarende JavaScript -kode.

Funktionen envirobit.getSoundLevel () læser lydniveauet fra sensoren og returnerer en værdi fra 0 til 443.

Det konstante signal_max definerer en maksimal værdi for det dynamiske område, der skal vises på LED -matricen, værdier ovenfor vil blive behandlet som et værende signal_max. Dette giver dig mulighed for at optimere enhedens følsomhed til din applikation.

Den maksimale værdi, der registreres i en målekreds, gemmes i varianten noise_max og vises fortsat på LED -matricen.

Ved at trykke på knappen "A" nulstilles noise_max og rydder skærmen, tryk på knappen "B" viser den målte støjværdi som det faktiske tal.

For at vise værdien placeres værdierne under signal_max i 25 "bakker" repræsenteret af en LED, der starter fra 0 (øverst til venstre) til 24 (nederst til højre). Derefter beregnes x/y -positionen, og den tilhørende LED tændes. Værdier over signal_max placeres i bin 24. Hvis værdien er under noise_max, tændes lysdioderne igen.

lad noise_x = 0let signal_max = 0 lad noise_5 = 0 lad noise_25 = 0 lad noise_max = 0 basic.showString ("Noise") noise_max = 0 noise_25 = 0 noise_5 = 0 signal_max = 250 basic.forever (funktion () {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}})

Trin 3: En kode for en temperatur (luftfugtighed, tryk) sensor med min/maks. Indikatorer

En kode for en temperatur (luftfugtighed, tryk) sensor med min/maks. Indikatorer
En kode for en temperatur (luftfugtighed, tryk) sensor med min/maks. Indikatorer

Her finder du en kode til enviro: bit temperatur funktion.

Parametre signal_min og signal_max indstiller minimum og maksimum temperaturer (*C), der vises på LED -matricen. Her resulterer indstilling af signal_main = 5 og signal_max = 30 i, at 5 og 6*C repræsenteres af den øverste venstre LED (0, 0) og 28/29*C af den nederste højre LED (4, 4).

Der er plads til optimering: med den nuværende kode stigende og faldende temperaturer efterlader et spor af lysdioder enten tændt eller slukket. På den anden side gør dette det muligt at aflæse den aktuelle temperaturtendens (faldende/stigende), da den aktuelle værdi er angivet med den blinkende LED.

Hvis du udskifter getTemperature () med getHumidity () eller getPressure () og justerer signal_min og signal_max værdierne i overensstemmelse hermed (f.eks.

lad Temp_x = 0let Temp_5 = 0 lad signal_delta = 0 lad Temp_25 = 0 lad Temp_Min = 0 lad signal_min = 0 lad Temp_Max = 0 lad 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} hvis (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}})

Anbefalede: