Главная chevron_right Наши уроки chevron_right Raspberry Pi Pico: Издаём звуки и играем мелодии (Модуль Зуммер)

Raspberry Pi Pico: Издаём звуки и играем мелодии (Модуль Зуммер)

Подключаем Trema-модуль Зуммер к Raspberry Pi Pico и управляем звуком через MicroPython в Thonny IDE: меняем частоту сигнала и собираем простой арпеджиатор с потенциометром.

Общие сведения

Иногда бывает полезно чтобы наше устройство подавало какие-то сигналы не только светом, но и звуком. В этом уроке мы научимся подавать сигналы при помощи Trema-модуля Зуммер.

Для этого урока нам понадобится:

Для работы данных примеров в Pi Pico необходимо загрузить прошивку MicroPython и установить Thonny IDE, о том как это сделать можно прочитать в этой статье /page/pi-pico-python-ide

Подключение

Подключим Trema-модуль Зуммер согласно таблице

Вывод модуляВывод Pi Pico
Vcc3V3(OUT)
GNDGND
SGP15

Подключим Trema-модуль Потенциометр согласно таблице

Вывод модуляВывод Pi Pico
VccADC_VREF
GNDAGND
SGP26

Управляем частотой звука

Зуммер состоит из платы, излучателя и транзистора, который преобразует низкое сопротивление переменному току (импеданс) излучателя в высокое сопротивление на затворе или базе транзистора. Благодаря этому мы можем управлять работой излучателя используя маленькие токи вывода Pi Pico. Выводы Pi Pico не имеют цифро-аналогового преобразователя, поэтому форма волны, излучаемая зуммером может быть только квадратной (единица и ноль). Но можно менять частоту этого сигнала, что мы сейчас и попробуем.

Во вкладке интерактивной оболочки введём:

Копировать1>>> from machine import Pin, PWM

Затем создадим объект Зуммера:

Копировать1>>> zum = PWM(Pin("GP15"))

Зададим широту импульса в 50% (65535/2 ≈ 32000)

Копировать1>>> zum.duty_u16(32000)

Установим частоту 440 Гц - ля первой октавы фортепиано

Копировать1>>> zum.freq(440)

Зуммер начнёт звучать. Как же теперь остановить это? Введём следующую строку:

Копировать1>>> zum.deinit()

Уроки музыки: Арпеджио

В качестве проекта для этого урока сделаем простой пример, если поворачивать ручку потенциометра - то зуммер будет бегать вниз и вверх по заданным нотам (так называемое "арпеджио", а наш прибор будет называться "Арпеджиатор"):

Копировать1234567891011121314151617181920212223242526272829303132333435`# Подключаем Выводы, ШИМ и АЦП from machine import Pin, PWM, ADC

Подключаем функцию сна в миллисекундах и называем её

from time import sleep_ms as delay

Создаём объект потенциометра

pot = ADC("GP26")

Создаём объект зуммера

zum = PWM(Pin("GP15"))

Устанавливаем широту

zum.duty_u16(32000)

Аккорд C maj 7 (ДО-МИ-СОЛЬ-СИ) раскинутый на две октавы

scale = [523, 659, 784, 988, 1046, 1318, 1568, 1875]

для хранения предыдущего индекса листа

previous_index = 0;

Бесконечный цикл

while True:

Получаем индекс для листа с частотами нот относительно положения потенциометра

current_index = int(pot.read_u16()/int(65535/(len(scale)-1)))

Если новая нота

if (previous_index != current_index):

запоминае её

previous_index = current_index

воспроизводим

zum.freq(scale[current_index])

ждём длительность

delay(200)

выключаем зуммер

zum.deinit() delay(5)`

В качестве эксперимента можно поиграться с числом передаваемым в zum.duty_u16() - это будет слега менять окрас звучания зуммера. Так же можно добавить или убрать ноты из листа scale

Ссылки

Комплект для повторения проекта

Что понадобится

Это быстрый ориентир по основным модулям и деталям. Полный список для повторения проекта смотрите в самой статье.

3 позиции
Все уроки