资料介绍
描述
在考虑 H07R30 扬声器模块的演示项目时,我想到了构建一个简单的音乐游戏!该模块播放的音符很少,您必须通过附带的按钮重复曲调。如果您的回答正确或错误,演讲者会回复您!该游戏的编码和播放都很有趣,并向您展示了播放音乐曲调以及存储和播放嵌入式 WAVE 文件的示例。
细节
按钮焊接到模块端口(P1 到 P5)。单击按钮,触发播放特定的音符。游戏有两种模式,您可以通过按住连接到 P5 的按钮 2 秒来循环切换它们。每当请求模式更改时,模块都会闪烁其 LED 指示灯并读出模式名称:
- 播放模式:在此模式下,模块连续播放几个音符。停止播放后,您需要在 10 秒内按下正确的按钮以重现完全相同的音符(注意您不需要匹配音符时间)。如果成功,模块会闪烁其 LED 并回复“正确”,如果失败,模块会回复“错误”。之后游戏再次重复。
- 学习模式:在此模式下,您可以单击一个按钮来聆听其关联的音符并记住它。
游戏难度级别会增加您在会话中猜出的正确答案。难度级别由音符数量及其时间控制。
查看正在运行的游戏!
它是如何工作的?
该项目的最后一部分列出了创建和嵌入波形文件的分步指南。完成后,您就可以开始编写您的游戏了!项目文件附在代码部分。这是固件功能的高级描述。
FronEndTask 中超级循环之前的第一部分处理初始化。我们定义了所有按钮,将它们与点击事件和 P5 的按下 2 秒事件相关联,并播放启动芯片曲调!然后我们初始化超时定时器。
在超级循环中,我们验证模式是播放并且计时器已经过期,然后我们检查玩家是否输入了所有正确的音符。然后,我们播放适当的波形文件,LED 闪烁。如果答案成功,我们将难度级别增加一个。
然后我们初始化所有序列并生成新的挑战曲调。
挑战曲调由 1 到 5 的随机序列生成(与端口 P1 到 P5 上的按钮相匹配)。序列中的音符数量和音符之间的延迟受难度级别除以 5 的影响。每个音符也会在其生成后播放一次。
负责播放音符的函数只是播放对应于每个端口号的特定音符。请注意,匹配端口和音符完全取决于您。
最后我们有按钮事件的回调。单击回调播放与此按钮关联的任何音符并将此音符添加到播放器序列。一旦序列计数达到挑战笔记的计数,超时计时器将重置以在大约 2 秒内触发结果检查。
按钮按下回调在播放和训练模式之间循环。请注意,此事件是一个闭锁事件。因此,您需要使用resetButtonEvent() API 手动重置它,否则它会一直触发。
在模块中嵌入 WAVE 文件
我们可以使用模块 MCU Flash 存储器来存储一些短的 WAVE 声音文件。可用空间太小,因此您只能存储几秒钟,但是-对于简单的应用程序-它节省了连接外部存储(如 uSD 卡模块)的需要。
第 1 步 - 生成您的语音 WAVE 文件
第一步是为项目中需要的演讲或单词获取一些好的 .WAVE 文件。当然,您可以录制自己或其他人的声音,您可以在线搜索文件并下载。但是,为了满足您的具体需求,您可能需要文字转语音服务。网上有很多选择,从声音笨拙的免费网站到谷歌和 IBM 超现实、深度学习的文本到语音引擎。这里有一些不错的免费选项:
- https://www.text2speech.org/ 。直接下载 WAVE 文件。中等质量。
- IBM 的 Watson 文本转语音演示。请注意,您可以在演示中键入内容并免费下载 MP3 文件(无需注册)。只需使用任何 MP3 到 WAVE 转换器来转换文件。
我使用 IBM 的引擎为单词生成了四个 WAVE 文件:“学习”、“游戏”、“正确”和“错误”。您可以在本项目的文件部分下载它们。
第 2 步 - 将 WAVE 文件转换为嵌入式 C 代码
您可以使用这个不错的免费软件WAVToCode将 WAVE 文件转换为 C 文件。查看他们的帮助页面以获取有关使用该软件的说明。
我们模块中的 DAC 仅接受 8 位或 12 位样本,但该软件生成 8、16 和 24 位样本。将每个文件加载到软件中,为每个通道的位数选项选择“8 位”,然后单击“混合” 。然后使用鼠标按钮在波浪前后添加两个标记以删除空白部分。从菜单工具中,您可以收听混合波,然后从菜单文件中将其转换为 C文件。为输出选择无符号。从该转换器生成的原始 C 文件可在标有“orig_”的文件部分中找到。
注意:如果模块中波形音量偏低,需要将autoscale选项设置为Normalize 。
第 3 步 - 修改您的 wave C 文件以包含在模块项目中
您需要对 wave C 文件进行一些小的编辑,然后才能在扬声器模块项目中使用它们:
- 将unsigned char替换为 const uint8_t 。
-
删除
#define NUM_ELEMENTS
行并添加定义#include "wave.h"
。 -
用有意义的定义替换数组 ,例如,
data[NUM_ELEMENTS]
waveByteCode_Correct[WAVEBYTECODE_CORRECT_LENGTH]
第 4 步 - 克隆一个空的 H07R30 项目并添加 wave C 文件
在此处从其存储库中克隆模块项目。在文件夹User中,删除所有 C 文件(main.c 除外)并在其中添加 wave C 文件。然后打开uVision项目,将修改后的wave C文件添加到项目树中的User虚拟文件夹中。
第 5 步 - 将波浪定义添加到项目中
在 wave.h 中:
- 更新波形文件的数量。
- 用您的波形文件的波长定义替换波长定义。
- 将波形分辨率(每个样本的位数)定义替换为波形文件的定义(通常为 8)。
- 将波形速率(每秒样本)定义替换为您的波形文件(文件比特率 / 8)的定义。
- 导出 main.c 中定义的波形数组
在 main.c 中:
- 定义波阵列、它们的长度和分辨率阵列。
- 为每一波添加文字描述。
然后编译并确保 MCU 中有足够的 Flash 来存储你所有的波浪!当前带有 128KB 闪存的模块最多可以存储大约 42000 个样本(8 位/样本)。
注 1 :要找出程序的当前闪存大小,请在单击“全部编译”时将代码和 RO 数据显示的数字相加。您也可以双击项目树中的 Module 1 来查看内存映射。向下滚动到接近尾部,您会发现当前模块的总 RO 大小应该小于 128K。
注意 2 :您可以增加编译器的优化级别(如果它还不是 O1 或更高)以获得更多的闪存空间来存储您的 wave。从 uVision Options for Target >> C/C++ >> Optimization,选择 Level 1 (O1) 并重新编译,这应该可以为您节省大约 10-15k 的 Flash。有时如果接近 Flash 限制,程序将无法编译或加载,因此您必须提高优化级别。
第 6 步 - 最后使用嵌入的 wave!
使用以下 API 播放您的波浪:
PlayWave("play", 1, 0);
您可以在其中定义波形字符串名称、重复次数和重复之间的毫秒延迟。
- 头脑风暴音乐盒开源构建
- 策划数字游戏开源构建
- 西蒙小游戏开源构建
- 复古游戏时钟开源构建
- 可编程音乐盒的构建
- Arduino UNO构建音乐播放器
- 使用Arduino UNO构建游戏
- 使用Nano构建简单电路
- 构建您自己的游戏机套件
- 构建简单的游戏设备
- 如何构建简单的分压器
- 使用Netduino构建您自己的西蒙游戏
- 如何使用C语言实现一个比较简单的猜数游戏的程序免费下载
- 蓝牙芯片音乐模块电路原理图免费下载 138次下载
- 简单的音乐盒 8次下载
- 基于Arduino的音乐创作系统设计 962次阅读
- 如何构建一个简单而逼真的模型列车控制器电路 1146次阅读
- 如何构建一个简单的基于红外的车门遥控器 1145次阅读
- 如何构建一个简单的12V至19V升压转换器电路 2626次阅读
- 如何使用IC4093构建简单的板球啁啾声音发生器电路 1077次阅读
- 如何使用NTC和PTC热敏电阻构建一个简单的温度指示电路 2537次阅读
- 鸿蒙上开发“推箱子”小游戏 950次阅读
- 一个非常容易构建的简单金属探测器电路 2715次阅读
- 微雪电子micro:bit游戏手柄扩展板简介 1983次阅读
- 微雪电子双人街机游戏盒介绍 1806次阅读
- 基于树莓派打造的街机游戏盒 6719次阅读
- 构建区块链游戏的项目有哪一些 478次阅读
- 利用独创的深度学习模型,通过对大量音乐数据的学习及训练写出音乐作品 3700次阅读
- 基于Proteus单片机的音乐演奏实现系统 5317次阅读
- 7款富有创意的可穿戴音乐设备:音乐的享受 3512次阅读
下载排行
本周
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2联想E46L DAOLL6笔记本电脑图纸
- 1.10 MB | 2次下载 | 5 积分
- 3MATLAB绘图合集
- 27.12 MB | 2次下载 | 5 积分
- 4PR735,使用UCC28060的600W交错式PFC转换器
- 540.03KB | 1次下载 | 免费
- 5UCC38C42 30W同步降压转换器参考设计
- 428.07KB | 1次下载 | 免费
- 6DV2004S1/ES1/HS1快速充电开发系统
- 2.08MB | 1次下载 | 免费
- 7模态分解合集matlab代码
- 3.03 MB | 1次下载 | 2 积分
- 8美的电磁炉维修手册大全
- 1.56 MB | 1次下载 | 5 积分
本月
- 1使用单片机实现七人表决器的程序和仿真资料免费下载
- 2.96 MB | 44次下载 | 免费
- 2UC3842/3/4/5电源管理芯片中文手册
- 1.75 MB | 15次下载 | 免费
- 3DMT0660数字万用表产品说明书
- 0.70 MB | 13次下载 | 免费
- 4TPS54202H降压转换器评估模块用户指南
- 1.02MB | 8次下载 | 免费
- 5STM32F101x8/STM32F101xB手册
- 1.69 MB | 8次下载 | 1 积分
- 6HY12P65/HY12P66数字万用表芯片规格书
- 0.69 MB | 6次下载 | 免费
- 7华瑞昇CR216芯片数字万用表规格书附原理图及校正流程方法
- 0.74 MB | 6次下载 | 3 积分
- 8华瑞昇CR215芯片数字万用表原理图
- 0.21 MB | 5次下载 | 3 积分
总榜
- 1matlab软件下载入口
- 未知 | 935119次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183335次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73807次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65987次下载 | 10 积分
评论
查看更多