亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Roland E-Drum Racks 的 DAW 按钮盒

组件和用品

Arduino MicroPro
× 1
按钮(常开)
× 1
3d 打印夹子和盒子
× 1

必要的工具和机器

3D 打印机(通用)

应用和在线服务

Arduino IDE

关于这个项目

在录制鼓音轨的同时操作我的笔记本电脑运行 DAW(在我的情况下是 Cubase)对我来说很不方便。所以我想有一个无干扰的方法来触发一些基本的命令,比如开始/停止/记录等,而不会掉下我的手杖。可用的商业解决方案过于昂贵或不实用,例如不可能安装到我的机架上。所以我想出了这个基于著名的 Arduino micro 的 DIY 按钮盒 .它可以安装在Roland机架使用的标准38mm管上以固定盒子。

如果您有 3D 打印机并想构建自己的遥控盒,请使用以下说明。

说明:

1. 打印出 2 个机架夹部件和盒体。 PLA 可以正常工作,但如果您想要更高的稳定性,请使用 PETG。通过 M4x40 螺钉作为 2 个部件之间的轴将夹具组合在一起,拧紧螺钉,但要确保它仍然可以轻松旋转。使用 M6 翼形螺钉和螺母作为拧紧器以牢固地固定在机架上。使用 2 个 M3x4 螺钉(或类似的)和用于将上夹具部分与盒子结合的螺母。

2. 对于前面板,您有多种选择。您可能希望根据您选择的按钮设计自己的变体。使用 stl(用于 3d 打印机)或 svg(用于 CNC)中的一个可用前面板模板来创建您自己的前面板。(我决定在我的 DIY CNC 机器上制作面板,因为我喜欢雕刻设计.. .但是 3D 打印面板可以正常工作。)

3. 前面板准备好后,插入按钮并焊接到正确的 Arduno 端口(见下面的分配)。我决定使用单独的 PCB 来获得更多空间,但这不是强制性的。如果这样做,请使用角落的 4 个孔固定 PCB。最后用 2 个 M3 螺钉关闭并固定前面板。

4. Arduino 编程:任何 Micro Pro 都可以,只要确保它是 Adruino Micro PRO(不是标准的 Arduino micro!),因为它有内置 USB。连接到任何 PC 或笔记本电脑的 Arduino Micro Pro 可以本地模拟 USB 键盘,因此可以触发任何按键,甚至功能键和数字块键等。 Micro pros 可从不同来源获得,因此您可能需要根据以下情况修改代码包含的库。就我而言,我决定使用数字端口 2-8,这些端口将首先初始化为内部上拉。连接的按钮(常开)会将引脚拉至 GND,代码检测到该引脚并触发编程操作(模拟按键)。

对于我的 DAW (Cubase),我决定使用以下设置:

Port Button Key Cubase 功能

------------------------------------------

2 M c 节拍器开/关

3 L [Num] 1 转到左定位器

4>> [Num] + 前进

5 <<[Num] - 向后

6 P SPACE 播放/停止

7 B b 开始

8 R [Num] * 记录

它可以在代码中轻松更改以匹配您的配置。以我附上的代码为例。

享受。

代码

  • 用于机架按钮盒的 Arduino Micro Pro 代码
用于机架按钮盒的 Arduino Micro Pro 代码C/C++
确保在您的 arduino IDE
/* ROLAND RACK BUTTON BOX 中设置 micro pro 注意:这是针对 Arduino Pro Micro 的!模拟键盘为 DAW 按下连接的 PC(此处:Steinberg Cubase)。可选:通过 USB(用于调试)和 LED(RX 和 TX LED)在微型板上使用模拟 UART COM 端口 KEYS:Cubase 配置:https://steinberg.help/cubase_elements_le_ai/v9/de/cubase_nuendo/topics/key_commands/ key_commands_default_c.html 分配:Arduino 微型端口 -> 打开按钮盒 -> 键盘上的模拟键 -> Cubase 端口中的功能切换键 Cubase 功能 -------------------- ---------------------- 2 M c 节拍器开 3 L [Num] 1 Goto Left Locator 4>> [Num] + Forward 5 <<[Num] - Backward 6 P SPACE Play/Stop 7 B b Begin 8 R [Num] * Record mac70 13.01.2021*/#define DEBUG_OUTPUT 0 // 当定义为 1 时,将生成额外的串行监视器输出用于调试#include // NUM-KEY 代码:https://forum.arduino.cc/index.php?topic=659117.0#define KEYPAD_1 225 #define KEYPAD_PLUS 223 #define KEYPAD_MINUS 222 #define KEYPAD_ASTERIX 221 /*// 以防万一...其他关键代码,如 Shift、Control 等:https://www.arduino.cc/reference/en/language/fu nctions/usb/keyboard/keyboardmodifiers/char ShiftKey =KEY_LEFT_SHIFT;char LeftKey =KEY_LEFT_ARROW;char RightKey =KEY_RIGHT_ARROW;*/int RXLED =17; // RX LED 具有定义的 Arduino pinvoid setup(){ // 按钮连接到以下数字输入引脚 //(按钮常开,激活时 -> 引脚将连接到 GND) pinMode(2, INPUT_PULLUP); // 管脚 2 输入内部电阻 pinMode(3, INPUT_PULLUP); // 引脚 3 是输入内部电阻 pinMode(4, INPUT_PULLUP); // 引脚 4 是输入内部电阻 pinMode(5, INPUT_PULLUP); // 引脚 5 为输入内部电阻 pinMode(6, INPUT_PULLUP); // 引脚 6 为输入内部电阻 pinMode(7, INPUT_PULLUP); // 管脚 7 输入内部电阻 pinMode(8, INPUT_PULLUP); // 引脚 8 为输入内部电阻 pinMode(RXLED, OUTPUT); // 将 RX LED 设置为输出 digitalWrite(RXLED, HIGH); // 设置 RX LED 关闭 Keyboard.begin(); // 启动键盘模拟 Serial.begin(9600); //这将启动串行监视器 Serial.println("");if (DEBUG_OUTPUT ==1) Serial.println("Button Box Serial Monitor"); }void loop(){ Keyboard.releaseAll();数字写入(RXLED,高); //设置RX LED关闭延迟(50); // 短延迟 // 处理按钮 if (digitalRead(2) ==0) // M { if (DEBUG_OUTPUT ==1) Serial.println("Button M"); // 打印到串行监视器 digitalWrite(RXLED, LOW); // LED 亮起以指示活动 Keyboard.press('c');延迟(5);键盘.releaseAll(); while(digitalRead(2) ==0); // 等待按钮被释放 } if (digitalRead(3) ==0) // L { if (DEBUG_OUTPUT ==1) Serial.println("Button L"); // 打印到串行监视器 digitalWrite(RXLED, LOW); // LED 亮起以指示活动 Keyboard.press(KEYPAD_1);延迟(5);键盘.releaseAll(); while(digitalRead(3) ==0); // 等待按钮被释放 } if (digitalRead(4) ==0) //>> { if (DEBUG_OUTPUT ==1) Serial.println("Button>>"); // 打印到串行监视器 digitalWrite(RXLED, LOW); // LED 亮起以指示活动 Keyboard.press(KEYPAD_PLUS); while(digitalRead(4) ==0); // 等待按钮被释放......来自PC的重复功能将重新触发此键!键盘.releaseAll(); } if (digitalRead(5) ==0) // <<{ if (DEBUG_OUTPUT ==1) Serial.println("Button <<"); // 打印到串行监视器 digitalWrite(RXLED, LOW); // LED 亮起以指示活动 Keyboard.press(KEYPAD_MINUS); while(digitalRead(5) ==0); // 等待按钮被释放......来自PC的重复功能将重新触发此键!键盘.releaseAll(); } if (digitalRead(6) ==0) // PLAY STOP { if (DEBUG_OUTPUT ==1) Serial.println("Button PLAY/STOP"); // 打印到串行监视器 digitalWrite(RXLED, LOW); // LED 亮起以指示活动 Keyboard.press(' ');延迟(5);键盘.releaseAll(); while(digitalRead(6) ==0); // 等待按钮被释放 } if (digitalRead(7) ==0) // BACK TO START { if (DEBUG_OUTPUT ==1) Serial.println("Button BACK"); // 打印到串行监视器 digitalWrite(RXLED, LOW); // LED 亮起以指示活动 Keyboard.press('b');延迟(5);键盘.releaseAll(); while(digitalRead(7) ==0); // 等待按钮被释放 } if (digitalRead(8) ==0) // REC { if (DEBUG_OUTPUT ==1) Serial.println("Button REC"); // 打印到串行监视器 digitalWrite(RXLED, LOW); // LED 亮起以指示活动 Keyboard.press(KEYPAD_ASTERIX);延迟(5);键盘.releaseAll(); while(digitalRead(8) ==0); // 等待按钮被释放 } }

定制零件和外壳

链接到我的 3D 文件
在 thingiverse.com 上的 thingiverseCAD 文件中

制造工艺

  1. 可制造性设计:指南
  2. 研华:用于智能制造的紧凑型 DIN-Rail 无风扇嵌入式箱式 PC
  3. EKF:适用于铁路、汽车、工业应用的坚固型壁挂式箱式平台
  4. SIGHT:For the Blind
  5. 运动控制的 AWS IoT 按钮
  6. Raspberry Pi CD Box Robot
  7. 注塑成型:医用移液器吸头的全新自动化方法
  8. 包装盒子以避免运输损坏的 5 个技巧
  9. Box Build Assembly 的布局和跟踪规则
  10. 外包 Box Build 组装过程的重要考虑因素
  11. Box Build 组装过程需要考虑的事项
  12. 为汽车制造商和供应商制造定制容器