ESP8266 PWM教程| 使用ESP8266变化LED亮度
文件列表(压缩包大小 109.10K)
免费
概述
ESP8266 WiFi模块(ESP-01)
Arduino UNO
按钮
SPDT开关(滑动开关)
电阻(1KΩ和2.2KΩ)
小型LED(5mm或3mm)
连接线
面包板
脉宽调制或PWM是一种向LED和电动机等负载供电的技术(PWM也可用于编码消息)。在本ESP8266 PWM教程中,我将教你如何使用ESP8266 WiFi模块生成将用于LED衰落的脉宽调制(PWM)信号。
我们已经看过使用8051,Arduino,Raspberry Pi和IC 555等各种微控制器(或IC)的一些PWM教程。使用PWM技术,我们控制了LED的强度(增加或减少了其亮度),改变了速度直流电动机的转速(增加或降低速度),并且还旋转了伺服电动机。
现在在本ESP8266 PWM教程中,我将控制连接到ESP8266 WiFi模块的GPIO2引脚的LED的亮度,即使用ESP8266的LED亮度变化。
ESP8266EX微控制器,即作为所有ESP8266模块(如ESP-01,NodeMCU等)的核心的SoC,由四个专用PWM输出接口组成。ESP8266EX中与PWM对应的管脚如下:
ESP8266EX中的PWM引脚 | |
---|---|
引脚名称 | 引脚号 |
MTDI | 10 |
MTDO | 13 |
MTMS | 9 |
GPIO4 | 16 |
如果你观察到,这四个引脚在我们的ESP8266 ESP-01 WiFi模块中不可用。那么如何在ESP8266中实现PWM呢?
答案很简单:使用软件编程,即使用微控制器的计时器。
ESP8266 WiFi模块中的PWM可以在定时器中断的帮助下实现。PWM信号的频率可以在1Hz到1KHz之间(最低频率为100Hz)。
ESP8266中PWM生成的软件实现与Arduino中的非常相似。由于我们使用的是Arduino IDE来对ESP8266进行编程,因此负责产生PWM信号的函数为AnalogWrite(与Arduino中使用的函数相同)。
AnalogWrite函数接受两个参数:引脚号和PWM值。代替引脚号,输入要用于PWM输出的引脚号。
关于PWM值,在这里你需要根据PWM的分辨率输入一个值。对于Arduino,分辨率为8位,因此你必须输入0到255之间的值。
对于ESP8266,ESP8266中的PWM使用10位分辨率。因此,你将必须输入0到1023之间的值。此处,PWM值“ 0”表示占空比为0%,PWM值“ 1023”表示占空比为100%。0到1023之间的任何值都将构成占空比。
注意:
下图是使用Arduino作为USB到串行转换器以及使用PWM信号进行LED亮度变化对ESP8266 WiFi模块进行编程的电路图。
将LED指示灯(我使用过8mm的LED指示灯,可以使用带有限流电阻的5mm或3mm的LED指示灯)连接到ESP8266 WiFi模块的GPIO2引脚。
VCC和CH_PD连接到3.3V电源,GND连接到GND。ESP8266 WiFi模块的RST(复位)引脚通过按钮连接至GND。
现在,ESP8266的RX和TX引脚已连接到Arduino UNO的RX和TX。请注意电路图,ESP8266的RX引脚未直接连接到Arduino的RX引脚,而是通过电平转换器(由1KΩ和2.2KΩ电阻组成)连接。
最后,连接GPIO0引脚。该引脚负责在ESP8266中启用编程模式。将GPIO0引脚连接到SPDT滑动开关(即其中心端子),并将两个端子之一连接到GND。另一个端子用作GPIO引脚。
ESP8266 PWM LED的代码如下。
#include <ESP8266WiFi.h>
#define ledPin 2
int brightness = 0;
int fadeAmount = 1;
void setup()
{
Serial.begin(115200);
pinMode(ledPin,OUTPUT);
}
void loop()
{
Serial.println("10% Duty Cycle");
analogWrite(ledPin,102);
delay(2000);
Serial.println("20% Duty Cycle");
analogWrite(ledPin,205);
delay(2000);
Serial.println("50% Duty Cycle");
analogWrite(ledPin,511);
delay(2000);
Serial.println("70% Duty Cycle");
analogWrite(ledPin,714);
delay(2000);
Serial.println("100% Duty Cycle");
analogWrite(ledPin,1023);
delay(2000);
Serial.println("LED Fadding begins.....");
while(1)
{
analogWrite(ledPin, brightness);
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 1023)
{
fadeAmount = -fadeAmount;
}
delay(10);
}
}
按照电路图正确建立所有连接后,请在ESP8266中启用编程模式,即将GPIO0开关滑至GND位置,然后按RST按钮。
使用Arduino IDE上载代码(首先,在开发板上选择Generic ESP8266 Module,以及正确的端口号)。
上载程序后,将GPIO0引脚滑至GPIO位置,然后按一下RST按钮。现在,该代码将开始运行,最初你可以看到LED通过5个步骤逐渐将其亮度增加到最大强度。
此后,淡入淡出动作开始于LED淡入淡出的位置,即从低到高以及从高到低是一个循环。
所有需要的文件在下载区均可找到。
via:https://www.electronicshub.org/esp8266-pwm-tutorial-led-fading/
如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈
评论(0)