Innholdsfortegnelse:

Micro: bit Støynivådetektor: 3 trinn
Micro: bit Støynivådetektor: 3 trinn

Video: Micro: bit Støynivådetektor: 3 trinn

Video: Micro: bit Støynivådetektor: 3 trinn
Video: Собрал рабочий Детектор Лжи из конструктора! Электронный конструктор ZNATOK на 999 схем! 2024, November
Anonim
Micro: bit Støynivå detektor
Micro: bit Støynivå detektor
Micro: bit Støynivå detektor
Micro: bit Støynivå detektor
Micro: bit Støynivå detektor
Micro: bit Støynivå detektor

Dette er bare et kort eksempel på en støynivådetektor basert på micro: bit og Pimoroni enviro: bit.

Mikrofonen på enviro: bit oppdager lydnivået, og fra den resulterende verdien beregnes en posisjon på 5x5 LED -matrisen og den tilhørende LED -en aktiveres. Maksimale verdier lagres og vises fortsatt på LED -matrisen.

Verdiene kan også vises i tall.

Så det er i utgangspunktet et veldig enkelt verktøy for deteksjon av støynivå, f.eks. for eksperimenter i klasserommet.

Metoden beskrevet for å vise faktiske og maksimale verdier oppdaget av en sensor på micro: bits 5x5 LED -matrisen kan også brukes for andre parametere som temperatur, fuktighet eller trykk.

Trinn 1: Deler og programvare som brukes

Maskinvare:

  • En mikro: bit
  • En Pimoroni enviro: bit - leveres med tre sensorer for lyd, lys og farge, og trykk/temperatur/fuktighet (20 GBP på Pimoroni)
  • En Pimoroni -effekt: bit - for å drive enheten fra batterier (valgfritt eller annen måte å drive mikrobiten på, 6 GBP på Pimoroni)

Programvare:

  • Microsoft MakeCode
  • Pimoroni enviro: bit MakeCode -utvidelsen

For å laste skriptet til micro: bit, bare kopier den medfølgende hex-filen til micro: bit med en enviro: bit vedlagt.

Trinn 2: Koden

Koden er skrevet med Microsoft MakeCode i blokkmodus, med Enviro: Bit -utvidelsen. Her finner du den tilsvarende JavaScript -koden.

Funksjonen envirobit.getSoundLevel () leser lydnivået fra sensoren og returnerer en verdi fra 0 til 443.

Konstant signal_max definerer en maksimal verdi for det dynamiske området som skal vises på LED -matrisen, verdiene ovenfor vil bli behandlet som et signal_max. Dette lar deg optimalisere enhetens følsomhet for applikasjonen din.

Den maksimale verdien som oppdages i en målesirkel er lagret i varianten noise_max og forblir vist på LED -matrisen.

Ved å trykke på knappen "A" tilbakestilles noise_max og tømmes på skjermen, ved å trykke på knappen "B" vises den målte støyverdien som det faktiske tallet.

For å vise verdien plasseres verdiene under signal_max i 25 "binger" representert med en LED, som starter fra 0 (øverst til venstre) til 24 (nederst til høyre). Deretter beregnes x/y -posisjonen og den tilhørende lysdioden slås på. Verdier over signal_max plasseres i skuff 24. Hvis verdien er under noise_max, slås lysdiodene på igjen.

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

Trinn 3: En kode for en temperatur (fuktighet, trykk) sensor med min/maks -indikatorer

En kode for en temperatursensor (fuktighet, trykk) med min/maks -indikatorer
En kode for en temperatursensor (fuktighet, trykk) med min/maks -indikatorer

Her finner du en kode for enviro: bits temperaturfunksjon.

Parametrene signal_min og signal_max angir minimum og maksimum temperaturer (*C) som vises på LED -matrisen. Her resulterer innstilling av signal_main = 5 og signal_max = 30 i at 5 og 6*C representeres av den øvre venstre LED (0, 0) og 28/29*C av den nedre høyre LED (4, 4).

Det er rom for optimalisering: med den nåværende koden stigende og fallende temperaturer etterlater et spor av lysdioder enten slått på eller av. På den annen side tillater dette å lese gjeldende temperaturtendens (fallende/stigende), ettersom gjeldende verdi indikeres av blinkende LED.

Hvis du erstatter getTemperature () med getHumidity () eller getPressure () og justerer signal_min og signal_max verdiene deretter (f.eks.

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

Anbefalt: