PWM定义
PWM(pulse-width modulation)脉冲宽度调制,MCU(微控制器)通过对开关器件的通断进行控制,使输出端得到一系列幅值相等占空比不同的脉冲,进而控制呼吸灯或电机的转速等。效果如下图所示:
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控制函数解析
- 函数:
analogWrite(pin,val)
往指定引脚写入数据
pin:要启用软件PWM的GPIO引脚
val:数值,一般在0到PWMRANGE范围,默认PWMRANGE是1023
返回值:无 - 函数:
analogWriteRange(new_range)
用于改变PWMRANGE数
值即改变引脚读写的数据范围
返回值: 无
❗注:可以理解为PWM精度范围。同样的PWM频率下,默认占空数值1023,如果改变PWMRANGE为2047,那么占空数值就变成0-2047。 - 函数:
analogWriteFreq(new_frequency)
该功能用于改变PWM频率
new_frequency:新PWM频率,默认是1kHZ
返回值: 无
❗注:Arduino For ESP8266的PWM频率范围为100Hz-40KHz
本文共 273 个字数,平均阅读时长 ≈ 1分钟
评论 (0)