资料介绍
描述
在这个项目中,您将使用 piezos 创建一个多通道音乐播放器。示例代码播放带有旋律和贝斯线的假日经典铃儿响叮当。
这个项目你只需要一个 Netduino 和两个压电,但我喜欢使用串联电阻来控制音量。您可以选择添加两个随着音乐点亮的 LED。
所有硬件都由Netduino.Foundation中的驱动程序控制,所有音乐逻辑都在 GitHub 存储库中提供。您甚至可以通过编辑 SongBook 类来添加新歌曲。
第 1 步 - 组装电路
对于这个项目,连接你的面包板和 Netduino,如 Fritzing 图中所示:

我们将引脚 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次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论