arduino給數字IO輸出PWM
阿新 • • 發佈:2021-05-30
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波。
如果要這個引腳輸出的話,記得要在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