資料介紹
描述
在這個項目中,您將使用 piezos 創建一個多通道音樂播放器。示例代碼播放帶有旋律和貝斯線的假日經典鈴兒響叮當。
這個項目你只需要一個 Netduino 和兩個壓電,但我喜歡使用串聯電阻來控制音量。您可以選擇添加兩個隨著音樂點亮的 LED。
所有硬件都由Netduino.Foundation中的驅動程序控制,所有音樂邏輯都在 GitHub 存儲庫中提供。您甚至可以通過編輯 SongBook 類來添加新歌曲。
第 1 步 - 組裝電路
對于這個項目,連接你的面包板和 Netduino,如 Fritzing 圖中所示:
![pYYBAGNom3WAELI1AAGCQYOGlnc996.png](https://file.elecfans.com/web2/M00/78/A3/pYYBAGNom3WAELI1AAGCQYOGlnc996.png)
?
我們將引腳 2 和 4 用于 LED,但它們可以由任何數字輸出引腳驅動。
對于 Piezos,我們使用引腳 9 和 11,建議使用它們,因為它們都是啟用 PWM 的引腳并且它們不共享定時器。
第 2 步 - 下載源代碼
轉到https://github.com/adrianstevens/NetduinoSamples并克隆或下載 repo。具體來說,我們想要XMasPlayer文件夾中的代碼。
第 3 步 - 打開并探索項目
在 Windows 上的 Visual Studio 2015 或 macOS 上的 Visual Studio for Mac 中打開 XMasPlayer 項目。
首先打開App.cs,您將在此處配置硬件并播放歌曲。構造函數調用InitializePeripherals方法,這是我們設置壓電和 LED 的方法。現在是確保代碼中定義的引腳與我們的物理連接匹配的好時機。
我們還創建了一個PushButton對象以連接到 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文件夾中的代碼。該文件夾有兩個模型對象,一個用于音符,一個用于樂曲。我們的歌曲由一系列音符組成,一首為旋律,另一首為貝斯。如果你想要兩個以上的聲音,你可以擴展這個類來添加額外的音符。
SongBook 類包含一組歌曲,我們只有添加鈴兒響鈴的代碼,但可以添加其他的。您會注意到歌曲被定義為字符串的集合,在音符和長度之間交替。然后我們在Note類中使用反射來加載正確的值。
最后,回到App類,看看PlaySong方法。這種方法循環播放所有旋律和低音音符,并將壓電設置為正確的頻率,并隨著音樂打開和關閉 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 步 - 運行項目
單擊 Visual Studio 中的運行按鈕開始播放音樂!部署應用程序后,按下 Netduino 的板載按鈕即可播放鈴兒響叮當!
查看 Netduino.Foundation!
有很多方法可以擴展這個項目。您可以添加更多歌曲,添加更多壓電揚聲器,甚至添加 LED 顯示屏以顯示歌曲名稱或音符。這很容易使用Netduino.Foundation。
- 神秘博士TARDIS音樂播放器開源分享
- 基于Labview制作的音樂播放器源碼分享 75次下載
- 基于51單片機的音樂播放器的制作 113次下載
- 使用單片機實現音樂播放器的程序免費下載 45次下載
- 懂你的音樂播放器C語言程序免費下載 5次下載
- Labview中activeX編的音樂播放器 54次下載
- 基于Android音樂播放器的研究 7次下載
- 基于單片機音樂播放器 19次下載
- 音樂播放器 38次下載
- 基于單片機的音樂播放器 35次下載
- 基于51單片機的音樂播放器設計 259次下載
- Embedded的MP3音樂播放器的設計與實現
- 無線下載音樂播放器設計與實現 134次下載
- 基于CPLD的MIDI音樂播放器的設計
- 網頁音樂播放器代碼
- 變速播放器1和2的區別 236次閱讀
- 為什么好的播放器還要配解碼器 1528次閱讀
- 數字播放器和解碼器 1231次閱讀
- 車載播放器怎么選擇格式 1882次閱讀
- 嬰兒搖籃床播放器WT2003H音樂芯片方案 1443次閱讀
- 如何利用Arduino UNO和SD卡制作音樂播放器 8107次閱讀
- 音樂發燒友的首選播放器山靈M5s發布 2280次閱讀
- 新唐科技音樂合成系列介紹 1446次閱讀
- MP3播放器的基本原理及電路組成 2w次閱讀
- 和弦鈴聲設計及MIDI音樂文件播放流程介紹 3725次閱讀
- 基于AT89C51SND1C單片機的MP3播放器的設計方案 6712次閱讀
- 利用PWM音頻信號實現音樂播放器的應用設計 3.6w次閱讀
- hifi和無損哪個音質好_關于無損音樂的幾個常見誤區 7.5w次閱讀
- hifi播放器排行榜 3.5w次閱讀
- 基于嵌入式Linux流媒體播放器系統軟硬件解決方案 2838次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機控制開發板用戶指南
- 5.78MB | 8次下載 | 免費
- 5STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現
- 2.94MB | 4次下載 | 免費
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費
- 8零死角玩轉STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機智能手環心率計步器體溫顯示設計
- 0.10 MB | 137次下載 | 免費
- 4A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費
- 7PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論