为 Roland 电子鼓架定制的 DAW 控制盒
组件与材料
| 组件 | 数量 |
|---|---|
| Arduino Micro Pro (内置 USB,非普通 Micro) | 1 |
| 轻触开关 (常开) | 7 |
| 3D 打印夹具与盒体 (PLA/PETG) | 1 套 |
所需工具
- 3D 打印机
应用与服务
- Arduino IDE
项目动机
录制鼓轨时操作笔记本电脑控制 DAW (Cubase) 很不方便,想要一个不放下鼓棒就能触发 开始/停止/录音/节拍器/定位 等常用功能的按钮盒。商业方案太贵或无法安装在 Roland 鼓架的 38mm 圆管上,于是自制。
制作步骤
- 3D 打印:打印两个夹具半件 (用 M4x40 螺丝做枢轴,M6 翼螺丝锁紧),盒体上部 (用 2 个 M3x4 螺丝连接夹具)。材料 PLA 即可,追求强度用 PETG。
- 面板制作:提供 STL (3D 打印) 和 SVG (CNC 雕刻) 模板,按钮布局可自定。作者用 DIY CNC 雕刻面板,效果更佳。
- 按钮安装与接线:将轻触开关装入面板,按下表焊接到 Arduino 对应引脚。可用小块万用板扩展焊盘,用盒体角落 4 个螺丝孔固定 PCB。最后用 2 个 M3 螺丝锁紧面板。
- 编程 Arduino Micro Pro:Micro Pro 原生支持 USB HID 键盘模拟,可发送任意按键 (含功能键、小键盘键)。代码将 D2-D8 配置为内部上拉输入,按钮按下拉低电平触发模拟按键。作者为 Cubase 映射如下:
| 引脚 | 按钮标识 | 模拟按键 | Cubase 功能 |
|---|---|---|---|
| 2 | M | c | 节拍器开关 |
| 3 | L | 小键盘 1 | 跳转左标标记 |
| 4 | >> | 小键盘 + | 前进 |
| 5 | << | 小键盘 - | 后退 |
| 6 | P | 空格 | 播放/停止 |
| 7 | B | b | 回到开头 |
| 8 | R | 小键盘 * | 录音 |
可在代码中轻松修改映射适配其他 DAW。
Arduino Micro Pro 代码
/* ROLAND RACK BUTTON BOX for Arduino Pro Micro
Emulates USB keyboard for DAW (Steinberg Cubase) */
#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) Serial.println("Button Box Serial Monitor");
}
void loop() {
Keyboard.releaseAll();
digitalWrite(RXLED, HIGH);
delay(50);
if (digitalRead(2) == 0) { 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) { 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) { 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) { 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) { if(DEBUG_OUTPUT) Serial.println("Button REC"); digitalWrite(RXLED,LOW); Keyboard.press(KEYPAD_ASTERIX); delay(5); Keyboard.releaseAll(); while(digitalRead(8)==0); }
}
3D 模型文件
Thingiverse 下载:链接见项目页面
制造工艺
- 工业电子设备寄修防摔包装 5 大绝招:双层箱/3 英寸缓冲/防静电/全封胶/拒贴易碎标
- 可制造性设计 (DFM) 实战指南:工程师与设计师的必修课
- SIGHT:助盲智能眼镜 — 树莓派 + TensorFlow + Android Things
- 树莓派 + PIR 传感器 + MQTT 打造 AWS IoT 运动触发按钮
- DIY仿Wall-E树莓派CD盒机器人
- Hekuma 新一代医疗吸头自动化系统 Hekutip 将亮相 K 2019
- 整机装配布局布线优化指南
- 外包盒装组装服务的关键考量因素全清单
- 盒式组装(Box Build)成功交付的六大核心准则
- 定制集装箱:为汽车制造商与供应商量身打造的物流方案
- Advantech 发布 ARK-1220:面向智能制造的紧凑无风扇 DIN 导轨工控机
- EKF SRS-1201-BLUBRICK:面向铁路、汽车和工业环境的坚固壁挂箱,容纳 CompactPCI Serial CPU