DiFi第十四課視訊控制
Scratch2.0有[視訊控制]積木,搭配使用電腦(筆電)的攝影機就可以控制DiFi學習板。
在[偵測]類下有3個視訊的積木。
一、視訊控制LED顏色
當碰到畫面上的紅、黃、綠色圖案時,LED燈就會亮對應的顏色。
接線圖:
拿一條麵包線,一端接數位腳D7,一端接板子上寫[LEDG]的插孔(上圖標d)。
再拿一條麵包線,一端接數位腳D6,一端接板子上寫[LEDR]的插孔(上圖標e)。
再拿一條麵包線,一端接數位腳D5,一端接板子上寫[LEDB]的插孔(上圖標f)。
因為這是共陽極RGB LED,共用的正極已經內接了,數位腳位D5、D6、D7預設是低電位(GND),所以接上就形成通路,LED亮燈。
當數位輸出為1(3.3V)時LED熄滅,數位輸出為0(0V)時LED亮。
[綠]腳色:
[將視訊設定為(開啟)],啟動視訊攝影機。
[設定視訊透明度為50%],設定視訊影像透明度。
[腳位7數位輸出1],設定數位腳7為輸出高電位(LED不要亮綠色)。
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位7輸出0(低電位)讓LED亮綠色。
否則就讓腳位7輸出1(高電位),讓LED不要亮綠色。
[紅]腳色:
[腳位6數位輸出1],設定數位腳6為輸出高電位(LED不要亮紅色)。
重複執行偵測:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位6輸出0(低電位)讓LED亮紅色。
否則就讓腳位6輸出1(高電位),讓LED不要亮紅色。
[藍]腳色:
[腳位5數位輸出1],設定數位腳5為輸出高電位(LED不要亮藍色)。
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位5輸出0(低電位)讓LED亮藍色。
否則就讓腳位5輸出1(高電位),讓LED不要亮藍色。
程式下載: 3色LED(視訊).sb2
二、視訊控制LED顏色(說出顏色)
當碰到畫面上的紅、黃、綠色圖案時,LED燈就會亮對應的顏色,並說出顏色。
[綠]腳色:
[將視訊設定為(開啟)],啟動視訊攝影機。
[設定視訊透明度為50%],設定視訊影像透明度。
[腳位7數位輸出1],設定數位腳7為輸出高電位(LED不要亮綠色)。
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位7輸出0(低電位)讓LED亮綠色,並說[綠燈]。
否則就讓腳位7輸出1(高電位),讓LED不要亮綠色。
[紅]腳色:
[腳位6數位輸出1],設定數位腳6為輸出高電位(LED不要亮紅色)。
重複執行偵測:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位6輸出0(低電位)讓LED亮紅色,並說[紅燈]。
否則就讓腳位6輸出1(高電位),讓LED不要亮紅色。
[藍]腳色:
[腳位5數位輸出1],設定數位腳5為輸出高電位(LED不要亮藍色)。
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位5輸出0(低電位)讓LED亮藍色,並說[藍燈]。
否則就讓腳位5輸出1(高電位),讓LED不要亮藍色。
程式下載:3色LED說.sb2
三、視訊控制LED顏色加上音樂彈奏
當碰到畫面上的紅、黃、綠色圖案時,LED燈就會亮對應的顏色,同時發出音樂聲音。
[綠]腳色:
[將視訊設定為(開啟)],啟動視訊攝影機。
[設定視訊透明度為50%],設定視訊影像透明度。
[腳位7數位輸出1],設定數位腳7為輸出高電位(LED不要亮綠色)。
[設定樂器為1],設定樂器為鋼琴。
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位7輸出0(低電位)讓LED亮綠色,並彈奏音符。
否則就讓腳位7輸出1(高電位),讓LED不要亮綠色。
[紅]腳色:
[腳位6數位輸出1],設定數位腳6為輸出高電位(LED不要亮紅色)。
[設定樂器為1],設定樂器為鋼琴。
重複執行偵測:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位6輸出0(低電位)讓LED亮紅色,並彈奏音符。
否則就讓腳位6輸出1(高電位),讓LED不要亮紅色。
[藍]腳色:
[腳位5數位輸出1],設定數位腳5為輸出高電位(LED不要亮藍色)。
[設定樂器為1],設定樂器為鋼琴。
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就讓腳位5輸出0(低電位)讓LED亮藍色,並彈奏音符。
否則就讓腳位5輸出1(高電位),讓LED不要亮藍色。
程式下載:3色LED音樂.sb2
四、RGB三色LED調色
當碰到畫面上的紅、黃、綠色圖案時,LED燈對應的顏色亮度會改變,同時發出音樂聲音,調整RGB(紅、綠、藍)的不同亮度,就可以混成各種不同的顏色。
利用PWM模擬不同的電壓輸出,控制數位腳位5、6、7的類比輸出(PWM),來控制LED三種顏色的亮度,控制混成的顏色。
因為這是共陽極RGB LED,共用的正極已經內接了,數位腳位D5、D6、D7預設是低電位(GND),所以接上就形成通路,LED亮燈。
當類比輸出為255(3.3V)時LED熄滅,類比輸出為0(0V)時LED亮。
在舞台背景畫出漸暗、漸亮(因為不能直接輸入中文,可以利用繪圖軟體製作圖片,再匯入,舞台大小為寬480像素、高360像素)。
製作紅、綠、藍三個變數,來控制RGB顏色亮度。
製作6個顏色腳色,碰觸後分別增加或減少LED的亮度變數。
紅、綠、藍腳色代表碰觸後變數值減少(變亮),圖案放右邊;紅暗、綠暗、藍暗腳色代表碰觸後變數值增加(變暗),圖案放左邊。
為了區別漸暗和漸亮,設定樂器為1(鋼琴,代表漸亮)和樂器12(長笛,代表漸暗),讓碰觸時發出的樂器聲音不一樣。
將變數值放中間可以觀察變數的改變情形。
數值愈小愈亮,數值愈大愈暗。255是全暗,0是全亮。
[綠]腳色:
[腳位7類比輸出255],設定腳位7為類比輸出255(LED不要亮綠色)。
[將視訊設定為(開啟)],啟動視訊攝影機。
[設定視訊透明度為50%],設定視訊影像透明度。
[設定樂器為1],設定樂器為鋼琴。
[設定變數(綠)為255],將亮度變數一開始設定為255(暗)
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數綠改變 -10 ] (變亮), [ 腳位7類比輸出(綠) ] ,並彈奏音符。
[如果 (綠) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[紅]腳色:
[腳位6類比輸出255],設定腳位6為類比輸出255(LED不要亮紅色)。
[設定樂器為1],設定樂器為鋼琴。
[設定變數(紅)為255],將亮度變數一開始設定為255(暗)
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數紅改變 -10 ] (變亮), [ 腳位6類比輸出(紅) ] ,並彈奏音符。
[如果 (紅) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[藍]腳色:
[腳位5類比輸出255],設定腳位5為類比輸出255(LED不要亮藍色)。
[設定樂器為1],設定樂器為鋼琴。
[設定變數(藍)為255],將亮度變數一開始設定為255(暗)
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數藍改變 -10 ] (變亮), [ 腳位5類比輸出(藍) ] ,並彈奏音符。
[如果 (藍) 變數 > 0 ],因為類比輸出(PWM)的值在0~255之間,怕變數變成負數,所以增加這個判斷。
[綠暗]腳色:
[設定樂器為12],設定樂器為長笛。
重複執行偵測:
[video(動作)on(這個腳色)],判斷綠色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數綠改變 10 ] (變亮), [ 腳位7類比輸出(綠) ] ,並彈奏音符。
[如果 (綠) 變數 <255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
[紅暗]腳色:
[設定樂器為12],設定樂器為長笛。
重複執行偵測:
[video(動作)on(這個腳色)],判斷紅色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數紅改變 10 ] (變亮), [ 腳位6類比輸出(紅) ] ,並彈奏音符。
[如果 (紅) 變數 <255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
[藍暗]腳色:
[設定樂器為12],設定樂器為長笛。
重複執行偵測:
[video(動作)on(這個腳色)],判斷藍色圖案是否有被碰到。
如果有碰到,數值會大於20,就 [ 將變數藍改變 10 ] (變亮), [ 腳位5類比輸出(藍) ] ,並彈奏音符。
[如果 (藍) 變數 <255 ],因為類比輸出(PWM)的值在0~255之間,怕變數大於255,所以增加這個判斷。
當碰到畫面上的紅、黃、綠色圖案時,LED燈對應的顏色亮度會改變,調整上面的RGB(紅、綠、藍)的不同亮度,就可以混成各種不同的顏色的光。
程式下載:3色LED(PWM).sb2
———————————-
相關連結:
DiFi 課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/100870/660551
WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433