本小节将学习如何编程驱动M5GO发出声音,并制作一些简单的音乐。
我们每天会听到很多很多的声音,你是否思考过,为什么会有不同的声音?声音是怎么产生的?
物理小实验:我们可以把尺子放在桌边并将一小段伸出桌外,用手去拨动尺子,当尺子伸出桌面的部分较多时,拨动后尺子摆动缓慢且发出的声音低沉,当尺子伸出桌面较少时,拨动后尺子摆动快速且发出声音高亮。
实验分析:通过拨动尺子使其震动,验证了“声音是由震动产生的”这一物理原理,尺子震动的速度也就是我们所说的“频率”,当频率越高,则音调越高,一般人的听力范围为20H到20KH,大小(超声波)或小于(次声波)这个范围的声音,我们无法听到。
1.音调与频率
了解了声音的原理,我们开始使用Speaker块来驱动M5GO发出声音,点击程序块菜单中的Speaker选项,将“Speaker beep freq”块拖动到编程区域,并连接到“Setup”,点击块上的参数框,可以修改声音的“频率”、持续时间“,尝试修改不同的数字并运行程序,听听声音有什么不同吧。
在一些乐谱上,能够看到一些音符,像是”C-D-E-F-G-A-B“,事实上这些音符只是对不同频率声音的称呼。
在Speaker选项中,也提供了发出指定音调的块“Play tone”,将它添加到程序中,点击块上的三角按钮选择不同的音调,还可以设定它的节拍。
我们通过一个程序来测试频率与音调的关系。
使用“Play tone”制作一小段音乐。
当我们想要编写一段长的音乐时,其中会有很多重复的小节,通过“Repeat“块,可使其包括的程序块重复执行指定的次数。
下面的两个程序,执行的效果是一样的,不同的是,使用了”Repeat“的程序,变得更加精简且易懂。
在编程过程中,除了实现功能以外,还要有清晰的结构与可读性,这样才称得上是一个好程序。
使用按键控制与“Play tone”块,你可以与几个小伙伴一起,每个人分别代表一个或者多个音符,配合的,来一场大合奏。
ESP32的DAC函数可以实现真正的模拟输出。
ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。
本文学习如何使用ESP32开发板来进行多线程的开发。
ESP8266有三种工作模式,分别为:AP,STA,AP混合STA
ESP32有四个SPI外设,分别为SPI0、SPI1、HSPI和VSPI。