你將了解脈衝寬度調試(PWM)的原理
你將使用PWM製作一個呼吸燈的效果
脈衝寬度調試PWM,也就是脈衝寬度調製,用於將一段信號編碼為脈衝信號(方波信號)。是在數字電路中 達到 模擬輸出效果的一種手段。即:使用數字控制產生佔空比不同的方波(一個不停在開與關之間切換的信號)來控制模擬輸出。我們要在數字電路中輸出模擬信號,就可以使用PWM技術實現。
在arduino中,我們常用PWM來驅動LED的暗亮程度,電機的轉速等。
我們知道,在數字電路中,電壓信號是離散的: 不是 0(0V) 就是 1(5V或者3.3V), 那麼如何輸出介於 0v 和 5V之間的某個電壓值呢?
簡單來說就是在一個周期內讓電壓在0V與5V之間快速切換,根據5V的佔比便可以模擬出0v到5v之間的不同電壓。
脈衝寬度調製不同的佔空比
動態顯示佔空比
arduino使用analogWrite()函數來實現PWM功能,參數值範圍:0~255,0表示的意思是5V佔比為0%(表現為針腳輸出0V),128的意思是5V佔比為50%(變現為針腳輸出2.5V),255表示的意思是5V佔比為100%(表現為針腳輸出5V)。
arduino官網對於PWM的解釋:https://www.arduino.cc/en/Tutorial/PWM
arduino uno
arduino uno支持PWM功能的數字針腳為:3、 5、 6、 9、 10、 11(有~標誌)。
呼吸燈項目電路圖
程序代碼
文字代碼如下:
int led = 6;
void setup() {
// put your setup code here, to run once:
pinMode(led,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
for(int i=0;i<=255;i++)
{
analogWrite(led,i);
delay(5);
}
for(int i=255;i>=0;i--)
{
analogWrite(led,i);
delay(5);
}
}