WFduino視訊控制

Description

Description

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

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

Latest posts by chen juh (see all)

    Contact

    Contact
    • Category
      Arduino

    Project簡述

    Project簡述
    • 簡述
      Scratch2.0有[視訊控制]積木,搭配使用電腦(筆電)的攝影機就可以控制Arduino。
    • 作者
      陳金助
    • FB Comments
      http://blog.ilc.edu.tw/blog/blog/868

    您的姓名 〈需填寫〉

    您的電子郵件信箱 〈需填寫〉

    主旨

    您的信件內容