Arduino第八課(按鍵)
建議直接改用第34課按鍵(上拉電阻)上課,http://blog.ilc.edu.tw/blog/blog/868/post/97509/685217
按鍵:可以控制通路或斷路的開關,一般使用為按下為通路,放開為斷路。
小學生建議用2腳的,比較不會接錯方向。(最近發現針腳容易折斷)
一、直接控制LED亮或熄滅
利用Arduino的5V供電,經過按鍵接LED再接電阻再接GND,形成一個迴路
按下開關,形成通路,LED亮
鬆開開關,LED熄滅
注意:
如果是四腳的開關 ,請學生要注意方向,翻開背面,以中間的溝槽為分界,AB相連,CD相連,AB和CD不相通。
如果沒有溝槽的,直接如上面的接線圖插入麵包板試試看,如果還沒按按鍵就會亮,那就拔起來轉90度再插下去,試試看是否變成需要按按鍵才會亮。
二、運用Arduino的數位輸入來控制LED亮或滅
按鍵一邊接5V,另一邊接10K歐姆電阻再接地(GND),中間拉一條訊號線到數位腳D8當作判斷輸入訊號。
數位腳D11接紅色LED正極,再串接220歐姆電阻後接地(GND)。
加上[說(讀取數位腳位(8))],可以從螢幕上看到讀取(輸入)的結果。
如果按鍵按下時,數位腳D8得到1(高電位),這時就輸出一個高電位(1)給數位腳D11,讓紅色LED亮。
否則(沒有按鍵按下時),數位腳D8是0(低電位),這時就設定腳為11為低電位,讓紅色LED熄滅。
程式下載:按鍵(數位).sb2
延伸:
1.請同學思考[重複執行]這個積木可不可以去掉?
2.試試看去掉後的執行結果有什麼不同?
3.加上蜂鳴器,讓按下時蜂鳴器會響。
三、運用Arduino的類比輸入來控制LED亮或滅
按鍵一邊接5V,另一邊接10K歐姆電阻再接地(GND),中間拉一條訊號線到類比腳A0當作判斷輸入訊號。
數位腳D11接紅色LED正極,再串接220歐姆電阻後接地(GND)。
因為程式修正,以後用到[讀取類比腳位A0]積木時,請在[當綠旗被點一下]積木下方增加[腳位A0模式設為INPUT]積木。
如果按鍵按下時,類比腳A0得到1023,這時就輸出一個高電位給數位腳D11,讓紅色LED亮。
否則(沒有按鍵按下時),類比腳A0得到0,這時就設置數位腳D11為低電位,讓紅色LED熄滅。
程式下載:按鍵(類比).sb2
註:
1.這裡多一個[說類比腳位(A)0]的指令,讓我們可以看到類比腳A0的數值變化。
2.類比腳A0~A5一般用來接受類比電壓輸入,接收後顯示的值為0~1023
四、兩段式開關
只有一個按鍵,第一次按下代表啟動,第二次按下代表停止。
第一次按下時LED燈亮,第二次按下時LED燈滅。
程式下載:兩段式開關.sb2
延伸:
兩顆LED,按下按鍵,其中一個LED亮,第二次再按下時LED燈滅,換另一個LED亮。兩顆LED輪流亮。
程式下載:兩段式開關(紅綠輪流).sb2
五、按鍵啟動音樂
按鍵後LED亮,並使用電腦喇叭發出聲音
1.彈奏鼓聲
重複執行:判斷按鍵是不是有按下按鍵,讀取數位腳位(8)的值。
如果按鍵按下時(數位腳位8的值=1),就輸出一個高電位給數位腳D11,讓紅色LED亮,並[彈奏鼓聲]
可以選擇發出不同的[鼓聲]及節拍。
程式下載:按鍵(鼓).sb2
2.打擊樂
將程式的[彈奏鼓聲]改為[播放聲音],可以選擇發出不同的[聲音]
選取程式的[音效],點選新聲音的小喇叭圖示
選擇要播放的聲音檔(可以先點檔案內的小三角形試聽),按[確定]。
這次選敲鑼。
重複執行:判斷按鍵是不是有按下按鍵。
如果按鍵按下時(數位腳位8的值=1),就輸出一個高電位給數位腳D11,讓紅色LED亮,並發出鑼聲的音效。
程式下載:按鍵(打擊樂).sb2
如果連續多次按下按鍵,會發現鑼聲被中斷變成不像鑼聲。
改成[播放音效…..直到播放完畢],可以讓鑼聲完整的播完。
程式下載:按鍵(打擊樂1).sb2
3.播放音樂
選擇長一點的音效,變成按下按鍵播放一首音樂。
程式下載:按鍵(音樂).sb2
4.設定樂器
如果將程式的[播放音效],修改為使用[設定樂器為..],加上[彈奏音符……]的指令,就可以發出更悅耳的聲音了。
使用[設定樂器為(…)],可以選擇不同的樂器
使用[彈奏音符(音階)(…)拍,來設定(音階)和節拍。
程式下載:按鍵(樂器).sb2
六、改變螢幕上主角的造形
主程式跟上面一樣,再多加[下一個造型]及[播放音效]指令,當按下按鍵,播放音效並改變主角造型。
加上[移動5步],讓小貓看起來像在走路。
程式下載:改變造形.sb2
七、改變螢幕上主角的動作
直接用按鍵控制螢幕主角動作。
增加錄音效果
1.點選[音效],再點[麥克風]圖樣,再點黑色圓點開始錄音
圓點變成紅色,開始錄音,錄好,再按一下,完成錄音。
按[編輯]可以作一些簡單的剪輯。
不斷的判斷按鍵是不是有按下。
如果按鍵沒被按下,就說 [請按按鍵!]。
如果按鍵按下時,就說[啊!我被按了],並做魚眼效果及播放錄音音效。
程式下載:改變動作.sb2
延伸:可再增加聲音效果,或變換造型,或移動….
八、搶答
將三組學生做的按鍵電路組合起來,更換LED為紅、黃、綠三顆LED。
判斷用的訊號線分別接D6、D7、D8
提供LED正極的杜邦線分別接D9、D10、D11
程式設計請參考第二課
九、按鍵控制LED+蜂鳴器
按鍵後LED亮而且蜂鳴器發出一聲Do
選擇上面的類比或數位輸入方式連接線路,另外再多接一個蜂鳴器線路發出聲音。
程式設計請參考上面二、三和第七課(蜂鳴器)
程式下載:
十、按鍵電子琴
將上面五組學生做的按鍵電路組合起來,更換LED為紅、黃、綠、黃、綠五顆LED。
判斷用的訊號線分別接D2、D3、D4、D5、D6
提供LED正極的杜邦線分別接D7、D8、D9、D10、D11
程式設計請參考前面。
先判斷D2是否有訊號,如果按了第一個Do按鍵,D2就有訊號,執行下面的指令。
讓黃色LED亮(D7高電位),接著讓蜂鳴器播出一個二分之一拍的Do,然後LED熄滅。
其他音階判斷也是一樣。
不斷的判斷哪一個按鍵被按下,就發出相對應頻率的聲音。
十一、創作
將上面的裝置增加組數,就可以發出更多的音階。
使用適合的按鍵開關,將蜂鳴器改成大喇叭,加一些裝飾,就成了第一課看到的[音樂樓梯]了。
https://youtube.com/watch?v=SByymar3bds
註:要真的實用還有一些細節要改進,例如:接線要堅固,加裝擴音線路才能讓喇叭發出夠大的聲音……….
英語單字學習機
十二、計數器
按一次按鍵,計數器加1,計算按鍵次數
做一個計數器變數。
一開始先將變數計數器值設為0
重複檢查是否按下按鍵,如果按下按鍵時,數位腳D8會輸入一個高電位,就亮燈並將計數器的值加1
程式下載:計數器.sb2
這個程式跟我們的需求是不符的,按一下會跳很多次。
因為按下去以後,數位腳D8會一直輸入一個高電位直到放開,所以計數器的值就一直加上去了。
要如何修正呢?
改用 [等待…] 指令來控制
程式下載:計數器1.sb2
延伸:
1.增加倒數計時功能,限制時間內的按鍵次數才有效
2.比賽看哪一組在時間內的按鍵按最多
3.將按鍵換成水銀開關,夾在頭上變成搖頭晃腦比賽
十三、打地鼠
組合不同顏色LED和按鍵,看到那一個顏色的燈亮,就按那個燈旁的按鍵,按對加分,按錯扣分。再加上計分和時間限制(倒數計時)
十四、反應測試
測試你的神經反應:
準備好時,按下按鍵,隨機時間後LED亮,看到亮燈,要立刻按下按鍵。螢幕上顯示你看到亮燈到按下按鍵的反應時間。
按鍵一邊接5V,另一邊接10K歐姆電阻再接地(GND),中間拉一條訊號線到數位腳D8當作判斷輸入訊號。
數位腳D11接紅色LED正極,再串接220歐姆電阻後接地(GND)。
按綠旗後的說明
開始先出現主題及說明頁,等待按鍵開始。
如果按下按鍵,數位腳D8收到高電位就開始,小貓出現。
要鬆開按鍵才開始隨機選擇亮燈時間,計時器歸零,重新計時,並顯示時間,一直到再一次按下按鍵,停止程式。
程式下載:反應測試.sb2
延伸:
加裝一組蜂鳴器。
準備好時,按下按鍵,隨機時間後LED亮,並且蜂鳴器發出聲音,看到亮燈或聽到聲音,要立刻按下按鍵。螢幕上顯示你看到亮燈或聽到聲音到按下按鍵的反應時間。
十五、電子骰子
按下按鍵,LED開始變化不同顏色,鬆開按鍵,停在某一顏色。按鍵按下時間不同,最後停止時的顏色不同。
接RGB三色LED和一組按鍵。
按鍵電路中間拉一條訊號線到數位腳D8當作判斷輸入訊號,RGB三色LED分別接D9、D10、D11控制顏色變化。
程式開始先設定數位腳8~11的功能(輸入或輸出)
接著不斷的偵測有沒有按下按鍵。
如果有按下按鍵就先關閉上次亮的顏色,然後隨機讓D9、D10、D11其中一個輸出高電位,那個顏色就亮起來。
鬆開按鍵時,D8沒有訊號輸入,燈就停止隨機亂閃顏色。
程式下載:電子骰子.sb2
延伸:
1.比大小:紅色代表1,綠色代表2,藍色代表3,看看誰骰的比較大。
2.改接7顆LED,排成骰子的點數形狀,模擬擲骰子的情形亮不同的燈。
十六、顏色猜猜機
設計一個遊戲機器,讓玩家猜顏色。
在螢幕上先出現三個顏色讓玩家選擇(猜),選好後玩家按下麵包板上的按鍵,三個顏色的LED燈開始亂數閃爍,鬆開按鍵時,某一個顏色的燈恆亮,如果猜中顏色,就說[猜對了],如果猜錯,就說[猜錯了]。
請參考 http://blog.ilc.edu.tw/blog/blog/868/post/97509/639091
六年級林辰皓、吳至勤同學作品
六年級藍培誠、四年級李盺澤同學作品。
十七、平交道緊急按鈕
上、下紅燈模擬平交道燈號,中間的綠、紅燈是火車燈號,緊急時按下「緊急按鈕」,火車燈號轉為紅燈,火車司機看到就趕快將火車停止。
六年級藍培誠同學作品。
———————————-
相關連結:
初級班課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433
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/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 Chrome App
http://blog.ilc.edu.tw/blog/blog/868/post/97509/637303
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雲端外部感應器