2 有用
1 下载

ESP8266 PWM教程| 使用ESP8266变化LED亮度

文件列表(压缩包大小 109.10K)

免费

概述

需要的元件

  • ESP8266 WiFi模块(ESP-01)

    80120-c8511fe1af899989
  • 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亮度变化。

ESP8266中的PWM

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?

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之间的任何值都将构成占空比。

注意:

  • 如果已为ESP8266中的管脚分配了analogWrite生成PWM信号,则该管脚不能用作数字输出管脚,即不能使用digitalWrite()。
  • 为了将该引脚用作数字引脚,你需要编写AnalogWrite(pin number,0)以便释放它。

ESP8266用于LED衰落的PWM教程电路图

下图是使用Arduino作为USB到串行转换器以及使用PWM信号进行LED亮度变化对ESP8266 WiFi模块进行编程的电路图。

ESP8266 PWM教程电路图

电路设计

将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淡入淡出的位置,即从低到高以及从高到低是一个循环。

应用领域

  • ESP8266 PWM教程仅演示ESP8266 WiFi模块的PWM功能。
  • 使用ESP8266中的PWM技术,你可以实现多个项目,例如伺服电机控制,Web控制的伺服,直流电机速度控制等。

最后

所有需要的文件在下载区均可找到。

via:https://www.electronicshub.org/esp8266-pwm-tutorial-led-fading/

理工酷提示:

如果遇到文件不能下载或其他产品问题,请添加管理员微信:ligongku001,并备注:产品反馈

评论(0)

0/250