資料介紹
描述
在這個(gè)項(xiàng)目中,您將使用 piezos 創(chuàng)建一個(gè)多通道音樂播放器。示例代碼播放帶有旋律和貝斯線的假日經(jīng)典鈴兒響叮當(dāng)。
這個(gè)項(xiàng)目你只需要一個(gè) Netduino 和兩個(gè)壓電,但我喜歡使用串聯(lián)電阻來控制音量。您可以選擇添加兩個(gè)隨著音樂點(diǎn)亮的 LED。
所有硬件都由Netduino.Foundation中的驅(qū)動(dòng)程序控制,所有音樂邏輯都在 GitHub 存儲(chǔ)庫中提供。您甚至可以通過編輯 SongBook 類來添加新歌曲。
第 1 步 - 組裝電路
對(duì)于這個(gè)項(xiàng)目,連接你的面包板和 Netduino,如 Fritzing 圖中所示:
?
我們將引腳 2 和 4 用于 LED,但它們可以由任何數(shù)字輸出引腳驅(qū)動(dòng)。
對(duì)于 Piezos,我們使用引腳 9 和 11,建議使用它們,因?yàn)樗鼈兌际菃⒂?PWM 的引腳并且它們不共享定時(shí)器。
第 2 步 - 下載源代碼
轉(zhuǎn)到https://github.com/adrianstevens/NetduinoSamples并克隆或下載 repo。具體來說,我們想要XMasPlayer文件夾中的代碼。
第 3 步 - 打開并探索項(xiàng)目
在 Windows 上的 Visual Studio 2015 或 macOS 上的 Visual Studio for Mac 中打開 XMasPlayer 項(xiàng)目。
首先打開App.cs,您將在此處配置硬件并播放歌曲。構(gòu)造函數(shù)調(diào)用InitializePeripherals方法,這是我們?cè)O(shè)置壓電和 LED 的方法。現(xiàn)在是確保代碼中定義的引腳與我們的物理連接匹配的好時(shí)機(jī)。
我們還創(chuàng)建了一個(gè)PushButton對(duì)象以連接到 Netduino 的板載按鈕。我們將使用它來開始播放我們的歌曲。
private void InitializePeripherals()
{
ledMelody = new Led(N.Pins.GPIO_PIN_D4);
ledBass = new Led(N.Pins.GPIO_PIN_D2);
speakerMelody = new PiezoSpeaker(N.PWMChannels.PWM_PIN_D9);
speakerBass = new PiezoSpeaker(N.PWMChannels.PWM_PIN_D11);
buttonPlay = new PushButton(N.Pins.ONBOARD_BTN, Netduino.Foundation.CircuitTerminationType.Floating);
buttonPlay.Clicked += OnButtonPlay;
}
接下來,查看SongBook文件夾中的代碼。該文件夾有兩個(gè)模型對(duì)象,一個(gè)用于音符,一個(gè)用于樂曲。我們的歌曲由一系列音符組成,一首為旋律,另一首為貝斯。如果你想要兩個(gè)以上的聲音,你可以擴(kuò)展這個(gè)類來添加額外的音符。
SongBook 類包含一組歌曲,我們只有添加鈴兒響鈴的代碼,但可以添加其他的。您會(huì)注意到歌曲被定義為字符串的集合,在音符和長(zhǎng)度之間交替。然后我們?cè)贜ote類中使用反射來加載正確的值。
最后,回到App類,看看PlaySong方法。這種方法循環(huán)播放所有旋律和低音音符,并將壓電設(shè)置為正確的頻率,并隨著音樂打開和關(guān)閉 LED。
private void PlaySong(Song song)
{
//smallest note length is a 32nd note
//change value to adjust tempo
var len32Note = 1500 / 32;
//index of the currently playing note
int melodyIndex = 0;
int bassIndex = 0;
//remaining steps for the currently playing note
int melodyRemaining = 0;
int bassRemaining = 0;
//loop until we've played every melody and bass note
while (melodyIndex < song.Melody.Length &&
bassIndex < song.Bass.Length)
{
if (melodyRemaining == 0 && melodyIndex < song.Melody.Length)
{
speakerMelody.StopTone();
ledMelody.IsOn = false;
//get the length of the next note
melodyRemaining = song.Melody[melodyIndex].Length;
//if the note isn't silence (i.e. don't play rests)
if (song.Melody[melodyIndex].Pitch != 0)
{
speakerMelody.PlayTone(song.Melody[melodyIndex].Pitch);
ledMelody.IsOn = true;
}
melodyIndex++;
}
melodyRemaining--;
if (bassRemaining == 0 && bassIndex < song.Bass.Length)
{
speakerBass.StopTone();
ledBass.IsOn = false;
bassRemaining = song.Bass[bassIndex].Length;
if (song.Bass[bassIndex].Pitch != 0)
{
speakerBass.PlayTone(song.Bass[bassIndex].Pitch);
ledBass.IsOn = true;
}
bassIndex++;
}
bassRemaining--;
Thread.Sleep(len32Note);
}
Thread.Sleep(len32Note * 32);
ledMelody.IsOn = false;
ledBass.IsOn = false;
speakerMelody.StopTone();
speakerBass.StopTone();
}
第 4 步 - 運(yùn)行項(xiàng)目
單擊 Visual Studio 中的運(yùn)行按鈕開始播放音樂!部署應(yīng)用程序后,按下 Netduino 的板載按鈕即可播放鈴兒響叮當(dāng)!
查看 Netduino.Foundation!
有很多方法可以擴(kuò)展這個(gè)項(xiàng)目。您可以添加更多歌曲,添加更多壓電揚(yáng)聲器,甚至添加 LED 顯示屏以顯示歌曲名稱或音符。這很容易使用Netduino.Foundation。
- 神秘博士TARDIS音樂播放器開源分享
- 基于Labview制作的音樂播放器源碼分享 70次下載
- 基于51單片機(jī)的音樂播放器的制作 105次下載
- 使用單片機(jī)實(shí)現(xiàn)音樂播放器的程序免費(fèi)下載 45次下載
- 懂你的音樂播放器C語言程序免費(fèi)下載 5次下載
- Labview中activeX編的音樂播放器 54次下載
- 基于Android音樂播放器的研究 7次下載
- 基于單片機(jī)音樂播放器 19次下載
- 音樂播放器 38次下載
- 基于單片機(jī)的音樂播放器 34次下載
- 基于51單片機(jī)的音樂播放器設(shè)計(jì) 256次下載
- Embedded的MP3音樂播放器的設(shè)計(jì)與實(shí)現(xiàn)
- 無線下載音樂播放器設(shè)計(jì)與實(shí)現(xiàn) 134次下載
- 基于CPLD的MIDI音樂播放器的設(shè)計(jì)
- 網(wǎng)頁音樂播放器代碼
- 數(shù)字播放器和解碼器 149次閱讀
- 車載播放器怎么選擇格式 1313次閱讀
- 在DAYU200上實(shí)現(xiàn)OpenHarmony視頻播放器 859次閱讀
- 嬰兒搖籃床播放器WT2003H音樂芯片方案 1272次閱讀
- 如何利用Arduino UNO和SD卡制作音樂播放器 7319次閱讀
- 音樂發(fā)燒友的首選播放器山靈M5s發(fā)布 2147次閱讀
- 新唐科技音樂合成系列介紹 1304次閱讀
- MP3播放器的基本原理及電路組成 1.9w次閱讀
- 和弦鈴聲設(shè)計(jì)及MIDI音樂文件播放流程介紹 3553次閱讀
- 基于AT89C51SND1C單片機(jī)的MP3播放器的設(shè)計(jì)方案 6464次閱讀
- 利用PWM音頻信號(hào)實(shí)現(xiàn)音樂播放器的應(yīng)用設(shè)計(jì) 3.5w次閱讀
- hifi和無損哪個(gè)音質(zhì)好_關(guān)于無損音樂的幾個(gè)常見誤區(qū) 7.4w次閱讀
- hifi播放器排行榜 3.4w次閱讀
- 新型嵌入式MP3播放器設(shè)計(jì)方案 4917次閱讀
- 基于嵌入式Linux流媒體播放器系統(tǒng)軟硬件解決方案 2740次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多