Arduino第18課視訊控制
Scratch2.0有[視訊控制]積木,搭配使用電腦(筆電)的攝影機就可以控制Arduino。
在[偵測]類下有3個視訊的積木。
一、視訊控制LED亮、滅
當碰到畫面上的紅、黃、綠色圖案時,對應顏色的LED燈就會亮起來。
紅色LED,正極接Arduino板數位腳位11
黃色LED,正極接Arduino板數位腳位10
綠色LED,正極接Arduino板數位腳位9
控制數位腳位9、10、11的輸出為高電位(5V)或低電位(0V),來控制三種顏色LED的亮或熄滅。
舞台程式:
1.[腳位(…)模式為(OUTPUT)],設定數位腳9、10、11為輸出。
2.[將視訊設定為(開啟)],啟動視訊攝影機。
[紅]腳色:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到
如果有碰到,數值會大於20,就讓腳位11輸出1(高電位)讓紅燈亮。
[黃]腳色:
[video(動作)on(這個腳色)],判斷黃色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位10輸出1(高電位)讓黃燈亮。
[綠]腳色:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位9輸出1(高電位)讓綠燈亮。
程式下載: 3色LED.sb2
二、視訊控制LED亮、滅加音樂彈奏
當碰到畫面上的紅、黃、綠色圖案時,對應顏色的LED燈就會亮起來,同時發出音樂聲音。
紅色LED,正極接Arduino板數位腳位11
黃色LED,正極接Arduino板數位腳位10
綠色LED,正極接Arduino板數位腳位9
控制數位腳位9、10、11的輸出為高電位(5V)或低電位(0V),來控制三種顏色LED的亮或熄滅。
舞台程式:
1.[腳位(…)模式為(OUTPUT)],設定數位腳9、10、11為輸出。
2.[將視訊設定為(開啟)],啟動視訊攝影機。
[紅]腳色:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位11輸出1(高電位)讓紅燈亮,並彈奏音符。
[黃]腳色:
[video(動作)on(這個腳色)],判斷黃色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位10輸出1(高電位)讓黃燈亮,並彈奏音符。
[綠]腳色:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位9輸出1(高電位)讓綠燈亮,並彈奏音符。
程式下載: 3色LED+音樂.sb2
延伸:
使用[說(……)]的擴充積木將碰觸到的顏色說出來。
三、控制三種顏色LED的亮度
當碰到畫面上的紅、黃、綠色圖案時,對應顏色的LED燈亮度會改變,同時發出音樂聲音。
紅色LED,正極接Arduino板數位腳位11
黃色LED,正極接Arduino板數位腳位10
綠色LED,正極接Arduino板數位腳位9
Arduino UNO控制板的數位腳位上有[~]符號的D3,D5,D6,D9,D10,D11也可以當作類比輸出,利用PWM模擬不同的電壓輸出。(請參考第五課)
控制數位腳位9、10、11的類比輸出(PWM),來控制三種顏色LED的亮度。
在舞台背景畫出漸暗、漸亮(因為不能直接輸入中文,可以利用繪圖軟體製作圖片,再匯入,舞台大小為寬480像素、高360像素)。
製作紅、黃、綠三個變數,來控制亮度。
製作6個顏色腳色,碰觸後分別增加或減少LED的亮度變數。
紅、黃、綠腳色代表碰觸後變數減少(變暗),圖案放左邊;紅+、黃+、綠+腳色代表碰觸後變數增加(變亮),圖案放右邊。
為了區別漸暗和漸亮,設定樂器為1(鋼琴,代表漸亮)和12(長笛,代表漸暗),讓碰觸時發出的樂器聲音不一樣。
將變數值放中間可以觀察變數的改變情形。
舞台程式:
1.[腳位(…)模式為(OUTPUT)],設定數位腳9、10、11為輸出。
2.[設定變數(…)為0],將亮度一開始設定為0
3.[將視訊設定為(開啟)],啟動視訊攝影機。
[紅]腳色:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數紅改變 -5 ] (變暗), [ 腳位11類比輸出(紅) ] ,並彈奏音符。
[如果 (紅) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[黃]腳色:
[video(動作)on(這個腳色)],判斷黃色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數黃改變 -5 ] (變暗), [ 腳位10類比輸出(黃) ] ,並彈奏音符。
[如果 (黃) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[綠]腳色:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數綠改變 -5 ] (變暗), [ 腳位9類比輸出(綠) ] ,並彈奏音符。
[如果 (綠) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[紅+]腳色:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數紅改變 5 ] (變亮), [ 腳位11類比輸出(紅) ] ,並彈奏音符。
[如果 (紅) 變數 < 255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
[黃+]腳色:
[video(動作)on(這個腳色)],判斷黃色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數黃改變 5 ] (變亮), [ 腳位10類比輸出(黃) ] ,並彈奏音符。
[如果 (黃) 變數 < 255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
[綠+]腳色:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數綠改變 5 ] (變亮), [ 腳位9類比輸出(綠) ] ,並彈奏音符。
[如果 (綠) 變數 < 255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
程式下載:3色LED(PWM).sb2
四、控制RGB三色LED
一顆RGB三色LED裡面就有RGB(紅、綠、藍)三種顏色的LED,我們用的是共陰極,有四支腳,其中最長的腳要接地(GND),其他三支腳分別控制 R、G、B 三個顏色。(請參考第六課)
當碰到畫面上的紅、黃、綠色圖案時,對應顏色的LED燈亮度會改變,同時發出音樂聲音,調整RGB(紅、綠、藍)的不同亮度,就可以混成各種不同的顏色。
為了避免電流太大,負極接地前先接一顆電阻;
其他三支腳分別接D9(藍)、D10(綠)、D11(紅)
利用PWM模擬不同的電壓輸出,控制數位腳位9、10、11的類比輸出(PWM),來控制三種顏色LED的亮度,控制混成的顏色。
在舞台背景畫出漸暗、漸亮(因為不能直接輸入中文,可以利用繪圖軟體製作圖片,再匯入,舞台大小為寬480像素、高360像素)。
製作紅、綠、藍三個變數,來控制RGB顏色亮度。
製作6個顏色腳色,碰觸後分別增加或減少LED的亮度變數。
紅、綠、藍腳色代表碰觸後變數減少(變暗),圖案放左邊;紅+、綠+、藍+腳色代表碰觸後變數增加(變亮),圖案放右邊。
為了區別漸暗和漸亮,設定樂器為1(鋼琴,代表漸亮)和12(長笛,代表漸暗),讓碰觸時發出的樂器聲音不一樣。
將變數值放中間可以觀察變數的改變情形。
舞台程式:
1.[腳位(…)模式為(OUTPUT)],設定數位腳9、10、11為輸出。
2.[設定變數(…)為0],將亮度一開始設定為0
3.[將視訊設定為(開啟)],啟動視訊攝影機。
[紅]腳色:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數紅改變 -5 ] (變暗), [ 腳位11類比輸出(紅) ] ,並彈奏音符。
[如果 (紅) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[綠]腳色:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數綠改變 -5 ] (變暗), [ 腳位10類比輸出(綠) ] ,並彈奏音符。
[如果 (綠) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[藍]腳色:
[video(動作)on(這個腳色)],判斷藍色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數藍改變 -5 ] (變暗), [ 腳位9類比輸出(藍) ] ,並彈奏音符。
[如果 (藍) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[紅+]腳色:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數紅改變 5 ] (變亮), [ 腳位11類比輸出(紅) ] ,並彈奏音符。
[如果 (紅) 變數 < 255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
[綠+]腳色:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數綠改變 5 ] (變亮), [ 腳位10類比輸出(綠) ] ,並彈奏音符。
[如果 (綠) 變數 < 255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
[藍+]腳色:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數藍改變 5 ] (變亮), [ 腳位9類比輸出(藍) ] ,並彈奏音符。
[如果 (藍) 變數 < 255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
當碰到畫面上的紅、黃、綠色圖案時,對應顏色的LED燈亮度會改變,調整上面的RGB(紅、綠、藍)的不同亮度,就可以混成各種不同的顏色的光。
程式下載:RGBLED.sb2
五、音樂演奏(不用接Arduino)
當碰觸鍵盤圖案時,電腦就發出一個聲音,輪流碰觸鍵盤圖案,讓電腦完成歌曲演奏。
主程式:
[將視訊設定為(開啟)],啟動視訊攝影機。
[設定(亮度)特效為(60)],讓鍵盤圖案變透明。
設定樂器種類,上圖[設定樂器為1] 是鋼琴。
副程式:
製作一個變數[彈奏]
[video(動作)on(這個腳色)],判斷是否有被碰到鍵盤圖案。
如果有碰到,數值會大於10(實際值請自行調整),就[設定變數(彈奏)為1],否則讓變數為0。
製作音樂積木:
將歌曲音符編排好,加上[等待(彈奏)=1]。
當碰到鍵盤圖案時,變數(彈奏)為1,就彈奏一個音符。
這樣就可以依序將歌播完。
因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。
如果想要變換樂器,只要更改[樂器種類]就可以了。
以小星星為例,主要分成3段,各用了2次。
主程式變得很簡短。
註:如果使用[製作一個積木]來寫程式的好處就是程式比較有規律,修改、除錯都比較容易。
程式下載: 音樂演奏.sb2
延伸:
1.學生自由創作不同的音樂
2.如何加快音樂節奏?
3.增加一組蜂鳴器,使用蜂鳴器來演奏樂曲。
六、使用蜂鳴器演奏音樂
當碰觸鍵盤圖案時,蜂鳴器就發出一個聲音,輪流碰觸鍵盤圖案,完成歌曲演奏。
請參考第七課(蜂鳴器)
蜂鳴器的正極(長腳)接數位腳D6,負極接GND
主程式:
先拉一個[腳位(號碼)模式設為OUTPUT]的積木,設定數位腳位D6為輸出。
[將視訊設定為(開啟)],啟動視訊攝影機。
[設定(亮度)特效為(60)],讓鍵盤圖案變透明。
副程式:
製作一個變數[彈奏]
[video(動作)on(這個腳色)],判斷是否有被碰到鍵盤圖案。
如果有碰到,數值會大於10(實際值請自行調整),就[設定變數(彈奏)為1],否則讓變數為0。
製作音樂積木:
使用 [等待(彈奏)=1],當碰到鍵盤圖案時,變數(彈奏)為1,蜂鳴器就發出一個音。。
在 [腳位(6)播放音調,頻率為:(C2,523)Hz,時間為:(500)ms] 積木上選擇要發出的音階頻率,或是參考上面的音階-頻率對照表,設定不同音階對應的頻率。
依照歌曲需求拉一些音調播放積木就可以組合成一首歌了。
記得每個音之後都要接等待幾秒,讓音階唱完。
這樣就可以依序將歌播完。
因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。
如果想要變換樂器,只要更改[樂器種類]就可以了。
以小星星為例,主要分成3段,各用了2次。
主程式變得很簡短。
註:如果使用[製作一個積木]來寫程式的好處就是程式比較有規律,修改、除錯都比較容易。
程式下載: 音樂演奏(蜂鳴器).sb2
———————————-
相關連結:
WFduino Chrome App
http://blog.ilc.edu.tw/blog/blog/868/post/97509/637303
初級班課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433
設計視訊互動遊戲超簡單
http://blog.ilc.edu.tw/blog/blog/868/post/10898/621592
WFduino課前準備
http://blog.ilc.edu.tw/blog/blog/868/post/97509/636665
WFduino第一課(概論、連接)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/636745
WFduino第二課(LED)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/637840
WFduino第三課(用鍵盤控制LED)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/637841
WFduino第四課(3顆LED紅綠燈)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/637850
WFduino第五課(PWM模擬類比輸出)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/638450
WFduino第六課(RGB三色LED)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/638508
WFduino第七課(蜂鳴器)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/638509
WFduino第八課(按鍵)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/639090
WFduino顏色猜猜機(第8-1課)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/639091
WFduino第九課(可變電阻)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/639092
WFduino第十課(光敏電阻)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/639093
WFduino第十一課(伺服馬達)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/639094
WFduino第十二課(超音波感測器)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/639095
WFduino第十三課(繼電器)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/639096
WFduino第十四課(人體紅外線感測器)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/640850
WFduino第十五課(主動式紅外線感測器)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/640852
WFduino第十六課(七段顯示器)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/640853
WFduino第十七課(搖桿)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/645549
WFduino第十八課視訊控制
http://blog.ilc.edu.tw/blog/blog/868/post/97509/647945
WFduino第十九課語音控制(for scratch2.0)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/644624
WFduino第二十課(遙控車)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/648422
英文聽音打字練習(WFduino)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/636484
會說時間的鬧鐘(WFduino)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/637772
會說話的九九乘法表(WFduino)
http://blog.ilc.edu.tw/blog/blog/868/post/97509/636482
WF8266R無線遙控車
http://blog.ilc.edu.tw/blog/blog/868/post/10898/648630
WFduino語音控制(forcratchX)
http://blog.ilc.edu.tw/blog/blog/868/post/10898/635592
WFduino無線操控arduino
http://blog.ilc.edu.tw/blog/blog/868/post/97509/636819
WFduino原廠使用方法介紹網頁
http://wf8266.com/wf8266r/tutorials/65_Sx4ABlocks
WFduino for ScratchX
http://blog.ilc.edu.tw/blog/blog/868/post/10898/635190
WF8266R雲端外部感應器