資料介紹
描述
在考慮 H07R30 揚聲器模塊的演示項目時,我想到了構(gòu)建一個簡單的音樂游戲!該模塊播放的音符很少,您必須通過附帶的按鈕重復(fù)曲調(diào)。如果您的回答正確或錯誤,演講者會回復(fù)您!該游戲的編碼和播放都很有趣,并向您展示了播放音樂曲調(diào)以及存儲和播放嵌入式 WAVE 文件的示例。
細(xì)節(jié)
按鈕焊接到模塊端口(P1 到 P5)。單擊按鈕,觸發(fā)播放特定的音符。游戲有兩種模式,您可以通過按住連接到 P5 的按鈕 2 秒來循環(huán)切換它們。每當(dāng)請求模式更改時,模塊都會閃爍其 LED 指示燈并讀出模式名稱:
- 播放模式:在此模式下,模塊連續(xù)播放幾個音符。停止播放后,您需要在 10 秒內(nèi)按下正確的按鈕以重現(xiàn)完全相同的音符(注意您不需要匹配音符時間)。如果成功,模塊會閃爍其 LED 并回復(fù)“正確”,如果失敗,模塊會回復(fù)“錯誤”。之后游戲再次重復(fù)。
- 學(xué)習(xí)模式:在此模式下,您可以單擊一個按鈕來聆聽其關(guān)聯(lián)的音符并記住它。
游戲難度級別會增加您在會話中猜出的正確答案。難度級別由音符數(shù)量及其時間控制。
查看正在運行的游戲!
它是如何工作的?
該項目的最后一部分列出了創(chuàng)建和嵌入波形文件的分步指南。完成后,您就可以開始編寫您的游戲了!項目文件附在代碼部分。這是固件功能的高級描述。
FronEndTask 中超級循環(huán)之前的第一部分處理初始化。我們定義了所有按鈕,將它們與點擊事件和 P5 的按下 2 秒事件相關(guān)聯(lián),并播放啟動芯片曲調(diào)!然后我們初始化超時定時器。
?

?
在超級循環(huán)中,我們驗證模式是播放并且計時器已經(jīng)過期,然后我們檢查玩家是否輸入了所有正確的音符。然后,我們播放適當(dāng)?shù)牟ㄐ挝募?,LED 閃爍。如果答案成功,我們將難度級別增加一個。
?

?
然后我們初始化所有序列并生成新的挑戰(zhàn)曲調(diào)。

?
挑戰(zhàn)曲調(diào)由 1 到 5 的隨機(jī)序列生成(與端口 P1 到 P5 上的按鈕相匹配)。序列中的音符數(shù)量和音符之間的延遲受難度級別除以 5 的影響。每個音符也會在其生成后播放一次。
?

?
負(fù)責(zé)播放音符的函數(shù)只是播放對應(yīng)于每個端口號的特定音符。請注意,匹配端口和音符完全取決于您。
?

?
最后我們有按鈕事件的回調(diào)。單擊回調(diào)播放與此按鈕關(guān)聯(lián)的任何音符并將此音符添加到播放器序列。一旦序列計數(shù)達(dá)到挑戰(zhàn)筆記的計數(shù),超時計時器將重置以在大約 2 秒內(nèi)觸發(fā)結(jié)果檢查。
按鈕按下回調(diào)在播放和訓(xùn)練模式之間循環(huán)。請注意,此事件是一個閉鎖事件。因此,您需要使用resetButtonEvent() API 手動重置它,否則它會一直觸發(fā)。

?
在模塊中嵌入 WAVE 文件
我們可以使用模塊 MCU Flash 存儲器來存儲一些短的 WAVE 聲音文件。可用空間太小,因此您只能存儲幾秒鐘,但是-對于簡單的應(yīng)用程序-它節(jié)省了連接外部存儲(如 uSD 卡模塊)的需要。
第 1 步 - 生成您的語音 WAVE 文件
第一步是為項目中需要的演講或單詞獲取一些好的 .WAVE 文件。當(dāng)然,您可以錄制自己或其他人的聲音,您可以在線搜索文件并下載。但是,為了滿足您的具體需求,您可能需要文字轉(zhuǎn)語音服務(wù)。網(wǎng)上有很多選擇,從聲音笨拙的免費網(wǎng)站到谷歌和 IBM 超現(xiàn)實、深度學(xué)習(xí)的文本到語音引擎。這里有一些不錯的免費選項:
- https://www.text2speech.org/ 。直接下載 WAVE 文件。中等質(zhì)量。
- IBM 的 Watson 文本轉(zhuǎn)語音演示。請注意,您可以在演示中鍵入內(nèi)容并免費下載 MP3 文件(無需注冊)。只需使用任何 MP3 到 WAVE 轉(zhuǎn)換器來轉(zhuǎn)換文件。
我使用 IBM 的引擎為單詞生成了四個 WAVE 文件:“學(xué)習(xí)”、“游戲”、“正確”和“錯誤”。您可以在本項目的文件部分下載它們。
第 2 步 - 將 WAVE 文件轉(zhuǎn)換為嵌入式 C 代碼
您可以使用這個不錯的免費軟件WAVToCode將 WAVE 文件轉(zhuǎn)換為 C 文件。查看他們的幫助頁面以獲取有關(guān)使用該軟件的說明。
我們模塊中的 DAC 僅接受 8 位或 12 位樣本,但該軟件生成 8、16 和 24 位樣本。將每個文件加載到軟件中,為每個通道的位數(shù)選項選擇“8 位”,然后單擊“混合” 。然后使用鼠標(biāo)按鈕在波浪前后添加兩個標(biāo)記以刪除空白部分。從菜單工具中,您可以收聽混合波,然后從菜單文件中將其轉(zhuǎn)換為 C文件。為輸出選擇無符號。從該轉(zhuǎn)換器生成的原始 C 文件可在標(biāo)有“orig_”的文件部分中找到。
?

?
注意:如果模塊中波形音量偏低,需要將autoscale選項設(shè)置為Normalize 。
第 3 步 - 修改您的 wave C 文件以包含在模塊項目中
您需要對 wave C 文件進(jìn)行一些小的編輯,然后才能在揚聲器模塊項目中使用它們:
- 將unsigned char替換為?const uint8_t 。
-
刪除?
#define NUM_ELEMENTS行并添加定義?#include "wave.h"。 -
用有意義的定義替換數(shù)組?,例如,
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 中:
- 更新波形文件的數(shù)量。
- 用您的波形文件的波長定義替換波長定義。
- 將波形分辨率(每個樣本的位數(shù))定義替換為波形文件的定義(通常為 8)。
- 將波形速率(每秒樣本)定義替換為您的波形文件(文件比特率 / 8)的定義。
- 導(dǎo)出 main.c 中定義的波形數(shù)組
在 main.c 中:
- 定義波陣列、它們的長度和分辨率陣列。
- 為每一波添加文字描述。
然后編譯并確保 MCU 中有足夠的 Flash 來存儲你所有的波浪!當(dāng)前帶有 128KB 閃存的模塊最多可以存儲大約 42000 個樣本(8 位/樣本)。
注 1 :要找出程序的當(dāng)前閃存大小,請在單擊“全部編譯”時將代碼和 RO 數(shù)據(jù)顯示的數(shù)字相加。您也可以雙擊項目樹中的 Module 1 來查看內(nèi)存映射。向下滾動到接近尾部,您會發(fā)現(xiàn)當(dāng)前模塊的總 RO 大小應(yīng)該小于 128K。
注意 2 :您可以增加編譯器的優(yōu)化級別(如果它還不是 O1 或更高)以獲得更多的閃存空間來存儲您的 wave。從 uVision Options for Target >> C/C++ >> Optimization,選擇 Level 1 (O1) 并重新編譯,這應(yīng)該可以為您節(jié)省大約 10-15k 的 Flash。有時如果接近 Flash 限制,程序?qū)o法編譯或加載,因此您必須提高優(yōu)化級別。
第 6 步 - 最后使用嵌入的 wave!
使用以下 API 播放您的波浪:
PlayWave("play", 1, 0);
您可以在其中定義波形字符串名稱、重復(fù)次數(shù)和重復(fù)之間的毫秒延遲。
?
- 頭腦風(fēng)暴音樂盒開源構(gòu)建
- 策劃數(shù)字游戲開源構(gòu)建
- 西蒙小游戲開源構(gòu)建
- 復(fù)古游戲時鐘開源構(gòu)建
- 可編程音樂盒的構(gòu)建
- Arduino UNO構(gòu)建音樂播放器
- 使用Arduino UNO構(gòu)建游戲
- 使用Nano構(gòu)建簡單電路
- 構(gòu)建您自己的游戲機(jī)套件
- 構(gòu)建簡單的游戲設(shè)備
- 使用Netduino構(gòu)建您自己的西蒙游戲
- 簡單的arduino游戲機(jī)設(shè)計案例
- STM8 開發(fā)故事--之蜂鳴器 BEEP設(shè)計簡單的音樂(三)
- 如何使用C語言實現(xiàn)一個比較簡單的猜數(shù)游戲的程序免費下載
- 簡單的音樂盒 9次下載
- 音樂盒芯片方案——N9305音樂芯片 700次閱讀
- 基于Arduino的音樂創(chuàng)作系統(tǒng)設(shè)計 2.2k次閱讀
- 如何構(gòu)建一個簡單而逼真的模型列車控制器電路 2.5k次閱讀
- 如何構(gòu)建一個簡單的基于紅外的車門遙控器 2.4k次閱讀
- 如何構(gòu)建一個簡單的12V至19V升壓轉(zhuǎn)換器電路 5.3k次閱讀
- 如何使用IC4093構(gòu)建簡單的板球啁啾聲音發(fā)生器電路 7.1k次閱讀
- 如何使用NTC和PTC熱敏電阻構(gòu)建一個簡單的溫度指示電路 4.2k次閱讀
- 鴻蒙上開發(fā)“推箱子”小游戲 2k次閱讀
- 一個非常容易構(gòu)建的簡單金屬探測器電路 4k次閱讀
- 微雪電子micro:bit游戲手柄擴(kuò)展板簡介 2.9k次閱讀
- 微雪電子雙人街機(jī)游戲盒介紹 2.6k次閱讀
- 基于樹莓派打造的街機(jī)游戲盒 7.6k次閱讀
- 構(gòu)建區(qū)塊鏈游戲的項目有哪一些 764次閱讀
- 利用獨創(chuàng)的深度學(xué)習(xí)模型,通過對大量音樂數(shù)據(jù)的學(xué)習(xí)及訓(xùn)練寫出音樂作品 4.4k次閱讀
- 基于Proteus單片機(jī)的音樂演奏實現(xiàn)系統(tǒng) 6.2k次閱讀
下載排行
本周
- 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費
- 2冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊
- 2.33 MB | 次下載 | 免費
- 4MDD品牌三極管S9012數(shù)據(jù)手冊
- 2.62 MB | 次下載 | 免費
- 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊
- 2.50 MB | 次下載 | 免費
- 8MS1000TA 超聲波測量模擬前端芯片技術(shù)手冊
- 0.60 MB | 次下載 | 免費
本月
- 1愛華AIWA HS-J202維修手冊
- 3.34 MB | 37次下載 | 免費
- 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊
- 1.63 MB | 23次下載 | 免費
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測距通信定位模塊規(guī)格書
- 838.47 KB | 5次下載 | 免費
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊
- 1.81 MB | 1次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論