Arduino 编程 ESP8266 12F NodeMCU 实现 PWM 控制呼吸灯

Arduino 编程 ESP8266 12F NodeMCU 实现 PWM 控制呼吸灯

有两种版本的 ESP Node MCU,都可以使用,只是下载串口的驱动不同而已,所有引脚都一样
IO 引脚中,只有带有波浪线的引脚,才具备输出 PWM 模拟信号的能力

GPIO宏定义引脚
4D2
14D5
12D6
15D8

在这里插入图片描述
在这里插入图片描述

一、官方手册中的定义

  • 文档中说道,默认的值范围为 0-255,但是在 3.0 之前的版本中,默认范围变更为 0-1023
  • 至于范围我们可以调用 analogWriteRange(new_range) or analogWriteResolution(bits) 进行调整
  • 在我写代码的时候,使用255时观察示波器波形发现的,波形高电平最高只能占到一个周期的 1/4,查找官方手册发现了是这个原因
    在这里插入图片描述

二、开发板代码

  • 我们再来看看实际中的代码,我的开发板 PWM value 值默认范围为 0 - 1023,官方手册查得
  • 但是在实际使用中,值大于 700 后 LED 的亮度变化就不太明显了
#include <ESP8266WiFi.h>        // 本程序使用 ESP8266WiFi库
 
int brightness = 0;

void setup(void){
    pinMode(D6, OUTPUT);
    Serial.begin(9600);
}

void loop(void){
    //Low to High,实际大于 700 后亮度变化不明显
    for(brightness = 0; brightness <= 700; brightness++){//0 - 1023
        analogWrite(D6, brightness);
        Serial.println(brightness);
        delay(10);
    }

    //High to Low
    for(brightness = 700; brightness >= 0; brightness--){
        analogWrite(D6, brightness);
        Serial.println(brightness);
        delay(10);
    }
}
  • 对于输出模拟信号还有其他接口,靠大家自己去探索了
int analogRead(uint8_t pin);
void analogReference(uint8_t mode);
void analogWrite(uint8_t pin, int val);
void analogWriteFreq(uint32_t freq);
void analogWriteRange(uint32_t range);

三、 示波器现象

范围在 0-1023之间变化的波形

  • 占空比为 0%
  • 占空比为 50%
  • 占空比为 100%

四、实物现象

LED在亮灭之间变化着,完成了呼吸灯现象

  • 谢谢支持,一个正在学习路上的嵌入式人,如果觉得有用的话麻烦大佬点个赞吧
  • 17
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值