五、ESP32使用PWM控制蜂鸣器

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

一.介绍

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

二.元器件清单

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

三.电路图

五、ESP32使用PWM控制蜂鸣器

三.代码

我们将首先声明控制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函数递增。

[scu name=”arduino-ide-post” platform=”esp32:esp32:esp32″]

/*******************************************************
  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);
  }

}

[/scu]

四.测试代码

要测试代码,只需使用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

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

    有帮助

  2.  静 

    来学习一下

  3. 园云Abb

    来学习搂

  4. yorkwei

    谢谢!学习了!

    • Luca

      加油

  5. 无人念我

    666

  6. JOker

    666

  7. 々习惯々

    教程写的很棒,感谢分享

  8. S

    感谢分享

  9. Cumulus°

    学习

  10. 璀璨的星辰

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

  11. YolO

    很好

  12. 三川

    • Luca

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

  13. gxd

    简洁,清晰

  14. Xenoria

    学习

  15. 小明童学

    学习

  16. 左克俭

    学习了

  17. の演绎

    很全的教程

  18. 雨季

    nice

  19. 蕪的fáиɡ矢

    非常好

  20. 妳说

  21. gable

    有帮助

  22. 恧℡

  23. 细致

  24. BigSmart

    666

  25. 邓柯达

    66

  26. 张政

    不错

  27. SNKjxn

    nice!

  28. 嘿嘿

    哈哈好教程

  29. 清凉小年

    感谢分享!

  30. 碎憶書

    厉害了

  31. 哈"❤

    有用

  32. cosmosii

    挺好的,很实用

  33. starlight

    学习

  34. 小何DIY

    很棒!

  35. atstudy009

    BUCUO

  36. 阿甘

    学习

  37. Lucky

    1

  38. 小明同学

    不错

  39. 余伟小相如

    不错

  40. 学习

  41. 寐

    过来学习一下

  42.  7191

    EN

  43. 遇卿

    学习

  44. EqualYu🌸

    感谢作者

  45. 煎饼是饭

    学习

  46. 羽梦清晨

    好用

  47. KEVIN7817

    😁 学习了

  48. zny

    学习学习

  49. bt22

    qwq

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