W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
脈沖寬度調(diào)制或PWM是用于改變脈沖串中的脈沖寬度的常用技術(shù)。PWM有許多應(yīng)用,如控制伺服和速度控制器,限制電機和LED的有效功率。
脈沖寬度調(diào)制基本上是一個隨時間變化而變化的方波。基本的PWM信號如下圖所示。
有很多術(shù)語與PWM相關(guān):
On-Time(導(dǎo)通時間) - 時間信號的持續(xù)時間較長。
Off-Time(關(guān)斷時間) - 時間信號的持續(xù)時間較短。
Period(周期) - 表示為PWM信號的導(dǎo)通時間和關(guān)斷時間的總和。
Duty Cycle(占空比) - 它表示為在PWM信號周期內(nèi)保持導(dǎo)通的時間信號的百分比。
如圖所示,Ton表示導(dǎo)通時間,Toff表示信號的關(guān)斷時間。周期是導(dǎo)通和關(guān)斷時間的總和,并按照以下公式計算:
占空比用于計算為一段時間的導(dǎo)通時間。使用上面計算的周期,占空比計算為:
analogWrite()函數(shù)將模擬值(PWM波)寫入引腳。它可用于以不同的亮度點亮LED或以各種速度驅(qū)動電機。在調(diào)用analogWrite()函數(shù)之后,引腳將產(chǎn)生指定占空比的穩(wěn)定方波,直到下一次調(diào)用analogWrite()或在相同引腳上調(diào)用digitalRead()或digitalWrite()。大多數(shù)引腳上的PWM信號頻率約為490 Hz。在Uno和類似的板上,引腳5和6的頻率約為980Hz。Leonardo上的引腳3和11也以980Hz運行。
在大多數(shù)Arduino板上(ATmega168或ATmega328),此功能在引腳3,5,6,9,10和11上工作。在Arduino Mega上,它在引腳2-13和44-46上工作。舊的Arduino ATmega8板僅支持引腳9,10和11上的 analogWrite()。
Arduino Due支持引腳2至13以及引腳DAC0和DAC1上的 analogWrite()。與PWM引腳不同,DAC0和DAC1是數(shù)模轉(zhuǎn)換器,用作真正的模擬輸出。
在調(diào)用analogWrite()之前,不需要調(diào)用pinMode()將引腳設(shè)置為輸出。
analogWrite ( pin , value ) ;
value ? the duty cycle: between 0 (always off) and 255 (always on).
value - 占空比:0(始終導(dǎo)通)到255(始終關(guān)斷)之間。
示例
int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}
void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, (val / 4)); // analogRead values go from 0 to 1023,
// analogWrite values from 0 to 255
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: