iL學習板第6課PWM模擬類比輸出
Arduino UNO控制板的數位腳位上有[~]符號的D3,D5,D6,D9,D10,D11也可以當作類比輸出,利用PWM模擬不同的電壓輸出。(註)
註:這裡使用的類比輸出值範圍為0~255,0最小(0V),255最大(5V)
接線圖:
使用Jump直接將D9和LEDB、D10和LEDG、D11和LEDR兩兩接上。
當類比輸出為255(5V)時LED亮,類比輸出為0(0V)時LED熄滅。
一、呼吸燈(一個顏色漸亮、漸暗、漸亮、漸暗、不斷循環)
做一個變數[呼吸],[腳位(11)類比輸出(呼吸)],改變[呼吸]的數值,輸出的電壓就會改變,LED的亮度也就跟著改變。
先將呼吸變數慢慢增加,LED愈來愈亮。(重複255次)
再將呼吸變數慢慢減少,LED愈來愈暗。(重複255次)
[重複無限次]上面的動作。
程式下載:1呼吸.sb2
延伸:
1.如何改變呼吸(亮、暗)速度?
2.仔細觀察會發現燈漸暗時,到最暗了燈並沒有全暗(還有一點亮光),為什麼?
3.請同學思考並試試看[變數改變]和[腳位..類比輸出..]這兩個積木指令的順序如果相反,仔細觀察結果有何不同?
二、檢查程式
在[腳位(11)類比輸出(呼吸)],下面加一個[說(呼吸)]的積木,顯示輸出的值。
為了讓變化更容易觀察,在[重複255次]下面中增加[等待2秒]的指令,觀察變數的變化。
發現當最亮時實際輸出(說的值)是254,最暗時實際輸出(說的值)是1
程式下載:呼吸(檢查).sb2
三、呼吸燈(一個顏色漸亮、漸暗、漸亮、漸暗、不斷循環)(修正)
[將變數改變(…)]和[腳位..類比輸出..]這兩個積木指令的順序改變。
發現當最亮時實際輸出(說的值)是255,最暗時實際輸出(說的值)是0
引導學生想想如何檢查程式的BUG
另一種檢查方式,可以先將綠旗下的積木都先移開,再一個積木一個積木接回去,觀察增加積木後的變化。
程式下載:修正2.sb2
四、呼吸燈(三色輪流呼吸,漸亮、漸暗、換下一色漸亮、漸暗、不斷循環)
控制D9、D10、D11的類比輸出,來控制LED三種顏色的亮度。
做一個變數[呼吸],[腳位(9)類比輸出(呼吸)],改變[呼吸]的數值,輸出的電壓就會改變,LED的亮度也就跟著改變。
先將呼吸變數慢慢增加,LED愈來愈亮。(重複255次)
再將呼吸變數慢慢減少,LED愈來愈暗。(重複255次)
接著換設定腳位D10的類比輸出值為[呼吸],然後是D11。
[重複無限次]上面的動作。
程式下載:3呼吸.sb2
延伸:
1.將檢查程式用的[說(呼吸)]、[等待 2秒]積木移除,讓程式變短。
2.寫程式除了要能執行需要的功能外,如果能讓程式簡短一些,執行更有效率,更是程式設計的精神所在。
上面的範例並不是最短的程式,還有更簡短的程式寫法您想到了嗎?
五、呼吸燈(三色輪流呼吸,簡短程式)
增加一個[燈號]的變數。
讓燈號從9到11重複三次,讓顏色從綠、紅、藍輪流呼吸。
程式下載:3呼吸短.sb2
延伸:
1.請同學思考並試試看,腳位積木和變數積木順序改變對結果的影響?
2.請同學思考並試試看,如何讓顏色變換速度減慢?
六、其他應用
可以控制馬達轉速,調整風扇轉速……等應用。後面再介紹。
———————————-
註1:
Pulse Width Modulation (PWM),脈衝寬度調變。
簡單的說,他是一種利用數位訊號模擬類比訊號的方式。
通常我們可以用來調整燈光的亮度、馬達的轉速、RGB LED 的配色、螢幕亮度控制、喇叭的大小聲/聲音頻率等…。
PWM 的原理,就是藉由數位訊號高頻率的切換,調整開關的比例,我們可以模擬出我們需要的類比訊號。
資料來源:http://thats-worth.blogspot.tw/2014/04/arduino-pwm-arduino-pulse-width.html
註2:
資料來源:https://www.facebook.com/DavidHuangsLab/posts/598599460593751
——————————-
相關連結:
iL學習板課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/111175/727272
WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433
新DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/104089/678192