Оглавление:

Микро-битовый детектор уровня шума: 3 ступени
Микро-битовый детектор уровня шума: 3 ступени

Видео: Микро-битовый детектор уровня шума: 3 ступени

Видео: Микро-битовый детектор уровня шума: 3 ступени
Видео: Запомни эту хитрость по доработке перфораторы для ровного сверления 2024, Ноябрь
Anonim
Микро: битовый детектор уровня шума
Микро: битовый детектор уровня шума
Микро: битовый детектор уровня шума
Микро: битовый детектор уровня шума
Микро: битовый детектор уровня шума
Микро: битовый детектор уровня шума

Это лишь краткий пример детектора уровня шума на основе micro: bit и Pimoroni enviro: bit.

Микрофон на enviro: bit определяет уровень звука, и по полученному значению рассчитывается позиция на светодиодной матрице 5x5 и активируется соответствующий светодиод. Максимальные измеренные значения сохраняются и отображаются на светодиодной матрице.

Значения также могут отображаться в числах.

Таким образом, это, по сути, очень простой инструмент определения уровня шума, например для экспериментов в классе.

Описанный метод отображения фактических и максимальных значений, обнаруженных датчиком на светодиодной матрице micro: bit 5x5, также может использоваться для других параметров, таких как температура, влажность или давление.

Шаг 1. Используемые детали и программное обеспечение

Аппаратное обеспечение:

  • Микро: бит
  • Pimoroni enviro: bit - поставляется с тремя датчиками звука, света и цвета, а также давления / температуры / влажности (20 фунтов стерлингов в Pimoroni)
  • A Pimoroni power: bit - для питания устройства от батарей (по желанию или любым другим способом для питания микробита, 6 фунтов стерлингов в Pimoroni)

Программное обеспечение:

  • Microsoft MakeCode
  • Расширение Pimoroni enviro: bit MakeCode

Чтобы загрузить скрипт в ваш micro: bit, просто скопируйте предоставленный шестнадцатеричный файл на ваш micro: bit с прикрепленным enviro: bit.

Шаг 2: Код

Код был написан с использованием Microsoft MakeCode в блочном режиме с использованием расширения Enviro: Bit. Ниже вы найдете соответствующий код JavaScript.

Функция envirobit.getSoundLevel () считывает уровень звука с датчика, возвращая значение от 0 до 443.

Константа signal_max определяет максимальное значение динамического диапазона, отображаемого на светодиодной матрице, значения выше будут обрабатываться как signal_max. Это позволяет оптимизировать чувствительность устройства для вашего приложения.

Максимальное значение, обнаруженное в измерительном круге, сохраняется в варианте noise_max и остается отображенным на светодиодной матрице.

Нажатие кнопки «A» сбрасывает noise_max и очищает экран, нажатие кнопки «B» отображает измеренное значение шума как фактическое число.

Для отображения значения значения ниже signal_max помещаются в 25 «ячеек», представленных одним светодиодом, начиная с 0 (вверху слева) до 24 (внизу справа). Затем рассчитывается положение x / y и включается соответствующий светодиод. Значения выше signal_max помещаются в ячейку 24. Если значение меньше noise_max, светодиоды снова отключаются.

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

Шаг 3: Код для датчика температуры (влажности, давления) с указателями минимума / максимума

Код для датчика температуры (влажности, давления) с указателями мин. / Макс
Код для датчика температуры (влажности, давления) с указателями мин. / Макс

Здесь вы найдете код для функции температуры enviro: bit.

Параметры signal_min и signal_max устанавливают минимальную и максимальную температуру (* C), отображаемую на светодиодной матрице. Здесь установка signal_main = 5 и signal_max = 30 приводит к тому, что 5 и 6 * C представлены верхним левым светодиодом (0, 0) и 28/29 * C нижним правым светодиодом (4, 4).

Есть место для оптимизации: при текущем коде повышение и понижение температуры оставляют следы светодиодов, которые либо включены, либо выключены. С другой стороны, это позволяет считывать текущую тенденцию температуры (падение / повышение), поскольку текущее значение отображается мигающим светодиодом.

Замена getTemperature () на getHumidity () или getPressure () и соответствующая настройка значений signal_min и signal_max (например, 0/100% соответственно 950/1150 гПа) позволили бы отобразить эти параметры на светодиодной матрице.

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

Рекомендуемые: