littlebot
Published on 2025-04-09 / 0 Visits
0

【源码】基于Arduino的自动风笛演奏系统

项目简介

本项目是基于Arduino平台构建的自动风笛演奏系统,能依据接收到的MIDI消息(仅支持USB方式,代码易扩展)自动演奏风笛。该系统通过控制伺服电机模拟手指按孔和调节气流,达成风笛的自动演奏,适合风笛爱好者以及想结合传统乐器与现代技术的用户。

项目的主要特性和功能

  1. 自动演奏:根据接收到的MIDI信号控制伺服电机,实现风笛自动演奏。
  2. 音符处理:支持音符开启(Note On)和音符关闭(Note Off)功能,精准控制演奏。
  3. 颤音与音量调节:可管理颤音(modulation wheel)功能,实现软件控制的颤音效果;能调节空气流量阀门的伺服电机角度,控制音符力度和表现。
  4. 易于使用:提供清晰的安装和使用指南,方便用户操作。

安装使用步骤

假设用户已经下载了本项目的源码文件:

硬件准备

  1. 准备硬件:Arduino开发板(如Arduino Leonardo或Micro)、PCA9685模块、11个9g低价位伺服电机(含金属齿轮)、5V伺服电机电源(约10A)、直径1mm金属丝、5mm宽3mm厚的泡沫条、3mm金属杆、3D打印的手指和支架、3x35/40mm木螺丝(每个伺服手指支架2个)、3x15mm木螺丝(2个用于固定风笛支架)、约40x25cm且深度150cm的木板。
  2. 连接硬件:将Arduino开发板与PCA9685模块连接,连接好伺服电机、木板等组件。

软件配置

  1. 安装并配置Arduino开发环境。
  2. 将项目源代码上传至Arduino开发板。
  3. 配置MIDI接口,确保Arduino能接收MIDI信号。

使用说明

  1. 初始化仪器对象,在setting.h文件中设置手指位置等必要参数。手指伺服电机初始化为手指闭合位置(固定臂前将伺服电机初始化为90°,允许±45°的移动);气流伺服电机根据乐器和空气系统定义两个气流值(SERVO_VALVE_MIN_FLOWSERVO_VALVE_MAX_FLOW)。
  2. 接收到有效MIDI音符时,通过伺服控制器将手指移动到相应位置,并设置气流强度。
  3. 可测试函数,自动播放一系列音符,检验系统功能。
  4. 可根据需求管理颤音功能,激活颤音效果。
  5. 更新伺服控制器的状态,处理手指开放状态的引脚输入,并根据颤音设置更新伺服控制器的气流强度。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】