Arduino 编程 ESP8266 12F NodeMCU 实现 PWM 控制呼吸灯
有两种版本的 ESP Node MCU,都可以使用,只是下载串口的驱动不同而已,所有引脚都一样 IO 引脚中,只有带有波浪线的引脚,才具备输出 PWM 模拟信号的能力
一、官方手册中的定义
文档中说道,默认的值范围为 0-255,但是在 3.0 之后的版本中,默认范围变更为 0-1023 至于范围我们可以调用 analogWriteRange(new_range) or analogWriteResolution(bits) 进行调整 - 在我写代码的时候,使用255时观察示波器波形发现的,波形高电平最高只能占到一个周期的 1/4,查找官方手册发现了是这个原因
二、开发板代码
- 我们再来看看实际中的代码,我的开发板 PWM value 值默认范围为 0 - 1023,官方手册查得
- 但是在实际使用中,值大于 700 后 LED 的亮度变化就不太明显了
#include <ESP8266WiFi.h>
int brightness = 0;
void setup(void){
pinMode(D6, OUTPUT);
Serial.begin(9600);
}
void loop(void){
for(brightness = 0; brightness <= 700; brightness++){
analogWrite(D6, brightness);
Serial.println(brightness);
delay(10);
}
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之间变化的波形
四、实物现象
LED在亮灭之间变化着,完成了呼吸灯现象
- 谢谢支持,一个正在学习路上的嵌入式人,如果觉得有用的话麻烦大佬点个赞吧
|