S2A第五課(PWM模擬類比輸出)
宜蘭縣竹林國小 陳金助老師

Arduino UNO控制板的數位腳位上有[~]符號的D3,D5,D6,D9,D10,D11也可以當作類比輸出,利用PWM模擬不同的電壓輸出。(註)

一、呼吸燈(漸亮、漸暗、漸亮、漸暗、不斷循環)

1.一顆LED呼吸燈

紅色LED長腳(正極)接數位腳D11,短腳接電阻,再接GND

設定0

先拉一個[啟用:數位腳位(號碼)為輸入]的積木

設定

點旁邊三角形就可以看到許多設定,點其中的[PWM],完成設定

1呼吸燈

做一個變數[呼吸],[模擬類比輸出(PWM):設定腳位(11)的值為(呼吸)],改變[呼吸]的數值,輸出的電壓就會改變,LED的亮度也就跟著改變。

先將呼吸變數慢慢增加,LED愈來愈亮。再將呼吸變數慢慢減少,LED愈來愈暗。

[重複執行]這個動作。

程式下載:1呼吸燈.sb2

延伸:

請同學思考並試試看[變數改變]和[設定腳位的值]這兩個積木指令的順序如果相反,結果有何不同?

為了讓變化更容易觀察,可以再程式中增加[等待1秒]的指令,觀察變數的變化。

註:這裡使用的PWM範圍為0~255,0最小(0V),255最大(5V)

2.三顆LED呼吸燈輪流呼吸(漸亮、漸暗、換下一顆漸亮、漸暗、不斷循環)

紅色LED,正極接D11

黃色LED,正極接D10

綠色LED,正極接D9

控制D9、D10、D11的PWM輸出,來控制三種顏色LED的亮度。

3呼吸燈

程式開始先設啟用數位腳位9、10、11為PWM

做一個變數[呼吸],[模擬類比輸出(PWM):設定腳位(9)的值為(呼吸)],改變[呼吸]的數值,輸出的電壓就會改變,綠色LED的亮度也就跟著改變。

先將呼吸變數慢慢增加,綠色LED愈來愈亮。再將呼吸變數慢慢減少,綠色LED愈來愈暗。

接著換設置設定腳位D10的PWM輸出值為[呼吸],然後是D11,不停地重複。

[重複執行]這個動作。

程式下載:3呼吸燈.sb2

PS:寫程式除了要能執行需要的功能外,如果能讓程式簡短一些,執行更有效率,更是程式設計的精神所在。

上面的範例並不是最短的程式,還有更簡短的程式寫法您想到了嗎?

延伸:

a.簡短程式

3呼吸燈(短)

增加一個[燈號]的變數。

讓燈號從9到11重複三次,讓綠、黃、紅LED輪流呼吸。

程式下載:3呼吸燈(短).sb2

b.模仿霹靂燈,同時接18顆LED燈來呼吸

18呼吸燈(短)

程式下載:18呼吸燈(短).sb2

從影片中可以看到大部分的燈都不會亮,為什麼?

因為只有數位腳位上有[~]符號的D3,D5,D6,D9,D10,D11也可以當作類比輸出,所以只有這6顆燈會呼吸。

3.三顆LED呼吸燈一起呼吸(三顆LED一起漸亮、漸暗、漸亮、漸暗、不斷循環)

3呼吸燈(一起)

跟一顆LED呼吸燈主程式相似,直接將[模擬類比輸出:設定腳位(9、10、11)的值為(呼吸)]放在一起,三個綠、黃、紅就一起動作了。

程式下載:3呼吸燈(一起).sb2

4.隨機呼吸(三顆LED隨機改變亮度)

3呼吸燈(隨機)

程式開始先設啟用數位腳位9、10、11為PWM

將[模擬類比輸出(PWM):設定腳位(號碼)的值為(數量值)]指令中,(號碼)用[在9到11間隨機選一個數]替換,(數量值)用[在0到255間隨機選一個數]替換

[重複執行]這個動作,三顆LED的亮度也就跟著隨機改變。

程式下載:3呼吸燈(隨機).sb2

延伸:請同學思考並試試看,如何讓顏色變換速度減慢?

二、其他應用

可以控制馬達轉速,調整風扇轉速……等應用。後面再介紹。

———————————-

註:

Pulse Width Modulation (PWM),脈衝寬度調變。

簡單的說,他是一種利用數位訊號模擬類比訊號的方式。

通常我們可以用來調整燈光的亮度、馬達的轉速、RGB LED 的配色、螢幕亮度控制、喇叭的大小聲/聲音頻率等…。

PWM 的原理,就是藉由數位訊號高頻率的切換,調整開關的比例,我們可以模擬出我們需要的類比訊號。

資料來源:http://thats-worth.blogspot.tw/2014/04/arduino-pwm-arduino-pulse-width.html

———————–

相關連結:

S2A初級班課程目錄

http://blog.ilc.edu.tw/blog/blog/868/post/97121/634243

S2A課前準備

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630656

網路線上版scratch2.0操控arduino(S2A)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/629471

S2A第一課(概論、連接)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630098

S2A第二課(LED)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630328

S2A第三課(用鍵盤控制LED)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630339

S2A第四課(3顆LED紅綠燈)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630362

S2A第五課(PWM模擬類比輸出)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630609

S2A第六課(RGB三色LED)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630826

S2A第七課(蜂鳴器)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/631037

S2A第八課(按鍵)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/631469

顏色猜猜機(S2A)

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630444

同時控制4片Arduino板子

http://blog.ilc.edu.tw/blog/blog/868/post/97121/630334

文章來源:S2A第五課(PWM模擬類比輸出) 由 roc 發表。