MIDI-синтезатор на шаговых двигателях под управлением Arduino
Компоненты и материалы
| Arduino UNO (или совместимая плата) | 1 шт. |
| Драйверы шаговых двигателей A4988 | 4 шт. |
| Arduino CNC Shield V3 (опционально) | 1 шт. |
| Блок питания 12 В 6 А | 1 шт. |
| Шаговые двигатели NEMA 17 (OpenBuilds) | 4 шт. |
Инструменты и оборудование
- 3D-принтер (опционально, для печати креплений)
Описание проекта
Проект преобразует MIDI-данные в звук, генерируемый четырьмя шаговыми двигателями. Идея возникла после просмотра видео с музыкой на флоппи-дисках. Цель — создать простой, легко модифицируемый код для управления несколькими двигателями одновременно.
Извлечение MIDI-данных
Используется библиотека MIDI для парсинга входящих сообщений и передачи нот в функцию управления скоростью двигателей.
Управление шаговыми двигателями
Драйверы A4988 имеют входы STEP и DIR. DIR фиксируется (например, LOW), а STEP пульсирует для выполнения шагов. Звук не зависит от направления вращения.
Главная задача: одновременный запуск нескольких двигателей
Функция delay() блокирует выполнение, поэтому используется micros() для точного тайминга пульсов. Скорости хранятся в массивах, индексы которых соответствуют номеру двигателя и MIDI-каналу. Это позволяет масштабировать количество двигателей простым изменением размера массива.
Расчёт скоростей (частот)
Экспериментально установлено: подача меандра 440 Гц на вход STEP даёт ноту Ля первой октавы (A440). Период в микросекундах для каждой MIDI-ноты предварительно вычисляется и сохраняется в массиве pitchValues. Нулевое значение означает паузу. Массив позволяет скорректировать частоты вблизи резонанса двигателя (у автора это F3 — ноты E3, F3, F#3 сдвинуты на октаву). Для настройки используется скетч Tune Stepper.ino.
Создание USB-MIDI-устройства
Для распознавания Arduino как MIDI-устройства прошивается AVR-чип (ATmega16U2/8U2) прошивкой mocoLUFA (поддерживает dual-boot: перемычка на ICSP переключает между USB-MIDI и USB-Serial, позволяя перепрошивать скетч без перепрошивки AVR).
Код и ресурсы
Полный код, инструкции по настройке и установке доступны в репозитории GitHub:
https://github.com/jzkmath/Arduino-MIDI-Stepper-Motor-Instrument
Печатные детали и корпуса
- Крепления для шаговых двигателей
- Декоративные «пальцы» на валах (эстетика)
Схемы подключения
Производственный процесс
- Янтарь: от древней смолы к научному сокровищу — история, свойства и современное использование
- Гильотина: история, конструкция и наследие
- Кремний: свойства, производство и рыночный обзор
- Укулеле: от португальских корней к современному мастерству
- Полное руководство по американской куриной отрасли: история, производство и контроль качества
- Компост: идеальное решение для обогащения почвы
- Желатин: от древнего белка к современным применениям — производство, использование и безопасность
- Эволюция и производство современных цилиндровых замков с пин-тумблерами
- Водка: от древней дистилляции к современному производству
- Железо: свойства, история и повседневные применения