项目简介
本项目是基于Arduino平台构建的自动风笛演奏系统,能依据接收到的MIDI消息(仅支持USB方式,代码易扩展)自动演奏风笛。该系统通过控制伺服电机模拟手指按孔和调节气流,达成风笛的自动演奏,适合风笛爱好者以及想结合传统乐器与现代技术的用户。
项目的主要特性和功能
- 自动演奏:根据接收到的MIDI信号控制伺服电机,实现风笛自动演奏。
- 音符处理:支持音符开启(Note On)和音符关闭(Note Off)功能,精准控制演奏。
- 颤音与音量调节:可管理颤音(modulation wheel)功能,实现软件控制的颤音效果;能调节空气流量阀门的伺服电机角度,控制音符力度和表现。
- 易于使用:提供清晰的安装和使用指南,方便用户操作。
安装使用步骤
假设用户已经下载了本项目的源码文件:
硬件准备
- 准备硬件:Arduino开发板(如Arduino Leonardo或Micro)、PCA9685模块、11个9g低价位伺服电机(含金属齿轮)、5V伺服电机电源(约10A)、直径1mm金属丝、5mm宽3mm厚的泡沫条、3mm金属杆、3D打印的手指和支架、3x35/40mm木螺丝(每个伺服手指支架2个)、3x15mm木螺丝(2个用于固定风笛支架)、约40x25cm且深度150cm的木板。
- 连接硬件:将Arduino开发板与PCA9685模块连接,连接好伺服电机、木板等组件。
软件配置
- 安装并配置Arduino开发环境。
- 将项目源代码上传至Arduino开发板。
- 配置MIDI接口,确保Arduino能接收MIDI信号。
使用说明
- 初始化仪器对象,在
setting.h
文件中设置手指位置等必要参数。手指伺服电机初始化为手指闭合位置(固定臂前将伺服电机初始化为90°,允许±45°的移动);气流伺服电机根据乐器和空气系统定义两个气流值(SERVO_VALVE_MIN_FLOW
和SERVO_VALVE_MAX_FLOW
)。 - 接收到有效MIDI音符时,通过伺服控制器将手指移动到相应位置,并设置气流强度。
- 可测试函数,自动播放一系列音符,检验系统功能。
- 可根据需求管理颤音功能,激活颤音效果。
- 更新伺服控制器的状态,处理手指开放状态的引脚输入,并根据颤音设置更新伺服控制器的气流强度。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】