Arduino呼吸燈,運用PWM(模擬類比輸出)控制LED明亮。

arduino呼吸燈

相關文章

Arduino LED跑馬燈,for迴圈運用練習。

Arduino LED閃爍控制教學,初學必備練習!

Arduino 藍芽控制LED,App inventor簡易教學。

Arduino 按鈕控制LED

Arduino光敏電阻使用教學,偵測亮度控制LED開關。

準備材料

材料名稱蝦皮連結
【傑森創工】Arduino Uno R3 開發板 原廠晶片 *限時特惠 附USB線
【傑森創工】20個 1/4W 220Ω 電阻DIP 插板電阻 碳膜電阻,1%電阻 8051 Arduino
【傑森創工】5mm 超高亮度LED 白光 10個一組 可用於Arduino 單晶片 汽機車 無人機
【傑森創工】杜邦線 公對母 20cm 10條 12股銅絲含膠殼 彩色線 (整排40條4單位) Arduino 專用
【傑森創工】170孔 迷你 彩色 麵包板 六色 白黑藍黃綠紅 Arduino (顏色隨機出貨)

什麼是PWM

圖片來源: Arduino.cc

這一是種透過數位脈衝輸出來模擬類比輸出的方式。

簡單來說就是透過數位輸出的開和關之間的時間比來做控制,但這個一開一關的週期時間很短,從LED來說,我們眼睛看到的不會是閃爍,因為太快了,反而是變亮或變暗。

以arduino 的PWM輸出頻率500Hz來說,一個開關的週期為2毫秒

100%Duty Cycle-analogWrite(255),也就是全開,沒有關,最後輸出為5V

50%Duty Cycle-analogWrite(127),會是1毫秒開,1毫秒關,最後輸出為2.5V

圖片來源: Arduino.cc

電路圖

LED電路連接圖示意圖

這裡要注意的是,不是每隻腳都有PWM輸出,電路板上有 ” ~ ” 符號的才有PWM輸出。

實際連接圖

延伸閱讀: 三用電錶使用教學,檢查電路必備工具!!

程式說明

呼吸燈,簡單來說就是從暗慢慢變亮,再慢慢變暗,重複執行。

int led = 9; //設定led pin, PWM pin有~3,~5,~6,~9,~10,~11
int brightness = 0; //LED亮度變數
int fadeAmount = 5; //亮度變化變數

void setup() {
  //設定led pin為OUTPUT
  pinMode(led, OUTPUT);  
}

void loop() {
  //PWM輸出
  analogWrite(led, brightness);
 


  //在每次回圈brightness都會累加fadeAmount
  brightness = brightness + fadeAmount;

  //到最亮或最暗時反轉
  if (brightness <= 0 || brightness >= 255) {
    fadeAmount = -fadeAmount;
  }

  //延遲30ms,使呼吸燈效果更好
  delay(30);
}

我們利用 analogWrite(led,brightness)來控制輸出亮度。

brightness=brightness+fadeAmount 每次回圈可以讓brightness一直往上累加或是遞減,而analogWrite(led,brightness) 就一直更新亮度。

我們要判斷到最亮的時候要反轉,就用brightness >= 255,前面有說analog最多255,反之,brightness < 0也要反轉。

反轉的話就讓fadeAmount= -fadeAmount,這個參數為正或為負,就會讓brightness遞增或遞減。

Arduino IDE 本身有提供範例,下圖為呼吸燈範例路徑。

呼吸燈範例路徑

arduino呼吸燈影片

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *