Spisu treści:

Detektor poziomu hałasu Micro:bit: 3 kroki
Detektor poziomu hałasu Micro:bit: 3 kroki

Wideo: Detektor poziomu hałasu Micro:bit: 3 kroki

Wideo: Detektor poziomu hałasu Micro:bit: 3 kroki
Wideo: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Listopad
Anonim
Mikro:bitowy detektor poziomu szumów
Mikro:bitowy detektor poziomu szumów
Mikro:bitowy detektor poziomu szumów
Mikro:bitowy detektor poziomu szumów
Mikro:bitowy detektor poziomu szumów
Mikro:bitowy detektor poziomu szumów

To tylko krótki przykład detektora poziomu hałasu opartego na micro:bit i Pimoroni enviro:bit.

Mikrofon na enviro:bit wykrywa poziom dźwięku iz otrzymanej wartości obliczana jest pozycja na matrycy LED 5x5 i aktywowana jest odpowiednia dioda LED. Maksymalne zmierzone wartości są zapisywane i wyświetlane na matrycy LED.

Wartości mogą być również wyświetlane w liczbach.

Jest to więc w zasadzie bardzo proste narzędzie do wykrywania poziomu hałasu, m.in. do eksperymentów w klasie.

Opisana metoda wyświetlania rzeczywistych i maksymalnych wartości wykrytych przez czujnik na matrycy LED micro:bits 5x5 może być również wykorzystana do innych parametrów, takich jak temperatura, wilgotność lub ciśnienie.

Krok 1: Używane części i oprogramowanie

Sprzęt komputerowy:

  • Mikro:bit
  • Enviro:bit od Pimoroni - jest wyposażony w trzy czujniki dźwięku, światła i koloru oraz ciśnienia/temperatury/wilgotności (20 GBP w Pimoroni)
  • Pimoroni power:bit - do zasilania urządzenia z baterii (opcjonalnie lub w inny sposób do zasilania microbita, 6 GBP u Pimoroni)

Oprogramowanie:

  • Microsoft MakeCode
  • Rozszerzenie Pimoroni enviro:bit MakeCode

Aby załadować skrypt do swojego micro:bit, po prostu skopiuj dostarczony plik szesnastkowy do swojego micro:bit z załączonym enviro:bit.

Krok 2: Kodeks

Kod został napisany przy użyciu programu Microsoft MakeCode w trybie blokowym, przy użyciu rozszerzenia Enviro:Bit. Poniżej znajdziesz odpowiedni kod JavaScript.

Funkcja envirobit.getSoundLevel() odczytuje poziom dźwięku z czujnika, zwracając wartość od 0 do 443.

Stała signal_max określa maksymalną wartość zakresu dynamicznego, która ma być wyświetlana na matrycy LED, powyższe wartości będą traktowane jako signal_max. Pozwala to zoptymalizować czułość urządzenia pod kątem Twojej aplikacji.

Maksymalna wartość wykryta w okręgu pomiarowym jest przechowywana w wariancie noise_max i pozostaje wyświetlana na matrycy LED.

Naciśnięcie przycisku "A" resetuje noise_max i czyści ekran, naciśnięcie przycisku "B" wyświetla zmierzoną wartość szumu jako liczbę rzeczywistą.

Aby wyświetlić wartość, wartości poniżej signal_max są umieszczane w 25 "bin" reprezentowanych przez jedną diodę LED, zaczynając od 0 (lewy górny) do 24 (prawy dolny). Następnie obliczana jest pozycja x/y i zapala się odpowiednia dioda LED. Wartości powyżej signal_max są umieszczane w pojemniku 24. Jeśli wartość jest poniżej noise_max, diody LED zostaną ponownie wyłączone.

niech noise_x = 0 niech signal_max = 0 niech noise_5 = 0 niech noise_25 = 0 niech noise_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 } })

Krok 3: Kod czujnika temperatury (wilgotności, ciśnienia) ze wskaźnikami Min/Max

Kod czujnika temperatury (wilgotności, ciśnienia) ze wskaźnikami min./maks
Kod czujnika temperatury (wilgotności, ciśnienia) ze wskaźnikami min./maks

Tutaj znajdziesz kod dla funkcji temperatury enviro:bit.

Parametry signal_min i signal_max ustawiają minimalną i maksymalną temperaturę (*C) wyświetlaną na matrycy LED. Tutaj ustawienie signal_main=5 i signal_max=30 powoduje, że 5 i 6*C są reprezentowane przez górną lewą diodę LED (0, 0) a 28/29*C przez dolną prawą diodę (4, 4).

Jest miejsce na optymalizację: przy obecnym kodzie rosnące i opadające temperatury pozostawiają ślad po włączonych lub wyłączonych diodach LED. Z drugiej strony pozwala to na odczytanie aktualnej tendencji temperatury (spadek/wzrost), gdyż aktualna wartość jest sygnalizowana miganiem diody LED.

Zastąpienie getTemperature() przez getHumidity() lub getPressure() i odpowiednie dostosowanie wartości signal_min i signal_max (np. 0/100 % lub odpowiednio 950/1150 hPA) pozwoliłoby na wyświetlenie tych parametrów na matrycy LED.

let Temp_x = 0 let Temp_5 = 0 let signal_delta = 0 let Temp_25 = 0 let Temp_Min = 0 let signal_min = 0 let Temp_Max = 0 let 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 = Matematyka.podłoga(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 } })

Zalecana: