S2A第五課(PWM模擬類比輸出)
Arduino UNO控制板的數位腳位上有[~]符號的D3,D5,D6,D9,D10,D11也可以當作類比輸出,利用PWM模擬不同的電壓輸出。(註)
一、呼吸燈(漸亮、漸暗、漸亮、漸暗、不斷循環)
1.一顆LED呼吸燈
紅色LED長腳(正極)接數位腳D11,短腳接電阻,再接GND
先拉一個[啟用:數位腳位(號碼)為輸入]的積木
點旁邊三角形就可以看到許多設定,點其中的[PWM],完成設定
做一個變數[呼吸],[模擬類比輸出(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的亮度。
程式開始先設啟用數位腳位9、10、11為PWM
做一個變數[呼吸],[模擬類比輸出(PWM):設定腳位(9)的值為(呼吸)],改變[呼吸]的數值,輸出的電壓就會改變,綠色LED的亮度也就跟著改變。
先將呼吸變數慢慢增加,綠色LED愈來愈亮。再將呼吸變數慢慢減少,綠色LED愈來愈暗。
接著換設置設定腳位D10的PWM輸出值為[呼吸],然後是D11,不停地重複。
[重複執行]這個動作。
程式下載:3呼吸燈.sb2
PS:寫程式除了要能執行需要的功能外,如果能讓程式簡短一些,執行更有效率,更是程式設計的精神所在。
上面的範例並不是最短的程式,還有更簡短的程式寫法您想到了嗎?
延伸:
a.簡短程式
增加一個[燈號]的變數。
讓燈號從9到11重複三次,讓綠、黃、紅LED輪流呼吸。
程式下載:3呼吸燈(短).sb2
b.模仿霹靂燈,同時接18顆LED燈來呼吸
程式下載:18呼吸燈(短).sb2
從影片中可以看到大部分的燈都不會亮,為什麼?
因為只有數位腳位上有[~]符號的D3,D5,D6,D9,D10,D11也可以當作類比輸出,所以只有這6顆燈會呼吸。
3.三顆LED呼吸燈一起呼吸(三顆LED一起漸亮、漸暗、漸亮、漸暗、不斷循環)
跟一顆LED呼吸燈主程式相似,直接將[模擬類比輸出:設定腳位(9、10、11)的值為(呼吸)]放在一起,三個綠、黃、紅就一起動作了。
程式下載:3呼吸燈(一起).sb2
4.隨機呼吸(三顆LED隨機改變亮度)
程式開始先設啟用數位腳位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板子