【ESP8266】使用ESP8266的PWM实现一个简单的呼吸灯程序

本文利用ESP8266的PWM功能,基于esp8266_nonos_sdk_v1.5.4_16_05_20,编写了一个在GPIO12、13、14上运行的简单呼吸灯程序。采用的是nodemcu(ESP-12D)模块,并针对共阴极灯珠进行设计。主要改动在于将driver_lib和IoT_Demo文件移动到app目录,并修改了user_main.c文件。
摘要由CSDN通过智能技术生成

1.使用乐鑫官网的esp8266_nonos_sdk_v1.5.4_16_05_20,用ESP8266的PWM功能,写了一个简单的呼吸灯程序

2.驱动IO口分别为GPIO12 13 14

3.使用的模块为nodemcu(ESP-12D)

4.此呼吸灯我目前是用共阴极的灯珠实现的

5.原生SDK修改之处:
    a.将 driver_lib 和 examples/IoT_Demo 下的文件剪切到 app目录下

    b.修改app/user/user_main.c文件

附件:点击打开链接

/****user_main.c*****/
#include "ets_sys.h"
#include "osapi.h"
#include "user_interface.h"
#include "user_light.h"
#include "gpio.h"

LOCAL os_timer_t os_timer;

LOCAL uint8 set_duty=0;            /** PWM占空比变量 */

LOCAL uint8 dir=1;                /** 占空比加减标志 */

static void ESP8266_PWM_RUN(void)
{
    if (1==dir)
    {
        set_duty ++;
        if ( set_duty >= 100 )
        {
            dir=0;
当然可以!下面是一个示例程序使用ESP8266基于Arduino IDE编写的2路PWM程序: ```cpp // 引入ESP8266WiFi库 #include <ESP8266WiFi.h> // 定义2个PWM引脚 const int pwmPin1 = D1; const int pwmPin2 = D2; void setup() { // 初始化串口通信 Serial.begin(115200); // 设置PWM引脚为输出模式 pinMode(pwmPin1, OUTPUT); pinMode(pwmPin2, OUTPUT); // 配置PWM频率 analogWriteFreq(1000); // 设置PWM频率为1kHz } void loop() { // 设置PWM占空比 analogWrite(pwmPin1, 512); // 设置PWM1的占空比为50% analogWrite(pwmPin2, 768); // 设置PWM2的占空比为75% delay(1000); // 延时1秒 analogWrite(pwmPin1, 0); // 关闭PWM1 analogWrite(pwmPin2, 0); // 关闭PWM2 delay(1000); // 延时1秒 } ``` 在上述代码中,我们首先包含了ESP8266WiFi库,并定义了两个PWM引脚:`pwmPin1`和`pwmPin2`。在`setup()`函数中,我们初始化了串口通信,并将两个PWM引脚设置为输出模式。然后,我们使用`analogWriteFreq()`函数设置了PWM的频率为1kHz。 在`loop()`函数中,我们使用`analogWrite()`函数设置了两个PWM引脚的占空比。在这个例子中,我们分别将PWM1的占空比设置为50%,PWM2的占空比设置为75%。然后,我们延时1秒钟,关闭两个PWM引脚,并再次延时1秒钟。 你可以根据自己的需求修改占空比和延时时间来实现你想要的PWM控制效果。记得将程序上传到你的ESP8266板子上并观察输出。 希望这个示例程序能帮到你!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值