Mündəricat:

Mikro: bit səs -küy səviyyəsi detektoru: 3 addım
Mikro: bit səs -küy səviyyəsi detektoru: 3 addım

Video: Mikro: bit səs -küy səviyyəsi detektoru: 3 addım

Video: Mikro: bit səs -küy səviyyəsi detektoru: 3 addım
Video: СУХОЙ НОС? ВКЛЮЧАЕМ И СМОТРИМ ВИДЕО! 2024, Noyabr
Anonim
Mikro: bit səs -küy səviyyəsi detektoru
Mikro: bit səs -küy səviyyəsi detektoru
Mikro: bit səs -küy səviyyəsi detektoru
Mikro: bit səs -küy səviyyəsi detektoru
Mikro: bit səs -küy səviyyəsi detektoru
Mikro: bit səs -küy səviyyəsi detektoru

Bu mikro: bit və Pimoroni mühiti: bitə əsaslanan səs -küy səviyyəsi detektoru üçün qısa bir nümunədir.

Ətrafdakı mikrofon: bit səs səviyyəsini algılar və nəticədə 5x5 LED matrisində bir mövqe hesablanır və müvafiq LED aktiv olur. Ölçülmüş maksimum dəyərlər LED matrisində saxlanılır və göstərilir.

Dəyərlər rəqəmlərlə də göstərilə bilər.

Beləliklə, əsasən çox sadə bir səs -küy səviyyəsi aşkarlama vasitəsidir, məsələn. sinif otağında təcrübələr üçün.

Sensor tərəfindən aşkar edilən həqiqi və maksimum dəyərləri göstərmək üçün təsvir edilən üsul 5x5 bitlik LED matris, temperatur, rütubət və ya təzyiq kimi digər parametrlər üçün də istifadə edilə bilər.

Addım 1: İstifadə olunan hissələr və proqram

Avadanlıq:

  • Mikro: bit
  • Pimoroni mühiti: bit - səs, işıq və rəng və təzyiq/temperatur/rütubət üçün üç sensorla gəlir (Pimoroni -də 20 GBP)
  • Pimoroni gücü: bit - cihazı batareyalardan gücləndirmək üçün (isteğe bağlı olaraq və ya mikrobiti gücləndirmək üçün başqa bir yolla, Pimoroni -də 6 GBP)

Proqram təminatı:

  • Microsoft MakeCode
  • Pimoroni mühiti: bit MakeCode uzantısı

Ssenarini mikro: bit-ə yükləmək üçün, verilən hex-faylını micro: bit-ə bir enviro: bit əlavə edərək kopyalayın.

Addım 2: Kod

Kod, Enviro: Bit uzantısından istifadə edərək blok rejimində Microsoft MakeCode istifadə edərək yazılmışdır. Bellow, uyğun JavaScript Kodunu tapırsınız.

Envirobit.getSoundLevel () funksiyası sensordan səs səviyyəsini oxuyur və 0 -dan 443 -ə qədər bir dəyər qaytarır.

Sabit signal_max, LED matrisində göstəriləcək dinamik aralığın maksimum dəyərini təyin edir, yuxarıdakı dəyərlər bir signal_max olaraq qəbul ediləcək. Bu, tətbiqiniz üçün cihazın həssaslığını optimallaşdırmağa imkan verir.

Bir ölçü dairəsində aşkar edilən maksimum dəyər, noise_max variantında saxlanılır və LED matrisində qalır.

"A" düyməsinə basaraq noise_max sıfırlanır və ekranı təmizləyir, "B" düyməsinə basaraq ölçülmüş səs -küy dəyərini həqiqi rəqəm olaraq göstərir.

Dəyəri göstərmək üçün signal_max altındakı dəyərlər 0 (yuxarı sol) ilə 24 (aşağı sağ) başlayaraq bir LED ilə təmsil olunan 25 "zibil qutusuna" yerləşdirilir. Sonra x/y mövqeyi hesablanır və müvafiq LED yandırılır. Signal_max -dan yuxarı olan dəyərlər 24 -cü qutuya yerləşdirilir. Əgər dəyər noise_max -dan aşağı olarsa, LEDlər yenidən dəyişdiriləcək.

gürültü_x = 0 burax siqnal_max = 0 səs -küy_5 = 0 səs -küy_25 = 0 səs -küy_max = 0 əsas.showString ("Səs -küy") səs_max = 0 səs -küy_25 = 0 səs -küy_5 = 0 siqnal_max = 250 əsas. sonsuz (funksiya () {zamanı (giriş).buttonIsPressed (Button. B)) {basic.showNumber (envirobit.getSoundLevel ()) basic.showString ("-")} if (input.buttonIsPressed (Button. A)) {noise_max = 0 basic.clearScreen ()} gürültü_25 = Math.floor (envirobit.getSoundLevel () / signal_max * 25) əgər (səs -küy_25> 24) {səs -küy_25 = 24} səs -küy_5 = Math.floor (səs -küy_25 / 5) səs -küy = səs_25 - gürültü_5 * 5 led.plot (səs -küy, səs -küy_5) əsas.pauza (200) əgər (səs -küy_25 səs_max) {səs_max = səs -küy_25}})

Addım 3: Min/Maks Göstəriciləri olan İstilik (Nəmlik, Təzyiq) Sensoru üçün Kod

Min/Maks Göstəriciləri olan İstilik (Nəmlik, Təzyiq) Sensoru üçün Kod
Min/Maks Göstəriciləri olan İstilik (Nəmlik, Təzyiq) Sensoru üçün Kod

Burada enviro: bit temperatur funksiyası üçün bir kod tapa bilərsiniz.

Signal_min və signal_max parametrləri LED matrisində göstərilən minimum və maksimum temperaturları (*C) təyin edir. Burada signal_main = 5 və signal_max = 30 ayarı 5 və 6*C ilə nəticələnir, sol üst LED (0, 0) və 28/29 C aşağı sağ LED (4, 4) ilə təmsil olunur.

Optimallaşdırma üçün bir yer var: mövcud kod ilə yüksələn və aşağı düşən temperaturlar LED -lərin izini buraxır və ya yandırır. Digər tərəfdən bu, mövcud temperatur meylini (düşmə/yüksəlmə) oxumağa imkan verir, çünki cari dəyər yanıb -sönən LED ilə göstərilir.

GetTumperature () funksiyasını getHumidity () və ya getPressure () ilə əvəz etmək və buna uyğun olaraq signal_min və signal_max dəyərlərini tənzimləmək (məsələn, 0/100 % sırasıyla 950/1150 hPA) bu parametrləri LED matrisində göstərməyə imkan verir.

let Temp_x = 0let Temp_5 = 0 let signal_delta = 0 olsun Temp_25 = 0 olsun Temp_Min = 0 olsun signal_min = 0 olsun Temp_Max = 0 olsun siqnal_max = 0 əsas olsun. 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} əgər (Temp_25 <Temp_Min) {Temp_Min = Temp_25}})

Tövsiyə: