相關文章
Arduino 藍芽控制LED,App inventor簡易教學。
內容目錄
準備材料
材料名稱 | 蝦皮連結 |
---|---|
【傑森創工】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
這一是種透過數位脈衝輸出來模擬類比輸出的方式。
簡單來說就是透過數位輸出的開和關之間的時間比來做控制,但這個一開一關的週期時間很短,從LED來說,我們眼睛看到的不會是閃爍,因為太快了,反而是變亮或變暗。
以arduino 的PWM輸出頻率500Hz來說,一個開關的週期為2毫秒
若100%Duty Cycle-analogWrite(255),也就是全開,沒有關,最後輸出為5V。
若50%Duty Cycle-analogWrite(127),會是1毫秒開,1毫秒關,最後輸出為2.5V。
電路圖
這裡要注意的是,不是每隻腳都有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呼吸燈影片