1. 程式人生 > 其它 >arduino給數字IO輸出PWM

arduino給數字IO輸出PWM

PWM

PWM(Pulse Width Modulation,脈寬調製),是在保持波的頻率不變的同時改變脈寬的技術。
在這裡插入圖片描述首先,來理解一下佔空比。一個脈衝週期由一個ON週期(VCCC)和一個OFF週期(GND)組成。一段時間內ON周
期佔據脈衝週期的比例就叫做佔空比。例如,一個10ms的脈衝保持ON 2ms,那麼根據公式,佔空比是20%。
基本上數字IO都可以作為PWM複用引腳,除了D0。不過需要注意的是,D3儘量不用,它內部連線ESP8266 GPIO0。

analogWrite(pin,val)往指定pin引腳寫入資料

例如analogWrite(4,520),表示給D4這個角寫入佔空比為520/1024的pwm波。

這裡要說明一下,analogWrite()預設的頻率是1khz,預設佔空數值是1024。
如果要這個引腳輸出的話,記得要在setup()函式裡面宣告
pinMode(4,OUTPUT);

analogWriteRange(new_range)

可以改變佔空數值,預設是1024,可以改成2048,這樣精度就提高了1倍,其實也只是控制輸出而已,實際我感覺沒卵用。

analogWriteFreq(new_frequency)

設定新的pwm頻率,analogWrite()預設是1khz,可以設定成別的,其實改變的是週期。

其他方法

要輸出pwm,其實也可以直接

digitalWrite(4,HIGH)
delayMicroseconds
(time1) //單位是us digitalWrite(4,LOW) delayMicroseconds(time2) //單位是us