WFduino第十八課視訊控制

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(紅、綠、藍)的不同亮度,就可以混成各種不同的顏色。

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)

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

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雲端外部感應器

http://blog.ilc.edu.tw/blog/blog/868/post/10898/633305

文章來源:WFduino第十八課視訊控制 由 roc 發表。

作者: roc

宜蘭縣國小資訊小站