Innehållsförteckning:

Micro: bit Noise Level Detector: 3 steg
Micro: bit Noise Level Detector: 3 steg

Video: Micro: bit Noise Level Detector: 3 steg

Video: Micro: bit Noise Level Detector: 3 steg
Video: Introduction to the BBC micro:bit 2024, November
Anonim
Micro: bit Noise Level Detector
Micro: bit Noise Level Detector
Micro: bit Noise Level Detector
Micro: bit Noise Level Detector
Micro: bit Noise Level Detector
Micro: bit Noise Level Detector

Detta är bara ett kort exempel på en brusnivådetektor baserad på micro: bit och Pimoroni enviro: bit.

Mikrofonen på enviro: bit detekterar ljudnivån, och från det resulterande värdet beräknas en position på 5x5 LED -matrisen och motsvarande LED aktiveras. De högsta mätvärdena lagras och visas kvar på LED -matrisen.

Värdena kan också visas i siffror.

Så det är i grunden ett mycket enkelt bullernivådetekteringsverktyg, t.ex. för experiment i klassrum.

Metoden som beskrivs för att visa faktiska och maximala värden som detekteras av en sensor på micro: bits 5x5 LED -matrisen kan också användas för andra parametrar som temperatur, luftfuktighet eller tryck.

Steg 1: Delar och programvara som används

Hårdvara:

  • En mikro: bit
  • En Pimoroni -miljö: bit - levereras med tre sensorer för ljud, ljus och färg och tryck/temperatur/luftfuktighet (20 GBP på Pimoroni)
  • En Pimoroni -effekt: bit - för att driva enheten från batterier (tillval eller annat sätt att driva mikrobiten, 6 GBP på Pimoroni)

Programvara:

  • Microsoft MakeCode
  • Tillägget Pimoroni enviro: bit MakeCode

För att ladda skriptet till din micro: bit, kopiera bara den medföljande hex-filen till din micro: bit med en enviro: bit bifogad.

Steg 2: Koden

Koden har skrivits med Microsoft MakeCode i blockläge, med tillägget Enviro: Bit. Nedan hittar du motsvarande JavaScript -kod.

Funktionen envirobit.getSoundLevel () läser ljudnivån från sensorn och returnerar ett värde från 0 till 443.

Den konstanta signalen_max definierar ett maximivärde för det dynamiska intervall som ska visas på LED -matrisen, värden ovan kommer att behandlas som en signal_max. Detta låter dig optimera enhetens känslighet för din applikation.

Det maximala värdet som detekteras i en mätcirkel lagras i varianten noise_max och visas kvar på LED -matrisen.

Genom att trycka på knappen "A" återställs noise_max och rensas på skärmen, genom att trycka på knappen "B" visas det uppmätta brusvärdet som det faktiska talet.

För att visa värdet placeras värdena nedanför signal_max i 25 "fack" representerade av en lysdiod, från 0 (övre vänster) till 24 (nedre högra). Därefter beräknas x/y -läget och motsvarande lysdiod tänds. Värden över signal_max placeras i fack 24. Om värdet ligger under noise_max slås lysdioderna på igen.

låt noise_x = 0let signal_max = 0 låt noise_5 = 0 låt noise_25 = 0 låt 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}})

Steg 3: En kod för en temperaturgivare (luftfuktighet, tryck) med min/max -indikatorer

En kod för en temperaturgivare (luftfuktighet, tryck) med min/max -indikatorer
En kod för en temperaturgivare (luftfuktighet, tryck) med min/max -indikatorer

Här hittar du en kod för funktionen enviro: bit temperature.

Parametrarna signal_min och signal_max ställer in lägsta och högsta temperatur (*C) som visas på LED -matrisen. Här resulterar inställning signal_main = 5 och signal_max = 30 i att 5 och 6*C representeras av den övre vänstra lysdioden (0, 0) och 28/29*C av den nedre högra lysdioden (4, 4).

Det finns utrymme för optimering: med den nuvarande koden stigande och sjunkande temperaturer lämnar ett spår av lysdioder antingen på eller av. Å andra sidan gör det möjligt att avläsa den aktuella temperaturtendensen (fallande/stigande), eftersom det aktuella värdet indikeras av den blinkande lysdioden.

Att ersätta getTemperature () med getHumidity () eller getPressure () och justera signal_min- och signal_max -värdena därefter (t.ex. 0/100 % respektive 950/1150 hPA) skulle göra det möjligt att visa dessa parametrar på LED -matrisen.

låt Temp_x = 0let Temp_5 = 0 låt signal_delta = 0 låt Temp_25 = 0 låt Temp_Min = 0 låt signal_min = 0 låt Temp_Max = 0 låt 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} om (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}})

Rekommenderad: