Índice:

Micro: detector de nível de ruído de bits: 3 etapas
Micro: detector de nível de ruído de bits: 3 etapas

Vídeo: Micro: detector de nível de ruído de bits: 3 etapas

Vídeo: Micro: detector de nível de ruído de bits: 3 etapas
Vídeo: Acidente de trabalho em máquina 2024, Novembro
Anonim
Micro: detector de nível de ruído de bits
Micro: detector de nível de ruído de bits
Micro: detector de nível de ruído de bits
Micro: detector de nível de ruído de bits
Micro: detector de nível de ruído de bits
Micro: detector de nível de ruído de bits

Este é apenas um pequeno exemplo para um detector de nível de ruído baseado no micro: bit e no Pimoroni enviro: bit.

O microfone no enviro: bit detecta o nível de som e, a partir do valor resultante, uma posição na matriz de LEDs 5x5 é calculada e o LED correspondente é ativado. Os valores máximos medidos são armazenados e permanecem exibidos na matriz de LED.

Os valores também podem ser exibidos em números.

Portanto, é basicamente uma ferramenta de detecção de nível de ruído muito simples, por exemplo, para experimentos em sala de aula.

O método descrito para exibir os valores reais e máximos detectados por um sensor na matriz de LED micro: bits 5x5 também pode ser usado para outros parâmetros como temperatura, umidade ou pressão.

Etapa 1: Peças e software usados

Hardware:

  • Um micro: bit
  • A Pimoroni enviro: bit - vem com três sensores para som, luz e cor e pressão / temperatura / umidade (20 GBP em Pimoroni)
  • Um poder Pimoroni: bit - para alimentar as baterias de forma do dispositivo (opcional, ou qualquer outra forma de alimentar o micróbio, 6 GBP em Pimoroni)

Programas:

  • Microsoft MakeCode
  • O enviro Pimoroni: extensão MakeCode bit

Para carregar o script em seu micro: bit, apenas copie o arquivo hex fornecido em seu micro: bit com um enviro: bit anexado.

Etapa 2: O Código

O código foi escrito usando Microsoft MakeCode em modo de bloco, usando a extensão Enviro: Bit. Abaixo você encontra o código JavaScript correspondente.

A função envirobit.getSoundLevel () lê o nível de som do sensor, retornando um valor de 0 a 443.

A constante signal_max define um valor máximo da faixa dinâmica a ser exibida na matriz de LED, os valores acima serão tratados como sendo signal_max. Isso permite que você otimize a sensibilidade do dispositivo para sua aplicação.

Os valores máximos detectados em um círculo de medição são armazenados na variante noise_max e permanecem exibidos na matriz de LED.

Pressionar o botão "A" redefine o noise_max e limpa a tela, pressionando o botão "B" exibe o valor do ruído medido como um número real.

Para exibir o valor, os valores abaixo de signal_max são colocados em 25 "bins" representados por um LED, começando de 0 (canto superior esquerdo) a 24 (canto inferior direito). Em seguida, a posição x / y é calculada e o LED correspondente é ligado. Valores acima de signal_max são colocados no compartimento 24. Se o valor estiver abaixo de noise_max, os LEDs serão desligados novamente.

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

Etapa 3: um código para um sensor de temperatura (umidade, pressão) com identificadores mín. / Máx

Um código para um sensor de temperatura (umidade, pressão) com identificadores mín. / Máx
Um código para um sensor de temperatura (umidade, pressão) com identificadores mín. / Máx

Aqui você encontra um código para a função enviro: bit temperature.

Os parâmetros signal_min e signal_max definem as temperaturas mínima e máxima (* C) exibidas na matriz de LED. Aqui, definir signal_main = 5 e signal_max = 30 resulta em 5 e 6 * C sendo representados pelo LED superior esquerdo (0, 0) e 28/29 * C pelo LED inferior direito (4, 4).

Há espaço para otimização: com o código atual subindo e descendo, as temperaturas estão deixando rastros de LEDs acesos ou apagados. Por outro lado, permite ler a tendência da temperatura atual (queda / subida), pois o valor da corrente é indicado pelo LED piscando.

Substituir getTemperature () por getHumidity () ou getPressure () e ajustar os valores de signal_min e signal_max de acordo (por exemplo, 0/100% respectivamente 950/1150 hPA) permitiria exibir esses parâmetros na matriz de 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) se (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) se (Temp_25 Temp_Min) {led.unplot (Temp_x, Temp_5)} se (Temp_25> Temp_Max) {Temp_Max = Temp_25} se (Temp_25 <Temp_Min) {Temp_Min = Temp_25}})

Recomendado: