宜蘭縣教育支援平台 會員登入 會員註冊 我的i教書

« 上一篇 | 下一篇 »

震動開關:
也稱為震動傳感器傾斜感測器,依構造可以分為:彈簧開關滾珠開關水銀開關。可以控制通路或斷路的開關,也可用來偵測是否傾斜。

水銀開關: 

滾珠開關:

彈簧開關:

微動開關、按鍵開關、磁簧開關等原理也都類似,可以控制電路的通路或斷路,也都可以參考本課的教學及範例。(註1)

一、直接控制LED熄滅

電路圖:

 

利用Arduino的5V供電,經過震動開關接LED再接電阻再接GND,形成一個迴路。

接線圖:

使用時,搖動開關,形成通路,LED亮;或斷路,LED熄滅。

二、上拉電阻原理

在Arduino上使用開關來控制電路,讀取資料時,如果直接使用[INPUT]指令輸入,常常因為受到環境雜訊的影響,會發生讀取訊號不穩定的現象(沒有動作卻有時讀取到 HIGH ,有時卻讀取到 LOW),造成讀取判斷錯誤。為了確保它在穩定的狀態,,必須接個上拉電阻下拉電阻。(註2)

上拉電阻:

如上圖,5V接電阻(一般接10Kꭥ),再接開關、接地,中間引出接數位腳D5輸入。

使用下面積木宣告

注意:

當開關未接通時,數位腳D5讀取到高電位(1),當開關接通時,數位腳D5讀取到低電位(0)。

----------------------------

其實arduino在數位腳位都已經內建了上拉電阻,只要使用下面的宣告[INPUT_PULLUP]

就可以取代上面的外接電阻,電路圖變成下面

       

接線圖:

開關可以直接接數位腳D5輸入,省去外接上拉電阻的麻煩 。

注意:

當開關未接通時,數位腳D5讀取到高電位(1),當開關接通時,數位腳D5讀取到低電位(0)。

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

搖動滾珠開關,LED亮燈或熄滅。

實作影片:

接線圖:

 

開關一邊接地(GND),另一邊接一條訊號線到數位腳D5當作判斷輸入訊號。

數位腳D13接紅色LED正極,再串接220歐姆電阻後接地(GND),顯示燈號。

先設定D5為輸入[INPUT_PULLUP]和D13為輸出[OUTPUT]。

加上[說(讀取數位腳位(5))],可以從螢幕上看到讀取(輸入)的結果。

如果開關接通時,數位腳D5得到0(低電位),這時就給數位腳D13輸出一個高電位(1),讓紅色LED亮。

否則(沒有開關接通時),數位腳D5是1(高電位),這時就設定腳為13為低電位,讓紅色LED熄滅。

程式下載開關.sb2

延伸

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

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

3.加上蜂鳴器,讓按下時蜂鳴器會響。

四、彈奏鼓聲

搖動滾珠開關讓LED亮,並使用電腦喇叭發出鼓聲。

重複執行:判斷開關是否接通,讀取數位腳位(5)的值。

如果開關接通時(數位腳位3的值=0),就輸出一個1(高電位)給數位腳13,讓LED亮,並[彈奏鼓聲]

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

程式下載開關(鼓).sb2

五、打擊樂(鑼)

搖動滾珠開關讓LED亮,並使用電腦喇叭發出音樂聲

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

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

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

這次選敲鑼。

重複執行:判斷開關是否接通。

如果開關接通時(數位腳位5的值=0),就輸出一個1(高電位)給數位腳13,讓LED亮,並發出鑼聲的音效。

程式下載開關(鑼).sb2

六、打擊樂(修正)

如果開關一直接通,會發現鑼聲被中斷變成不像鑼聲。

修正如下:

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

程式下載開關(鑼)修正.sb2

七、播放音樂

搖動滾珠開關讓LED亮,並使用電腦喇叭發出scratch音樂聲或錄音。

重複執行:判斷開關是否接通,讀取數位腳位(5)的值。

如果開關接通時(數位腳位5的值=0),就輸出一個1(高電位)給數位腳13,讓LED亮,並播放音效。

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

程式下載開關(音樂).sb2

八、播放樂器聲音

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

設定腳位5為[上拉電阻輸入]。

預設腳位5為[輸出],加上等待0.5秒讓程式轉換。

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

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

程式下載樂器.sb2

九、改變主角造形

搖動滾珠開關讓LED亮,並讓小貓改變造型移動,像走路一樣。

設定腳位5為[上拉電阻輸入]。

預設腳位5為[輸出],加上等待0.5秒讓程式轉換。

主程式跟上面一樣,再多加[下一個造型]及[播放音效...到底]指令,當搖動開關,播放音效並改變主角造型。

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

程式下載造型1.sb2

感覺小貓走路卡卡的,不連續

請再檢查程式讓小貓可以像下面影片一樣,連續移動。

將[播放音效...到底]指令改成[播放音效],就可以連續移動了。

可是聲音變成怪怪的囉,為什麼?

程式下載造型.sb2

十、主角做特效

搖動開關控制螢幕主角做特效動作。

增加錄音效果

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

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

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

重複判斷開關是否接通?

如果開關沒有接通,就說 [請搖動開關!]

如果開關接通時,就說[啊!我變形了!],並做魚眼效果及播放錄音音效。

程式下載效果.sb2

延伸

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

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

十一、演奏自編歌曲

搖動開關就彈奏演奏自編歌曲。

主程式:

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

重複執行:判斷開關是否接通,讀取數位腳位(5)的值。

如果按鍵按下時(數位腳位5的值=0),就輸出一個1(高電位)給數位腳13,讓LED亮,並演奏自編歌曲。

否則就輸出一個0(低電位)給數位腳13,讓LED熄滅。

製作音樂積木:

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

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

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

主程式變得很簡短。

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

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

十二、搖動演奏歌曲

搖動開關接通就彈奏一個單音,一直接通就一直演奏,斷開就停止演奏。

主程式:

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

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

製作音樂積木:

[等待讀取數位腳位(5)=0],判斷開關是否有接通,如果開關接通,就進行下一步[彈奏音符.......],發出一個音。

將歌曲音符編排好,當開關接通時,就彈奏一個音符。

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

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

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

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

主程式變得很簡短。

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

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

延伸

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

2.如何加快音樂節奏?

3.增加蜂鳴器,改成使用蜂鳴器來演奏樂曲。

十三、計數器

搖動開關一次,計數器加1,計算搖動開關次數。

建立一個變數 [ 計數器 ]。

一開始先將變數 [ 計數器 ] 值設為0。

重複執行:判斷開關是不是有接通,讀取數位腳位(5)的值。

如果開關接通時(數位腳位5的值=0),就輸出一個1(高電位)給數位腳13,讓LED亮,並將計數器的值加1

程式下載計數器.sb2

十四、計數器(修正)

上面的程式跟我們的需求是不符的,如果開關一直接通,變數就會一直累加。。

因為開關一直接通,數位腳5會一直收到低電位直到放開,所以計數器的值就一直累加上去了。

要如何修正呢? 

[等待讀取數位腳5=0] ,等待開關接通後就亮燈,並讓計數器的值加1。

[等待讀取數位腳5=1],等開關斷路後就關燈。

重複執行上面的步驟。

程式下載計數器.sb2

延伸

1.增加倒數計時功能,限制時間內的看誰搖動開關最多次。

2.將滾珠開關綁在腳上當成計步器,紀錄走路次數。

十五、賽跑遊戲

螢幕上出現小貓、女孩、馬一起賽跑,看看誰先跑到終點?

使用三個滾珠開關當計步器,三個人各在腳上綁一個滾珠開關,各代表一個腳色,一起跑步,螢幕上的腳色也一起跟著跑,看看誰先跑到終點?

接線圖:

 

 

3個滾珠開關,一邊接地,另一邊各別接到數位腳位D5、D6、D7,當成輸入判斷訊號。

 

 

腳色貓程式:

設定腳位5為[上拉電阻輸入]。

預設腳位5為[輸出],加上等待0.5秒讓程式轉換。

建立[第幾名]清單來儲存比賽名次。

一開始先隱藏,以免擋住比賽選手(腳色)

[定位到X:...Y:... ],先讓選手就起始位置。

重複執行:判斷開關是不是有接通,讀取數位腳位(5)的值。

如果開關接通時(數位腳位5的值=0),就讓腳色往前移動5步。

如果碰到終點線,就在清單上登錄名字,停止這個腳色。

腳色女孩程式:

主要程式同上,將輸入改為腳位6控制。

腳色馬程式:

主要程式同上,將輸入改為腳位7控制。

程式下載賽跑1.sb2

十六、賽跑遊戲(修正)

上面程式如果開關一直接通,數位腳就會一直收到低電位直到放開,所以腳色就會

一直往前跑。

我們希望是搖動一次開關走一步,要如何修正呢? 

腳色貓程式:

設定腳位5為[上拉電阻輸入]。

預設腳位5為[輸出],加上等待0.5秒讓程式轉換。

建立[第幾名]清單來儲存比賽名次。

一開始先隱藏,以免擋住比賽選手(腳色)

[定位到X:...Y:... ],先讓選手就起始位置。

重複執行:判斷開關是不是有接通,讀取數位腳位(5)的值。

[等待讀取數位腳5=0] ,等待開關接通後,就讓腳色往前移動20步。

如果碰到終點線,就在清單上登錄名字,停止這個腳色。

[等待讀取數位腳5=1],等開關斷路後,再執行下一次判斷。

腳色女孩程式:

主要程式同上,將輸入改為腳位6控制。

腳色馬程式:

主要程式同上,將輸入改為腳位7控制。

程式下載賽跑2.sb2

十七、滑板衝浪(水平測量儀)

將滾珠開關平放在平衡板上,當平衡板沒有維持水平時,滾珠開關就會接通或斷開,可以由程式來判斷平衡板是否水平,做成平衡遊戲,畫面上可以同時出現小貓做平衡的畫面增加趣味性。

十八、搖頭晃腦方向燈

參考宜蘭縣國華國中學生作品,將滾珠開關裝在安全帽上,使用滾珠開關來控制方向燈。

--------------------------

註1:

微動開關、按鍵開關、磁簧開關等原理也都類似,可以控制電路的通路或斷路,也都可以參考本課的教學及範例。

水銀開關

資料來源: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 )

微動開關

註2:

資料來源:http://yehnan.blogspot.tw/2013/09/arduinotilt-ball-switch.html

註3:

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

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

----------------------------------

相關連結:

新DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/104089/678192

WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433  




 
 
 
用LINE傳送