DIY пульт управления DAW для стоек Roland E-Drum: Arduino Micro Pro
Компоненты и материалы
| Arduino Micro Pro | 1 |
| Тактильные кнопки (нормально открытые) | 7 |
| 3D-печатные зажим и корпус | 1 |
Инструменты
- 3D-принтер
Приложения
- Arduino IDE
О проекте
Неудобно управлять ноутбуком с DAW (у меня Cubase) во время записи ударных — не хочется бросать палочки. Готовые решения дорогие или не крепятся на стойку Roland. Сделал свой бокс на Arduino Micro Pro. Крепится на стандартные трубы 38 мм стоек Roland.
Инструкция
- Печать деталей: 2 части зажима + корпус. PLA нормально, PETG — прочнее. Зажим: болт M4×40 как ось между частями, затяните, но чтобы вращалось. М6 винт-бабочка с гайкой — зажим на стойке. 2× M3×4 болта+гайки — крепление верхней части зажима к коробу.
- Фронтальная панель: Несколько вариантов. Можно самому спроектировать под свои кнопки. Используйте шаблоны STL (для 3D-печати) или SVG (для ЧПУ). Я фрезеровал на своем ЧПУ — нравится гравировка, но 3D-печать тоже ок.
- Монтаж кнопок и пайка: Вставьте кнопки в панель, припаяйте к пинам Arduino (см. назначение ниже). Я использовал отдельную PCB для места — не обязательно. 4 угловых отверстия для фиксации PCB. Закройте панель 2× M3 винтами.
- Прошивка Arduino: Любой Micro Pro, но именно Arduino Micro PRO (не обычный Micro!) — у него встроенный USB и нативная эмуляция клавиатуры (HID). Может эмулировать любые клавиши, включая F-клавиши и нумпад. Библиотеки могут отличаться — поправьте код под свою плату. Я использовал пины 2-8 как INPUT_PULLUP. Кнопки замыкают на GND — код детектирует и эмулирует нажатие.
Моя раскладка для Cubase:
| Пин | Кнопка | Клавиша | Функция в Cubase |
|---|---|---|---|
| 2 | M | c | Метроном Вкл/Выкл |
| 3 | L | Num 1 | Переход к левому локатору |
| 4 | >> | Num + | Вперёд |
| 5 | << | Num - | Назад |
| 6 | P | SPACE | Play/Stop |
| 7 | B | b | Начало (Begin) |
| 8 | R | Num * | Record |
Легко меняется в коде. Используйте мой как пример.
Удачи!
Код
Arduino Micro Pro код для Rack Button Box (C/C++)
В Arduino IDE выберите плату Arduino Micro Pro.
/* ROLAND RACK BUTTON BOX
* Для Arduino Pro Micro! Эмулирует клавиатуру для DAW (Steinberg Cubase).
* Опционально: сериал для отладки, светодиоды RX/TX на плате.
* Коды Num-клавиш: https://forum.arduino.cc/index.php?topic=659117.0
*/
#define DEBUG_OUTPUT 0
#include <Keyboard.h>
#define KEYPAD_1 225
#define KEYPAD_PLUS 223
#define KEYPAD_MINUS 222
#define KEYPAD_ASTERIX 221
int RXLED = 17;
void setup() {
pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP); pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(RXLED, OUTPUT);
digitalWrite(RXLED, HIGH);
Keyboard.begin();
Serial.begin(9600);
if (DEBUG_OUTPUT == 1) Serial.println("Button Box Serial Monitor");
}
void loop() {
Keyboard.releaseAll();
digitalWrite(RXLED, HIGH);
delay(50);
if (digitalRead(2) == 0) { // M
if (DEBUG_OUTPUT) Serial.println("Button M");
digitalWrite(RXLED, LOW);
Keyboard.press('c'); delay(5); Keyboard.releaseAll();
while(digitalRead(2) == 0);
}
if (digitalRead(3) == 0) { // L
if (DEBUG_OUTPUT) Serial.println("Button L");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_1); delay(5); Keyboard.releaseAll();
while(digitalRead(3) == 0);
}
if (digitalRead(4) == 0) { // >>
if (DEBUG_OUTPUT) Serial.println("Button >>");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_PLUS);
while(digitalRead(4) == 0); // повтор при удержании
Keyboard.releaseAll();
}
if (digitalRead(5) == 0) { // <<
if (DEBUG_OUTPUT) Serial.println("Button <<");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_MINUS);
while(digitalRead(5) == 0);
Keyboard.releaseAll();
}
if (digitalRead(6) == 0) { // PLAY/STOP
if (DEBUG_OUTPUT) Serial.println("Button PLAY/STOP");
digitalWrite(RXLED, LOW);
Keyboard.press(' '); delay(5); Keyboard.releaseAll();
while(digitalRead(6) == 0);
}
if (digitalRead(7) == 0) { // BACK
if (DEBUG_OUTPUT) Serial.println("Button BACK");
digitalWrite(RXLED, LOW);
Keyboard.press('b'); delay(5); Keyboard.releaseAll();
while(digitalRead(7) == 0);
}
if (digitalRead(8) == 0) { // REC
if (DEBUG_OUTPUT) Serial.println("Button REC");
digitalWrite(RXLED, LOW);
Keyboard.press(KEYPAD_ASTERIX); delay(5); Keyboard.releaseAll();
while(digitalRead(8) == 0);
}
}
3D-модели
Файлы на Thingiverse: ссылка на профиль автора
Производственный процесс
- Advantech запустила ARK-1220: компактный безвентиляторный DIN-рельсовый ПК для умного производства
- EKF SRS-1201-BLUBRICK: Надежный настенный корпус для CompactPCI Serial CPU в железной дороге, авто и промышленности
- SIGHT: умные очки для слабовидящих на Raspberry Pi
- Создание кнопки AWS IoT с управлением движением на Raspberry Pi, PIR-датчике и MQTT
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- Новая автоматизация литья Hekuma улучшает производство медицинских пипетных кончиков
- 5 проверенных лайфхаков упаковки для предотвращения повреждений при перевозке
- Оптимизированные правила компоновки и трассировки для коробочной сборки
- Ключевые факторы при аутсорсинге услуг сборки Box Build
- Основные рекомендации для успешной сборки коробочных блоков (Box Build Assembly)