DiFi第九課按鍵(上)

按鍵:可以控制通路或斷路的開關。

一、運用類比輸入來控制LED亮或滅

按下按鍵,RGB LED綠燈,放開按鍵,RGB LED熄滅

類比腳A0用來接受類比電壓輸入,接收後顯示的值為1~1024,輸入端GND(低電位)時值為1,輸入端3.3V(高電位)時值為1024

DiFi學習板已經內建了上拉電阻線路(註),所以按鍵未按下(開關未接通)時輸入值為1024,按鍵按下(開關接通)時輸入值為1

拿一條麵包線,一端接類比腳A0當作訊號輸入,一端接板子上寫[KEY]的插孔(上圖標h),上圖標示[H]就是 [ 按鍵 ]

再拿一條麵包線,一端接數位腳D7,一端接板子上寫[LEDG]的插孔(上圖標d),由數位腳位D7來控制輸出高電位(3.3V)或低電位(0V),燈亮或滅。

預設INPUT是低電位,但是DiFi未按下按鍵應該是高電位,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1024)

[腳位(A)0模式設為INPUT],設定A0為輸入。

[腳位7模式設為OUTPUT],設定腳位7設定為OUTPUT

一開始腳位7先輸出1,讓LED熄滅。(共陽極LED)

重複執行,讀取A0的值,做動作。

[說讀取類比腳位(A)0]的指令,讓我們可以看到類比腳A0的數值變化。

如果沒有按鍵時,類比腳A0得到1024,這時數位腳D7就輸出高電位,讓LED熄滅。(共陽極LED)

否則(按下按鍵時),類比腳A0得到1,這時就設置數位腳D7為低電位,讓綠色LED亮。

程式下載按鍵(類比).sb2

延伸:

增加一條麵包線連接數位腳位8和蜂鳴器,讓按下按鍵時蜂鳴器也會同時響。

二、運用數位輸入來控制LED亮或滅

按下按鍵,RGB LED綠燈,放開按鍵,RGB LED熄滅

數位腳D2用來接受數位輸入,接收後顯示的值為0或1,輸入端GND(低電位)時值為0,輸入端3.3V(高電位)時值為1

DiFi學習板已經內建了上拉電阻線路(註),所以按鍵未按下(開關未接通)時輸入值為1,按鍵按下(開關接通)時輸入值為0

拿一條麵包線,一端接數位腳D2當作訊號輸入,一端接板子上寫[KEY]的插孔(上圖標h),上圖標示[H]就是 [ 按鍵 ]

再拿一條麵包線,一端接數位腳D7,一端接板子上寫[LEDG]的插孔(上圖標d),由數位腳位D7來控制輸出高電位(3.3V)或低電位(0V),燈亮或滅。

預設INPUT是低電位,但是DiFi未按下按鍵應該是高電位,需要在設定之後加一個等待時間,讓程式有時間設定為高電位(1)

[腳位2模式設為INPUT],設定數位腳2為輸入。

[腳位7模式設為OUTPUT],設定腳位7設定為OUTPUT

一開始腳位7先輸出1,讓LED熄滅。(共陽極LED)

重複執行,讀取腳位2的值,做動作。

[說讀取類比腳位2]的指令,讓我們可以看到數位腳2的數值變化。

如果沒有按鍵時,數位腳2得到1,這時數位腳D7就輸出高電位,讓LED熄滅。(共陽極LED)

否則(按下按鍵時),數位腳2得到0,這時就設置數位腳D7為低電位,讓綠色LED亮。

程式下載按鍵(數位).sb2

延伸:

1.請同學思考[重複執行]這個積木可不可以去掉?

2.試試看去掉[重複執行]這個積木後的執行結果有什麼不同?

3.增加一條麵包線連接數位腳位8和蜂鳴器,讓按下按鍵時蜂鳴器也會同時響。

三、彈奏鼓聲

按鍵後LED亮,並使用電腦喇叭發出鼓聲

重複執行:判斷按鍵是不是有按下按鍵,讀取數位腳位(2)的值。

如果按鍵按下時(數位腳位2的值=0),就輸出一個0(低電位)給數位腳7,讓LED亮綠色,並[彈奏鼓聲]

可以選擇發出不同的[鼓聲]及節拍。

程式下載按鍵(鼓).sb2

四、打擊樂

將程式的[彈奏鼓聲]改為[播放聲音],可以選擇發出不同的[聲音]

選取程式的[音效],點選新聲音的小喇叭圖示

選擇要播放的聲音檔(可以先點檔案內的小三角形試聽),按[確定]。

這次選敲鑼。

重複執行:判斷按鍵是不是有按下按鍵。

如果按鍵按下時(數位腳位2的值=0),就輸出一個0(低電位)給數位腳7,讓LED亮綠色,並發出鑼聲的音效。

程式下載按鍵(鑼).sb2

五、打擊樂(修正)

如果按下按鍵不放開,會發現鑼聲被中斷變成不像鑼聲。

改成[播放音效…..直到播放完畢],可以讓鑼聲完整的播完。

程式下載按鍵(鑼)1.sb2

六、播放音樂

重複執行:判斷按鍵是不是有按下按鍵,讀取數位腳位(2)的值。

如果按鍵按下時(數位腳位2的值=0),就輸出一個0(低電位)給數位腳7,讓LED亮綠色,並播放音效。

選擇長一點的音效,變成按下按鍵播放一首音樂。

程式下載按鍵(音樂).sb2

七、播樂器聲音

如果將程式的[播放音效],修改為使用[設定樂器為..],加上[彈奏音符……]的指令,就可以發出更悅耳的聲音了。

使用[設定樂器為(…)],可以選擇不同的樂器

使用[彈奏音符(音階)(…)拍,來設定(音階)和節拍。

程式下載按鍵(樂器).sb2

八、改變主角造形

主程式跟上面一樣,再多加[下一個造型]及[播放音效]指令,當按下按鍵,播放音效並改變主角造型。

加上[移動5步],讓小貓看起來像在走路。

程式下載按鍵(造型).sb2

九、主角做特效

直接用按鍵控制螢幕主角做特效動作。

增加錄音效果

1.點選[音效],再點[麥克風]圖樣,再點黑色圓點開始錄音

圓點變成紅色,開始錄音,錄好,再按一下,完成錄音。

按[編輯]可以作一些簡單的剪輯。

   

不斷的判斷按鍵是不是有按下。

如果按鍵沒被按下,就說 [請按按鍵!]。

如果按鍵按下時,就說[啊!我被按了],並做魚眼效果及播放錄音音效。

程式下載按鍵(效果).sb2

延伸:

1.改用其他特效試試看。

2.可再增加聲音效果,或變換造型,或移動…….

十、演奏自編歌曲

按下按鍵就彈奏演奏自編歌曲。

主程式:

設定樂器種類,上圖[設定樂器為1] 是鋼琴。

重複執行:判斷按鍵是不是有按下按鍵,讀取數位腳位(2)的值。

如果按鍵按下時(數位腳位2的值=0),就輸出一個0(低電位)給數位腳7,讓LED亮綠色,並演奏自編歌曲。

否則就輸出一個1(高電位)給數位腳7,讓LED熄滅。

製作音樂積木:

因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。

如果想要變換樂器聲音,只要更改[樂器種類]就可以了。

以小星星為例,主要分成3段,各用了2次。

主程式變得很簡短。

註:如果使用[製作一個積木]來寫程式的好處就是程式比較有規律,修改、除錯都比較容易。

程式下載演奏歌曲(整首).sb2

十一、按鍵演奏歌曲

按下按鍵就彈奏一個單音,重複按下按鍵,開始演奏出一首完整的歌曲。

主程式:

設定樂器種類,上圖[設定樂器為1] 是鋼琴。

重複執行:演奏歌曲的音樂積木。

製作音樂積木:

[等待讀取數位腳位(2)=0],判斷按鍵是不是有按下按鍵,如果按下按鍵,就進行下一步[彈奏音符…….],發出一個音。

將歌曲音符編排好,當按下按鍵時,就彈奏一個音符。

這樣就可以依序將歌播完。

因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。

如果想要變換樂器聲音,只要更改[樂器種類]就可以了。

以小星星為例,主要分成3段,各用了2次。

主程式變得很簡短。

註:如果使用[製作一個積木]來寫程式的好處就是程式比較有規律,修改、除錯都比較容易。

程式下載按鍵演奏歌曲.sb2

延伸:

1.學生自由創作不同的音樂

2.如何加快音樂節奏?

3.增加一條麵包線連接數位腳位8和蜂鳴器,使用蜂鳴器來演奏樂曲。

————————–

註:

讀取資料時,常常因為受到環境雜訊的影響,會發生讀取訊號不穩定的現象(有時讀取到 HIGH 有時卻讀取到 LOW),造成讀取判斷錯誤。為了確保它在穩定的狀態,,必須接個上拉電阻或下拉電阻。

詳細說明請參考:http://blog.ilc.edu.tw/blog/blog/868/post/97509/656348

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

相關連結

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

roc

宜蘭縣國小資訊小站

您可能也會喜歡…