PWM(Pulse Width Modulation,脈寬調制),是在保持波的頻率不變的同時改變脈寬的技術
首先,我們來理解一下
占空比。一個脈沖周期由一個ON周期(VCCC)和一個OFF周期(GND)組成。一段時間內ON周
期占據脈沖周期的比例就叫做占空比。例如,一個10ms的脈沖保持ON 2ms,那么根據公式,占空比是20%
NodeMcu PWM引腳 :
基本上數字IO都可以作為PWM復用引腳,除了D0。不過需要注意的是,D3盡量不用,它內部連接ESP8266 GPIO0
NodeMcu PWM有關Arduino函數:
函數: 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
例子:使D6引腳的LED燈亮暗變化
#define PIN_LED D6 void setup() { pinMode(PIN_LED,OUTPUT); //設置引腳模式 analogWrite(PIN_LED,0); } void loop() { for(int val=0;val<1024;val++){ analogWrite(PIN_LED,val); //給指定引腳寫入數據 delay(2); } for(int val=1023;val>=0;val--){ analogWrite(PIN_LED,1023); delay(2); } }
天子驕龍