五、ESP32使用PWM控制蜂鸣器

释放双眼,带上耳机,听听看~!

一.介绍

此教程的目的是解释如何使用其PWM功能控制ESP32的蜂鸣器,由于 ESP32的Arduino库尚未实现音调功能,因此只能使用PWM频率控制蜂鸣器这一种方法了。

二.元器件清单

  • ESP32开发板
  • 一个蜂鸣器
  • 面包板
  • 导线若干

三.电路图

三.代码

我们将首先声明控制ESP32的PWM功能所需的一些全局变量。我们将设置初始频率(虽然我们将在代码中稍后更改),PWM的通道和占空比规范的分辨率。

我们将使用通道0和8位的分辨率作为占空比。对于频率,我们将仅使用2000 Hz进行初始设置。

int freq = 2000;
int channel = 0;
int resolution = 8;

现在,在设置功能中,我们将使用ledcSetup功能设置PWM,该功能接收PWM通道,频率和占空比分辨率作为输入。

接下来,我们将通过调用ledcAttachPin函数将PWM通道连接到ESP32的实际GPIO 。这接收GPIO和信道作为输入。我将使用ESP32的GPIO 12。请注意,某些ESP32引脚不能直接映射到ESP32板的引脚。

我们还将打开启动串行通信,因此我们可以检查输出有关执行的一些信息。检查下面的完整设置功能。


void setup() {

Serial.begin(115200);
ledcSetup(channel, freq, resolution);
ledcAttachPin(12, channel);

}

现在我们将转向主回路功能,我们将通过改变频率和占空比配置来试验我们的蜂鸣器。

我们将改变的第一个值是占空比。所以在循环开始时我们将修复频率。虽然我们在setup函数中配置它,但我们希望它在主循环的每次迭代开始时重置为原始值。

因此,要再次设置频率,我们调用ledcWriteTone函数,将PWM通道和要设置的频率作为输入传递。我们将其设置为2000 Hz,作为初始配置。

ledcWriteTone(channel, 2000);

接下来,我们将执行一个for循环,从PWM开始为零,并在每次迭代时将其增加10。我们可以在0到255之间改变占空比,因为我们指定了8位的分辨率。

我们将在每次迭代中引入1秒的小延迟,因此我们可以听取更改它的效果。我们还将打印当前的占空比值。

要设置占空比,我们只需要调用ledcWrite函数,将通道和占空比值作为输入传递给设置:

 

接下来我们将改变频率。因此,我们将首先将占空比固定在125(约50%)。接下来,我们将执行类似于前一个的循环,但这次以0 Hz的频率开始并将其增加250到10000 Hz。我们还将再次将当前值打印到串行端口。

您可以查看完整的源代码,其中已包含前面提到的循环,其中频率通过调用ledcWriteTone函数递增。

/*******************************************************
  ESP32PWM控制蜂鸣器
  功能:实现蜂鸣器发出一定频率的声音
  引脚:D12(GPIO12)
  Designer: Code_Mouse
  Date:2018-8-27
*******************************************************/

int freq = 2000;
int channel = 0;
int resolution = 8;

void setup() {

  Serial.begin(115200);
  ledcSetup(channel, freq, resolution);
  ledcAttachPin(12, channel);

}

void loop() {

  ledcWriteTone(channel, 2000);

  for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle = dutyCycle + 10) {

    Serial.println(dutyCycle);

    ledcWrite(channel, dutyCycle);
    delay(1000);
  }

  ledcWrite(channel, 125);

  for (int freq = 255; freq < 10000; freq = freq + 250) {

    Serial.println(freq);

    ledcWriteTone(channel, freq);
    delay(1000);
  }

}

四.测试代码

要测试代码,只需使用Arduino IDE将其上传到ESP32。然后打开串口检查频率值和占空比的变化。

当ESP32连接到蜂鸣器时,您应首先通过改变占空比来改变蜂鸣器产生的音量。然后,当改变频率时,您会注意到产生的声音也会改变。

您可以在下面的视频中查看在ESP32板上运行此代码的结果;

 

给TA买糖
共{{data.count}}人
人已赞赏
ESP32ESP32-基础

四、ESP32PWM功能

2018-9-1 22:45:18

ESP32ESP32-基础

六、ESP32RGB-LED灯

2018-9-4 23:30:20

30 条回复 A文章作者 M管理员
  1. jghjhhj

    有帮助

  2.  静 

    来学习一下

  3. 园云Abb

    来学习搂

  4. yorkwei

    谢谢!学习了!

    • Luca

      加油

  5. 我爱小宇宙

    学习学习

  6. 中庸至道

    ?

  7. 无人念我

    666

  8. JOker

    666

  9. 々习惯々

    教程写的很棒,感谢分享

  10. S

    感谢分享

  11. Cumulus°

    学习

  12. 璀璨的星辰

    讲的透彻,解决了我一个问题。

  13. YolO

    很好

  14. 三川

    • Luca

      可以详细描述一下你的问题

  15. gxd

    简洁,清晰

  16. Xenoria

    学习

  17. 小明童学

    学习

  18. 左克俭

    学习了

  19. の演绎

    很全的教程

  20. 雨季

    nice

  21. 树先生4090

    看看

  22. 蕪的fáиɡ矢

    非常好

  23. 妳说

  24. gable

    有帮助

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索