老式电子琴改装 MIDI 控制器:Arduino Mega 矩阵/总线键盘方案全指南
项目背景与安全提示
本项目将废弃电子琴/风琴的键盘(Manuals)与踏板转换为标准 MIDI 输出设备,核心仅用一块 Arduino Mega 2560。作者提供了矩阵键盘与总线键盘两套完整代码,兼容主流老琴的 6×11 矩阵或 61 键总线架构,并额外支持 3 路滑动电位器(表情踏板)。
1. 老琴内部可能残留高压电容,**务必断电拔插头操作**,并具备基本电子维修技能。
2. 改装将破坏原有音源切换电路,键盘不再驱动原音源。
3. 元件老化易导致接触不良,操作风险自负,作者不承担任何损坏责任。
硬件准备清单
| 元件 | 数量 | 备注 |
|---|---|---|
| Arduino Mega 2560 | 1 | 自带塑料安装板,木螺丝固定琴体内部 |
| DIN 5 针 MIDI 公头 | 1 | 面板开孔安装,串联 220Ω 电阻接 TX1 (Pin 18) |
| AWM 多芯线 / 杜邦线 | 若干 | 矩阵方案需 6 行 + 11/7 列;总线方案需 6 根 10 芯线 + 1 根单线 |
| 1N4148 二极管 | 每键 1 颗 | 矩阵:阴极朝向列线;总线:阴极朝向键盘开关 |
| 10K 线性滑动电位器 | 1~3 | 表情踏板用,接 A0~A2 |
| 40P 单排针座 / IDC 插座 | 1 | 建议用 IDC+公对公跳线,便于调试重接 |
| 焊接工具套装 | 1 | 烙铁、无铅锡丝、助焊剂、剥线钳、侧切钳、平嘴钳 |
改装步骤详解
步骤 1:拆解与判断键盘架构
- 打开琴体,定位键盘触点板。用万用表测量开关类型:常开(NO)或常闭(NC)。本例键盘为 NO,踏板为 NC,代码中已含 NC 取反逻辑。
- 确认矩阵尺寸:若为 8×8 需修改代码或改接为 6×11;总线架构则每键一根信号线汇聚到总线条。
- 规划 Arduino 安装位置、MIDI 插座开孔、供电引入(本例在内部小电源盒接 3 针电源插头)。
步骤 2:固定 Arduino 与走线预留
用附带塑料板 + M3 螺丝固定 Mega,预留各线缆长度(建议多留 20%),沿原有线槽整理扎带。
步骤 3:制作线缆
矩阵键盘
每组键盘/踏板剥两段 AWM 线:一段接 6 行,一段接 11 列(踏板 7 列)。列线端需预留二极管焊接位置。
总线键盘
将 61 键分为 6 组,每组 10 芯 AWM 线 + 第 61 键单独一根。每键非总线侧焊二极管(阴极朝键盘),再接对应芯线。
步骤 4:焊接排针/IDC 插座
将线缆另一端焊至 40P 排针或压接 IDC 插座,标记行/列/总线编号,防止接错。
步骤 5:连接键盘触点
- 矩阵:拆除原有行列连接主板的排线,行线保留(已成 6 跳 1 模式),列线剪断后接新二极管+列线。踏板面板拆卸后穿线至 Arduino 区域。
- 总线:每键焊二极管+芯线,总线条保持原样接地或悬空(视原电路)。
步骤 6:MIDI 输出电路
DIN 插座 5 脚接地,4 脚串联 220Ω 接 Mega TX1 (Pin 18),2 脚悬空(标准 MIDI OUT 接法)。
步骤 7:插拔连接与供电
排针插入 Mega 对应引脚(见原理图),USB 供电或接 5V 适配器/USB 充电头。
步骤 8:上传固件
根据键盘类型选择 Matrixed 或 Bussed 代码,Arduino IDE 设置波特率 31250,上传验证。
步骤 9:MIDI 测试
MIDI 线连接音频接口/USB-MIDI 适配器,用 MIDI-OX、Hairless MIDI Monitor 等软件监测 Note On/Off、Control Change (CC11 Expression) 是否正确。
表情踏板机械结构制作(可选)
作者设计了一套低成本 3D 打印/亚克力手工结构:
- L 型金属托架连接原踏板轴,M4 螺丝+锁紧螺母+垫圈构成枢轴。
- 1/4 英寸铝杆连接踏板托架与电位器滑块,PTFE 方块作导轨。
- 电位器固定于亚克力底板,底板通过家具铰链安装琴体底板,保证行程对应。
- 详细 BOM 与钻孔尺寸见原文“Detailed Instructions”章节。
代码核心逻辑解析
矩阵扫描(Matrixed 版)
- 三组键盘分别映射 MIDI 通道 1/2/3(Note On 0x90/0x91/0x92)。
- 行列扫描采用“拉低列、上拉读行”法:
pinMode(col, OUTPUT); digitalWrite(col, LOW);读取 6 路行输入,存入keysA/B/C[col][row]。
踏板 (Keyboard C) 为 NC,读取后逐位取反。 - 状态机对比
lastX[][],边沿触发发送 Note On/Off,velocity固定 100。 - 表情踏板读取 A0/A1,映射 0~127,变化量 ≥ 8 发送 CC11 (通道 6/7)。
总线扫描(Bussed 版)
- 四组键盘对应通道 1~4,共 61×4 键。
- 四根列线 (A9~A12) 轮流拉低,同步读取 61 路总线输入 (D2~D53, A0~A8)。
- 其余逻辑与矩阵版一致,额外增加第三路表情踏板 (A15 → 通道 8)。
- 注意:Pin 13 自带 LED 会干扰总线扫描,需物理拆除或压碎。
常见问题与避坑指南
- 磷青铜总线条接触不良
- 建议将同一手动的所有总线条并联焊锡,或改用 12V 驱动(本方案不支持)。
- 二极管方向反装
- 矩阵:阴极(色环端)接列线;总线:阴极接键盘开关。反装会导致全键按下或全不触发。
- MIDI 无输出
- 检查 TX1 引脚、220Ω 电阻、DIN 接线、波特率 31250、MIDI 监测软件通道设置。
- 踏板音高反向
- 修改代码中 Keyboard C 的
noteOn3/noteOff3逻辑,或硬件上调换常开/常闭接线。
原理图与固件下载
原文提供两张 Fritzing 原理图:
1. 6×11 Matrix + 踏板 + 电位器
2. Bussed 61×4 + 3 电位器
固件代码已完整内嵌,可直接复制编译。
结语
这是一个极具性价比的“变废为宝”项目,让沉睡的老琴键盘重获新生,成为 DAW 控制器、虚拟管风琴主键盘或现场表演利器。作者在 Hackster 论坛持续回复技术问题,建议有疑问者前往原帖交流。
制造工艺