Arduino通过delay方法改变PWM频率和周期

之前使用stm32来输出pwm感觉改变频率和占空比挺简单,换了Arduino感觉配置不适应。Arduino的analogWrite(pin,value)方法value值在0-255间,缺点是不能改变频率,若是要输出1kHz的pwm波就不行。所以用delay延时方法来模拟PWM

若是想让D9脚输出周期为20ms的PWM波,可以使用:

digitalWrite(9,HIGH);
delay(10);
digitalWrite(9,LOW);
delay(10);

这样只是设定了PWM的周期(也就是频率),改变占空比即改变高电平占整个周期的百分比,可以使用:

digitalWrite(9,HIGH);
delay(x);
digitalWrite(9,LOW);
delay(20-x);

上述代码的占空比为:(x/20)%,通过改变x的值来改变占空比。x取值在0-20之间。

你可能感兴趣的:(arduino,单片机)