S3i第9課按鍵(上)
按鍵:可以控制通路或斷路的開關。(註)
微動開關、水銀開關、滾珠開關、磁簧開關等也都是同樣的原理,可以控制電路的通路或斷路,也都可以適用本課的教學及範例。
一、基本測試
iL學習板有2個開關,分別接數位腳位D12和類比腳位A2
A、按鍵模組1:[KEY1]
使用Jump直接將D12和12KEY連接,接線圖如下:
按鍵一邊接5V,另一邊接電阻再接地(GND),中間拉一條訊號線到數位腳D12當作判斷輸入訊號。
按下開關,形成通路,數位腳位D12讀到高電位(1),鬆開開關,變成斷路,數位腳位D12讀到低電位(0)。
WFduino預設腳位是OUTPUT,改設定成INPUT時需要在設定之後加一個等待時間,讓程式有時間轉換。
加上[說(讀取數位腳位(12))],可以從螢幕上看到讀取(輸入)的結果。
如果按鍵按下時,數位腳D12得到1(高電位)。
否則(沒有按鍵按下時),數位腳D12是0(低電位)。
延伸:
1.請同學思考[重複無限次]這個積木可不可以去掉?
2.試試看去掉後的執行結果有什麼不同?
3.加上LED指令,讓按下按鍵時LED會亮,放開按鍵時LED會熄滅。
4.加上蜂鳴器指令,讓按下按鍵時蜂鳴器會響。
B、按鍵模組2:[KEY2]
使用Jump直接將A2和KEY2連接,接線圖如下:
按鍵一邊接5V,另一邊接電阻再接地(GND),中間拉一條訊號線到類比腳位A2當作判斷輸入訊號。
按下開關,形成通路,類比腳位A2讀到高電位(1023),鬆開開關,變成斷路,類比腳位A2讀到低電位(0)。
加上[說(類比腳位(A2))],可以從螢幕上看到讀取類比腳A2的結果。
如果按鍵按下時,類比腳A0得到1023。
否則(沒有按鍵按下時),類比腳A0得到0。
延伸:
1.類比腳A0~A5一般用來接受類比電壓輸入,接收後顯示的值為0~1023。
實際測試結果,如果按鍵按下時,類比腳A0得到的值卻可能不是1023?
2.請同學思考[重複無限次]這個積木可不可以去掉?
3.試試看去掉後的執行結果有什麼不同?
4.加上LED指令,讓按下按鍵時LED會亮,放開按鍵時LED會熄滅。
5.加上蜂鳴器指令,讓按下按鍵時蜂鳴器會響。
二、運用數位輸入來控制LED亮或滅
按下[按鍵1][KEY1],黃色LED亮燈,放開按鍵,LED熄滅。
數位腳D12用來接受數位輸入,接收後顯示的值為0或1,輸入端低電位時值為0,輸入端高電位時值為1
由數位腳位D13來控制輸出高電位或低電位,讓黃色LED燈亮或滅。
[腳位(12)模式設為(INPUT)]:先設定要用到的腳位,數位腳位D12為INPUT(輸入)
[等待1秒],讓程式有時間轉換。
[重複無限次],[說(讀取數位腳位12)],讓我們可以看到數位腳12的數值變化。
如果按下按鍵時,數位腳12得到1,這時數位腳D13就輸出高電位,讓黃色LED亮。
否則(沒有按鍵時),數位腳12得到0,這時就設置數位腳D13為低電位,讓黃色LED熄滅。
延伸:
1.請同學思考[重複無限次]這個積木可不可以去掉?
2.試試看去掉[[重複無限次]這個積木後的執行結果有什麼不同?
3.使用JUMP連接數位腳位D6和蜂鳴器,讓按下按鍵時蜂鳴器也會同時發出聲音。
三、運用Arduino的類比輸入來控制LED亮或滅
按下[按鍵2][KEY2],黃色LED亮燈,放開按鍵,LED熄滅。
如果按鍵按下時,類比腳A2得到1023,這時就輸出一個高電位給數位腳D13,讓黃色LED亮燈。
否則(沒有按鍵按下時),類比腳A0得到0,這時就設置數位腳D13為低電位,讓黃色LED熄滅。
[腳位A(2)模式設為(INPUT)]:先設定要用到的腳位,類比腳位A2為INPUT(輸入)
[等待1秒],讓程式有時間轉換。
[重複無限次],[說(讀取類比腳位A2)],讓我們可以看到類比腳位A2的數值變化。
如果按下按鍵時,類比腳位A2得到1023,這時數位腳D13就輸出高電位,讓黃色LED亮。
否則(沒有按鍵時),類比腳位A2得到0,這時就設置數位腳D13為低電位,讓黃色LED熄滅。
註:
1.類比腳A0~A5一般用來接受類比電壓輸入,接收後顯示的值為0~1023。
實際測試結果,如果按鍵按下時,類比腳A0得到的值卻可能不是1023?
2.使用JUMP連接數位腳位D6和蜂鳴器,讓按下按鍵時蜂鳴器也會同時發出聲音。
四、彈奏鼓聲
按下[按鍵1][KEY1],黃色LED亮燈,並使用電腦喇叭發出鼓聲;放開按鍵,LED熄滅。
[重複無限次]:判斷按鍵是不是有按下按鍵,讀取數位腳位(12)的值。
如果按鍵按下時(數位腳位12獨到的值=1),數位腳13就輸出一個1(高電位),讓黃色LED亮,並[演奏節拍(2)(0.25)拍],彈奏(鼓聲)和(節拍)。。
可以選擇演奏不同的[節拍]。
五、打擊樂
按下[按鍵1][KEY1],黃色LED亮燈,並使用電腦喇叭發出鑼聲;放開按鍵,LED熄滅。
將程式的[演奏節拍(2)(0.25)拍]改為[播放聲音],可以選擇發出不同的[聲音]
選取程式的[音效],點選新聲音的小喇叭圖示
選擇要播放的聲音檔(可以先點檔案內的小三角形試聽),按[確定]。
這次選[bell cymbal(敲鑼)]。
[重複無限次]:判斷按鍵是不是有按下按鍵,讀取數位腳位(12)的值。
如果按鍵按下時(數位腳位12獨到的值=1),數位腳13就輸出一個1(高電位),讓黃色LED亮,並播放音效[bell cymbal(敲鑼)]。
六、打擊樂(修正)
如果按下按鍵不放開,會發現鑼聲被中斷變成不像鑼聲。
修正如下:
改成[播放音效(…..)到底],可以讓鑼聲完整的播完。
七、播放音樂
按下[按鍵1][KEY1],黃色LED亮燈,並使用電腦喇叭發出音樂;放開按鍵,LED熄滅。
主程式同上。
選擇長一點的音效,變成按下按鍵播放一首音樂。
延伸:
播放自己載入的音樂。
八、播樂器聲音
按下[按鍵1][KEY1],黃色LED亮燈,並使用電腦喇叭發出樂器的彈奏聲;放開按鍵,LED熄滅。
主程式同上。
使用[演奏樂器設為(…)],選擇不同的樂器
使用[彈奏音階(…)(…)拍],來設定(音階)和(節拍)。
九、改變主角造形
按下[按鍵1][KEY1],黃色LED亮燈,並讓主角(小貓)改變造型及移動;放開按鍵,LED熄滅,動作停止。
主程式跟上面一樣。
再多加[造型換成下一個]及[播放音效(meow)]指令,當按下按鍵,播放音效並改變主角造型。
加上[移動5步],讓小貓看起來像在走路。
十、向左走、向右走
按下[按鍵1][KEY1],黃色LED亮燈,並讓主角(小貓)改變造型及向左移動;
按下[按鍵2][KEY2],黃色LED亮燈,並讓主角(小貓)改變造型及向右移動;
放開按鍵,LED熄滅,動作停止。
使用[如果(…)那麼]來判斷,按下[按鍵1][KEY1]或[按鍵2][KEY2]
然後分別讓小貓向左走或向右走。
十一、主角做特效
按下[按鍵1][KEY1],黃色LED亮燈,並讓主角(小貓)改變效果;放開按鍵,LED熄滅。
增加錄音效果
1.點選[音效],再點[麥克風]圖樣,再點黑色圓點開始錄音
圓點變成紅色,開始錄音,錄好,再按一下,完成錄音。
按[編輯]可以作一些簡單的剪輯。
不斷的判斷按鍵是不是有按下。
如果按鍵沒被按下,就說 [請按按鍵!]。
如果按鍵按下時,就說[啊!我被按了],並做魚眼效果及播放錄音音效。
延伸:
1.改用其他特效試試看。
2.可再增加聲音效果,或變換造型,或移動…….
十二、演奏自編歌曲
按下按鍵就彈奏演奏自編歌曲。
主程式:
設定樂器種類,上圖[演奏樂器設為1] 是鋼琴。
[重複無限次]:判斷按鍵是不是有按下按鍵,讀取數位腳位(12)的值。
如果按鍵按下時(數位腳位12獨到的值=1),數位腳13就輸出一個1(高電位),讓黃色LED亮,並演奏自編歌曲。
否則就數位腳13輸出一個0(低電位),讓黃色LED熄滅。
製作音樂函式積木:
因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。
如果想要變換樂器聲音,只要更改[演奏樂器設為(…)]就可以了。
以小星星為例,主要分成3段,各用了2次。
主程式變得很簡短。
註:如果使用[製作一個函式積木]來寫程式的好處就是程式比較有規律,修改、除錯都比較容易。
十三、按鍵演奏歌曲
按下按鍵就彈奏一個單音,重複按下按鍵,就可以演奏出一首完整的歌曲。
主程式:
設定樂器種類,上圖[演奏樂器設為1] 是鋼琴。
製作音樂積木:
[等待直到(讀取數位腳位(12)=1)],判斷按鍵是不是有按下按鍵,如果按下按鍵,就進行下一步[彈奏音階(…)(…)拍],發出一個音。
將歌曲音符編排好,當按下按鍵時,就彈奏一個音符。
這樣就可以依序將歌播完。
因為歌曲常常有一些重複的曲段,所以用積木來編排,節省程式長度,比較簡潔。
如果想要變換樂器聲音,只要更改[演奏樂器設為(…)]就可以了。
以小星星為例,主要分成3段,各用了2次。
主程式變得很簡短。
註:如果使用[製作一個函式積木]來寫程式的好處就是程式比較有規律,修改、除錯都比較容易。
延伸:
1.學生自由創作不同的音樂
2.如何加快音樂節奏?
3.使用JUMP連接數位腳位D6和蜂鳴器,改成按下按鍵時使用蜂鳴器來演奏樂曲。
————————–
註:
微動開關、按鍵開關、磁簧開關等原理也都類似,可以控制電路的通路或斷路,也都可以參考本課的教學及範例。
水銀開關
資料來源:https://zh.wikipedia.org/wiki/%E6%B0%B4%E9%8A%80%E9%96%8B%E9%97%9C
水銀開關,又稱傾側開關,是電路開關的一種,以一接著電極的小巧容器儲存著一小滴水銀,容器中多數注入惰性氣體或直接真空。
注意:
水銀對人體及環境均有毒害,故此使用水銀開關時,請務必小心謹慎,以免破損導致水銀漏出;在不再使用時,也應該妥善處理。
滾珠開關:
可以控制通路或斷路的開關,也可用來偵測是否傾斜。
金屬小管子有兩隻腳,在管子內有一顆或2顆金屬球,當管子成直立狀態,也就是腳朝下時,金屬球會落下接觸管子內的兩個接觸點接通兩隻腳,形成通路,若管子傾斜到一定程度後,就會斷路。
圖片來源:https://bizweb.dktcdn.net/100/017/780/files/sw520.png?v=1457663311199
(圖片來源:https://www.google.com.tw/imgres?imgurl=http%3A%2F%2Fwww.blswitch.com%2FimageRepository%2Fbfbe8424-8c62-4274-b377-2e20941ac321.jpg&imgrefurl=http%3A%2F%2Fwww.blswitch.com%2Fpro%2FpmcId%3D22.html&docid=_TsMRczrkXut7M&tbnid=KN_apMOscuRCMM%3A&vet=10ahUKEwjT8pbstNDVAhXHVZQKHRfrBkEQMwgrKAgwCA..i&w=500&h=380&bih=633&biw=1280&q=%E6%BB%BE%E7%8F%A0%E9%96%8B%E9%97%9C&ved=0ahUKEwjT8pbstNDVAhXHVZQKHRfrBkEQMwgrKAgwCA&iact=mrc&uact=8 )
彈簧開關:
金屬小管子裡面,有一個導電彈簧及導電接腳,在晃動的時候,彈簧及導電接腳互相接觸,形成通路。
圖片來源:http://www.ksdkg.com/uploadfile/CKEditor/20093211504386.jpg
磁簧開關
(圖片來源:http://ming-shian.blogspot.tw/2013/01/blog-post.html )
–—————————–
相關連結:
S32E(Scratch3 to Esp8266)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/113127/750388
S3i(Scratch3 to arduino iL學習板)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/113128/750428
S3A(Scratch3 to Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/113129/750447
arduino iL學習板課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/111175/727272
WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433
新DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/104089/678192