İçindekiler:

Mikro:bit Gürültü Seviyesi Dedektörü: 3 Adım
Mikro:bit Gürültü Seviyesi Dedektörü: 3 Adım

Video: Mikro:bit Gürültü Seviyesi Dedektörü: 3 Adım

Video: Mikro:bit Gürültü Seviyesi Dedektörü: 3 Adım
Video: SteelSeries Arena 3 Oyun Hoparlörü Detaylı İnceleme 2024, Kasım
Anonim
Mikro:bit Gürültü Seviyesi Dedektörü
Mikro:bit Gürültü Seviyesi Dedektörü
Mikro:bit Gürültü Seviyesi Dedektörü
Mikro:bit Gürültü Seviyesi Dedektörü
Mikro:bit Gürültü Seviyesi Dedektörü
Mikro:bit Gürültü Seviyesi Dedektörü

Bu, mikro:bit ve Pimoroni enviro:bit'e dayalı bir gürültü seviyesi dedektörü için sadece kısa bir örnektir.

Enviro:bit üzerindeki mikrofon ses seviyesini algılar ve elde edilen değerden 5x5 LED matrisi üzerindeki bir konum hesaplanır ve ilgili LED etkinleştirilir. Ölçülen maksimum değerler kaydedilir ve LED matrisinde görüntülenmeye devam eder.

Değerler sayılarla da görüntülenebilir.

Bu nedenle temelde çok basit bir gürültü seviyesi algılama aracıdır, örn. sınıf deneyleri için.

Mikro:bit 5x5 LED matrisinde bir sensör tarafından algılanan gerçek ve maksimum değerleri görüntülemek için açıklanan yöntem, sıcaklık, nem veya basınç gibi diğer parametreler için de kullanılabilir.

1. Adım: Kullanılan Parçalar ve Yazılım

Donanım:

  • bir mikro:bit
  • Bir Pimoroni enviro:bit - ses, ışık ve renk ve basınç/sıcaklık/nem için üç sensörle birlikte gelir (Pimoroni'de 20 GBP)
  • Bir Pimoroni gücü:bit - cihazdan pillere güç sağlamak için (isteğe bağlı veya mikrobit'e güç sağlamanın başka bir yolu, Pimoroni'de 6 GBP)

Yazılım:

  • Microsoft MakeCode
  • Pimoroni enviro:bit MakeCode uzantısı

Komut dosyasını micro:bit'inize yüklemek için, sağlanan hex dosyasını bir enviro:bit ekli olarak micro:bit'inize kopyalamanız yeterlidir.

2. Adım: Kod

Kod, Enviro:Bit uzantısı kullanılarak blok modunda Microsoft MakeCode kullanılarak yazılmıştır. İlgili JavaScript Kodunu aşağıda bulabilirsiniz.

envirobit.getSoundLevel() işlevi, sensörden gelen ses seviyesini okur ve 0 ile 443 arasında bir değer döndürür.

Sabit sinyal_maks, LED matrisinde görüntülenecek dinamik aralığın maksimum değerini tanımlar, yukarıdaki değerler bir sinyal_maks olarak kabul edilir. Bu, uygulamanız için cihazın hassasiyetini optimize etmenizi sağlar.

Bir ölçüm dairesinde tespit edilen maksimum değer, noise_max varyantında saklanır ve LED matrisinde görüntülenmeye devam eder.

"A" düğmesine basmak noise_max'ı sıfırlar ve ekranı temizler, "B" düğmesine basmak ölçülen gürültü değerini gerçek sayı olarak görüntüler.

Değeri görüntülemek için, signal_max'ın altındaki değerler, 0 (sol üst) ile 24 (sağ alt) arasında bir LED ile temsil edilen 25 "kutuya" yerleştirilir. Ardından x/y konumu hesaplanır ve ilgili LED yanar. Signal_max'ın üzerindeki değerler, kutu 24'e yerleştirilir. Değer noise_max'ın altındaysa, LED'ler tekrar kapatılacaktır.

let noise_x = 0let signal_max = 0 let noise_5 = 0 let noise_25 = 0 let noise_max = 0 basic.showString("Gürültü") 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 } })

Adım 3: Min/Maks Tanımlayıcılı Sıcaklık (Nem, Basınç) Sensörü Kodu

Min/Maks Tanımlayıcılı Sıcaklık (Nem, Basınç) Sensörü Kodu
Min/Maks Tanımlayıcılı Sıcaklık (Nem, Basınç) Sensörü Kodu

Burada enviro:bit sıcaklık fonksiyonu için bir kod bulacaksınız.

Sinyal_min ve sinyal_maks parametreleri, LED matrisinde görüntülenen minimum ve maksimum sıcaklıkları (*C) ayarlar. Burada sinyal_ana=5 ve sinyal_maks=30 ayarı, sol üst LED (0, 0) ile temsil edilen 5 ve 6*C ve sağ alt LED (4, 4) ile 28/29*C ile sonuçlanır.

Optimizasyon için yer var: mevcut kodla birlikte yükselen ve düşen sıcaklıklar, açık veya kapalı bir LED izi bırakıyor. Öte yandan, mevcut sıcaklık yanıp sönen LED ile gösterildiğinden bu, mevcut sıcaklık eğiliminin (düşüş/yükselen) okunmasını sağlar.

getTemperature() öğesini getHumidity() veya getPressure() ile değiştirmek ve signal_min ve signal_max değerlerini buna göre ayarlamak (örn.

Let Temp_x = 0let Temp_5 = 0 let signal_delta = 0 Let Temp_25 = 0 let Temp_Min = 0 let signal_min = 0 let 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 } if (Temp_25 < Temp_Min) { Temp_Min = Temp_25 } })

Önerilen: