标签搜索
侧边栏壁纸
    love love love

  • 累计撰写 33 篇文章
  • 累计收到 20 条评论

ESP8266 PWM输出原理及源码

星星
2023-02-01 / 0 评论 / 102 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年02月05日,已超过468天没有更新,若内容或图片失效,请留言反馈。
PWM定义

 PWM(pulse-width modulation)脉冲宽度调制,MCU(微控制器)通过对开关器件的通断进行控制,使输出端得到一系列幅值相等占空比不同的脉冲,进而控制呼吸灯或电机的转速等。效果如下图所示:

PWM_LED

ESP8266 PWM输出

 ESP8266的数字引脚基本上都可以当作PWM复用引脚(❗注:由于GPIO0在启动时的电平可改变BOOT模式,因此最好不要用GPIO0作为PWM输出引脚),PWM输出程序源码如下所示:

const int pwmOutPin = LED_BUILTIN; //led连接到pwm输出引脚
int outputValue = 0; //输出到pwm脚的值

void setup()
{
    // 设置led脚输出pwm模式
    pinMode(pwmOutPin, OUTPUT);
    Serial.begin(115200);
}

void loop()
{
    //Low to High
    for(outputValue = 0; outputValue <= 500; outputValue++){
        analogWrite(pwmOutPin, outputValue);
        Serial.println(outputValue);
        delay(1);
    }
    //High to Low
    for(outputValue = 500; outputValue >= 0; outputValue--){
        analogWrite(pwmOutPin, outputValue);
        Serial.println(outputValue);
        delay(1);
    }
}
Arduino PWM控制函数解析
  1. 函数:analogWrite(pin,val) 往指定引脚写入数据
    pin:要启用软件PWM的GPIO引脚
    val:数值,一般在0到PWMRANGE范围,默认PWMRANGE是1023
    返回值:无
  2. 函数:analogWriteRange(new_range) 用于改变PWMRANGE数
    值即改变引脚读写的数据范围
    返回值: 无
    ❗注:可以理解为PWM精度范围。同样的PWM频率下,默认占空数值1023,如果改变PWMRANGE为2047,那么占空数值就变成0-2047。
  3. 函数:analogWriteFreq(new_frequency) 该功能用于改变PWM频率
    new_frequency:新PWM频率,默认是1kHZ
    返回值: 无
    ❗注:Arduino For ESP8266的PWM频率范围为100Hz-40KHz
本文共 273 个字数,平均阅读时长 ≈ 1分钟
0

评论 (0)

取消