Sommario:

Micro: rilevatore di livello di rumore bit: 3 passaggi
Micro: rilevatore di livello di rumore bit: 3 passaggi

Video: Micro: rilevatore di livello di rumore bit: 3 passaggi

Video: Micro: rilevatore di livello di rumore bit: 3 passaggi
Video: NELLA FOTOGRAFIA DI PAESAGGIO MEGLIO IL MICRO 4/3 O IL FULL FRAME? 2024, Novembre
Anonim
Micro: rilevatore di livello di rumore bit
Micro: rilevatore di livello di rumore bit
Micro: rilevatore di livello di rumore bit
Micro: rilevatore di livello di rumore bit
Micro: rilevatore di livello di rumore bit
Micro: rilevatore di livello di rumore bit

Questo è solo un breve esempio per un rilevatore di livello di rumore basato sul micro:bit e sul Pimoroni enviro:bit.

Il microfono dell'enviro:bit rileva il livello sonoro, e dal valore risultante viene calcolata una posizione sulla matrice LED 5x5 e si attiva il LED corrispondente. I valori massimi misurati vengono memorizzati e rimangono visualizzati sulla matrice LED.

I valori possono essere visualizzati anche in numeri.

Quindi è fondamentalmente uno strumento di rilevamento del livello di rumore molto semplice, ad es. per esperimenti in classe.

Il metodo descritto per visualizzare i valori effettivi e massimi rilevati da un sensore sulla matrice LED micro:bits 5x5 potrebbe essere utilizzato anche per altri parametri come temperatura, umidità o pressione.

Passaggio 1: parti e software utilizzati

Hardware:

  • Un micro:bit
  • Un Pimoroni enviro:bit - viene fornito con tre sensori per suono, luce e colore e pressione/temperatura/umidità (20 GBP a Pimoroni)
  • Un Pimoroni power:bit - per alimentare il dispositivo tramite batterie (opzionale, o in qualsiasi altro modo per alimentare il microbit, 6 GBP presso Pimoroni)

Software:

  • Microsoft MakeCode
  • L'estensione Pimoroni enviro:bit MakeCode

Per caricare lo script sul tuo micro:bit, copia semplicemente il file esadecimale fornito sul tuo micro:bit con un enviro:bit allegato.

Passaggio 2: il codice

Il codice è stato scritto utilizzando Microsoft MakeCode in modalità blocco, utilizzando l'estensione Enviro:Bit. Di seguito trovi il codice JavaScript corrispondente.

La funzione envirobit.getSoundLevel() legge il livello sonoro dal sensore, restituendo un valore da 0 a 443.

La costante signal_max definisce un valore massimo della gamma dinamica da visualizzare sulla matrice LED, i valori sopra verranno trattati come un essere signal_max. Ciò consente di ottimizzare la sensibilità del dispositivo per la propria applicazione.

Il valore massimo rilevato in un cerchio di misura viene memorizzato nella variante noise_max e rimane visualizzato sulla matrice di LED.

Premendo il pulsante "A" si ripristina noise_max e si cancella lo schermo, premendo il pulsante "B" viene visualizzato il valore del rumore misurato come numero effettivo.

Per visualizzare il valore, i valori sotto signal_max sono posti in 25 "bin" rappresentati da un LED, a partire da 0 (in alto a sinistra) a 24 (in basso a destra). Quindi viene calcolata la posizione x/y e il LED corrispondente viene acceso. I valori superiori a signal_max vengono inseriti nel bin 24. Se il valore è inferiore a noise_max, i LED verranno nuovamente spenti.

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

Passaggio 3: un codice per un sensore di temperatura (umidità, pressione) con identificatori Min/Max

Un codice per un sensore di temperatura (umidità, pressione) con identificatori Min/Max
Un codice per un sensore di temperatura (umidità, pressione) con identificatori Min/Max

Qui trovi un codice per la funzione di temperatura enviro:bit.

I parametri signal_min e signal_max impostano le temperature minima e massima (*C) visualizzate sulla matrice di LED. Qui impostando signal_main=5 e signal_max=30 si ottiene che 5 e 6*C sono rappresentati dal LED in alto a sinistra (0, 0) e 28/29*C dal LED in basso a destra (4, 4).

C'è spazio per l'ottimizzazione: con il codice attuale l'aumento e la diminuzione delle temperature lasciano una traccia di LED accesi o spenti. D'altra parte questo permette di leggere l'andamento della temperatura attuale (diminuzione/aumento), in quanto il valore attuale è indicato dal LED lampeggiante.

La sostituzione di getTemperature() con getHumidity() o getPressure() e la regolazione dei valori signal_min e signal_max di conseguenza (ad es. 0/100 % rispettivamente 950/1150 hPA) consentirebbe di visualizzare questi parametri sulla matrice LED.

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 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 = 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 } })

Consigliato: