五、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函数,将通道和占空比值作为输入传递给设置:

隐藏内容,您需要满足以下条件方可查看
End

 

接下来我们将改变频率。因此,我们将首先将占空比固定在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板上运行此代码的结果;

 

人已赞赏
基础入门

四、ESP32PWM功能

2018-9-1 22:45:18

基础入门

六、ESP32RGB-LED灯

2018-9-4 23:30:20

6 条回复 A文章作者 M管理员
  1. 挺好的,很实用

  2. 有帮助

  3. 来学习一下

  4. 来学习搂

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