电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>和弦Netduino音乐播放器开源分享

和弦Netduino音乐播放器开源分享

2022-11-08 | zip | 0.14 MB | 次下载 | 免费

资料介绍

描述

在这个项目中,您将使用 piezos 创建一个多通道音乐播放器。示例代码播放带有旋律和贝斯线的假日经典铃儿响叮当。

这个项目你只需要一个 Netduino 和两个压电,但我喜欢使用串联电阻来控制音量。您可以选择添加两个随着音乐点亮的 LED

所有硬件都由Netduino.Foundation中的驱动程序控制,所有音乐逻辑都在 GitHub 存储库中提供。您甚至可以通过编辑 SongBook 类来添加新歌曲。

第 1 步 - 组装电路

对于这个项目,连接你的面包板和 Netduino,如 Fritzing 图中所示:

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

  • 它带有一个巨大的外设驱动程序库,其中包含市场上最常见的传感器和外设的驱动程序。
  • 所有外围驱动程序都通过内置功能进行了简化,并由干净、现代的 API 公开。
  • 这个项目得到了一个不断发展的社区的支持,该社区不断致力于构建很酷的互联事物,并且总是乐于帮助新人并讨论新项目。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费