本小节将学习如何编程驱动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”块,你可以与几个小伙伴一起,每个人分别代表一个或者多个音符,配合的,来一场大合奏。
本文主要介绍在未联网(AP热点)情况下实现WEB交互界面的CSS和javascript库。
本文介绍如何使用Arduino-ESP32库中的API函数获取ESP32的芯片、RAM信息等,并提供了一个示例程序代码。
ESP32系列(包括ESP32-S3)搭载Xtensa双核处理器,默认情况下Arduino框架仅使用单核运行用户代码,通过多核编程,可以充分利用硬件资源来提升系统响应和性能。
ESP32 芯片有34个物理GPIO管脚。每个GPIO管脚都可用作一个通用IO,或连接一个内部的外设信号。IO_MUX ¹、RTC IO MUX 和GPIO交换矩阵用于将信号从外设传输至GPIO管脚。
ESP32Encoder库是一个利用ESP32脉冲计数器硬件外设实现高效旋转编码器读取的软件库。