Arduino提供PWM輸出,分別是
PIN 3,5,6,9,10,11,只要板子上有~符號的腳位都能用於提供PWM輸出。
PWM 是使用脈波的工作率(duty cycle)來模擬0-5V之間的類比訊號效果。以方波來說,它有50% 的時間輸出高電位 5V,而
50% 輸出的時間輸出低電位 0V,工作率為50%,因此對應的類比電壓可視為
2.5V;同樣的,如果工作率為90% (90% 的時間輸出高電位 5V),那麼對應的類比電壓可視為
4.5V,依此類推。
Arduino可以使用analogWrite函式來設定輸出PWM的工作率值,由於輸出是8位元的架構,因此對應的設定值為
0 ~ 255,如同下面的圖例,
1. analogWrite(0) 會輸出工作率為
0% 的PWM脈波,
2. analogWrite(64) 會輸出工作率為
25% 的PWM脈波,
3. analogWrite(127) 會輸出工作率為
50% 的PWM脈波,
4. analogWrite(255) 則是會輸出工作率為
100% 的PWM脈波。
我們在void loop()中放兩個for-loop,但可以達到控制LED漸亮與漸暗的效果:
int
led = 9; // the PWM pin the
LED is attached to
void
setup()
{
pinMode(led, OUTPUT);
}
void
loop()
{
for (int i=0; i<=255; i=i+5)
{
analogWrite(led, i);
delay(30);
}
for (int i=255; i>=0; i=i-5)
{
analogWrite(led, i);
delay(30);
}
}
|
相同的功能,在Fade這個example裡,也介紹了使用PWM讓LED燈泡漸暗與漸亮:
int led = 9; // the PWM pin the LED is attached
to
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
void setup()
{
pinMode(led, OUTPUT);
}
void loop()
{
analogWrite(led, brightness);
delay(30);
brightness = brightness + fadeAmount;
if
(brightness == 0 || brightness == 255)
{
fadeAmount =
-fadeAmount ;
}
}
|