2016年5月29日 星期日

什麼是脈波寬度調變PWM

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裡,也介紹了使用PWMLED燈泡漸暗與漸亮:
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 ; 
}
}





沒有留言:

張貼留言

NUMPY的Array介紹與Matplotlib的繪圖功能

NumPy 的 Array 介紹與 Matplotlib 的繪圖功能   1. A rray 的基本運算 :   適用於科學和數學運算的 NumPy 套件中,有一個 Array 的資料結構。 Array 是一個非常類似 list 的序列型態。 但是 Arr...