ESP8266基础开发(二)-- 控制蜂鸣器

注:对于ESP8266和ESP32开源技术感兴趣的可以加群,我们一起探索交流学习,群号:551636355。群名:ESP32开源技术交流群。

本文的目的是解释如何使用ESP8266控制无源蜂鸣器模块。


硬件

在本教程中,我们假设使用无源蜂鸣器,集成在电路板中,允许我们使用微控制器的IO引脚直接控制它。如图1所示。

YL-44无源蜂鸣器模块

图1 - 无源蜂鸣器模块。

如图所示,有一个引脚为器件供电,另一个引脚实际控制它。

重要提示:不要使用晶体管或任何其他方法将ESP8266的数字引脚直接连接到蜂鸣器,以便为器件提供电流。ESP8266的GPIO只能提供12 mA ,蜂鸣器会消耗更多,这可能会损坏微控制器。

因此,我们将ESP8266连接到蜂鸣器模块,如图2所示。如果您使用的是NodeMCU,请注意电路板上指示的引脚编号与ESP8266中的引脚不对应。

ESP8266蜂鸣器图

图2 - ESP8266和蜂鸣器模块之间的连接图。

由于我们使用无源蜂鸣器,我们需要生成方波来控制声音。IO引脚产生的方波频率将是声音的频率。因此,控制蜂鸣器会稍微复杂一些,因为它不会像LED那样开/关,但我们会有更多的自由,因为我们将能够改变频率。

 

软件

本教程的代码非常简单,因为我们将使用tone函数,它为我们执行大部分工作。请确保您使用的是最新版本的ESP8266库,以确保提供音调功能。

此函数有两个参数:第一个对应于将生成控制蜂鸣器的方波的引脚,第二个对应于要使用的频率。

另外,我们可以传递第三个参数,指定输出方波的时间。在我们的示例中,我们不会使用第三个参数,因为我们将使用延迟函数控制声音的持续时间。因此,如果我们不传递第三个参数,方波将保持不变,直到我们在同一个引脚上调用noTone函数。

我们将假设我们的蜂鸣器将以1000 Hz的频率播放并且将嗡嗡声持续1秒,然后保持关闭1秒,然后重复,以获得双模式。另外,如硬件部分所示,我们考虑使用引脚2输出控制蜂鸣器的方波。

为了使代码易于更改,我们首先声明4个全局变量并为它们分配相应的值。

int frequency = 1000; //以Hz为单位指定
int buzzPin = 2; 
int timeOn = 1000; //以毫秒为单位指定
int timeOff = 1000; //以毫秒为单位指定

对于这个简单的例子,我们可以跳转设置函数并将以下代码放在循环中:

void loop(){

tone(buzzPin, frequency);
delay(timeOn);
noTone(buzzPin);
delay(timeOff);

}

因此,我们通过调用音调功能激活引脚2中的1000 Hz方波,并且蜂鸣器开始播放。我们等待1秒钟,然后我们使用noTone功能停止蜂鸣器。然后我们再等一秒,然后重复这个过程。

猜你喜欢

转载自blog.csdn.net/solar_lan/article/details/81105304