课程设计基于Arduino开发的音乐键盘源码+项目说明(直接使用).zip 【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【备注】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 电路设计 假设您使用Arduino Uno/Nano/Pro Mini等基于ATmega168p/328p的板子,或者最小系统: - D0-D7接入一个R-2R电阻网络DAC,进行音频输出(D7为最高位,D0为最低位)。后级可以根据需要选择是否接功放。 - D8-D13接矩阵键盘的输出端,A0-A3接矩阵键盘的输入端。键盘细节如图:![] - A4和A5为I2C预留。 采样的制作 每段采样为8位有符号整数数组,存在Flash中。 > TODO: 将下述流程自动化 1. 用Audition或其它工具将备好的采样转为16000Hz、8位、单声道的WAV文件(若使用Audition,请勿勾选保存元数据) 2. 定好循环区段的头尾后,将上述WAV文件另存两个副本,其中一个截到循环的开头为止,另外一个截到循环的结尾为止 3. 用二进制编辑器将3份WAV的文件头去除。关于WAV的文件头相关细节,请自行搜索 4. 记录下两个WAV副本的大小(多少字节)。之后它们的使命就结束了,可以删除了 5. 再写一小段程序,将剩下的那一个WAV,每个字节与0x80进行异或后,转为C语言数组格式进行输出,将输出内容贴到WaveTable.h中使用即可。 6. 步骤4中记录的WAV大小对应循环节起始地址偏移和结束地址偏移。在WaveTable.h中对应地进行修改即可 注意事项 - 由于AVR系列单片机性能孱弱,为最大程度提高性能,代码中多处直接对寄存器进行访问,因此代码只能适用于基于ATmega168p/328p单片机的板子。如果需要移植到其它单片机,请按对应的数据手册修改代码。
- 1
- 粉丝: 3823
- 资源: 4648
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助