Arduino第25課指撥開關(密碼鎖)
指撥開關(DIP SWITCH):
也稱為撥碼開關、DIP開關,是一種能用手指撥動,完成開關動作的小型開關。依照用途不同有很多種不同的形式,一般常用在遙控器內當成編碼開關。
下面這個常見的指撥開關,有 8 個切換開關,當開關為「ON」時,表示開關導通,當開關為「OFF」時,表示開關被關閉。
——————————
在Arduino上使用開關來控制電路,讀取資料時,常常因為受到環境雜訊的影響,會發生讀取訊號不穩定的現象(有時讀取到 HIGH 有時卻讀取到 LOW),造成讀取判斷錯誤。為了確保它在穩定的狀態,,必須接個上拉電阻或下拉電阻。(註)
上拉電阻:
如上圖,5V接電阻(一般接10Kꭥ),再接開關、接地,中間引出接數位腳D2輸入。
使用下面積木宣告
注意:
當開關未接通時,數位腳D2讀取到高電位(1),當開關接通時,數位腳D2讀取到低電位(0)。
—————————-
其實arduino在數位腳位都已經內建了上拉電阻,只要使用下面的宣告
就可以取代上面的外接電阻,電路圖變成下面
開關直接接數位腳D2輸入,省去外接上拉電阻的麻煩 。
注意:
當開關未接通時,數位腳D2讀取到高電位(1),當開關接通時,數位腳D2讀取到低電位(0)。
————————–
密碼開關
———————–
A、外接上拉電阻
利用指撥開關的接通與否來當成密碼開關。
一般常見的指撥開關,有 8 個切換開關,可以有2的8次方共256種變化,這裡只接4組,讓同學體驗。
指撥開關的每一個切換開關都同前面概要圖畫的一樣,一邊接地,另一邊接10kꭥ電阻再接5V,另外也要接數位腳D2~D5,接收輸入訊號。
1.製作2、3、4、5等四個變數,來存放讀取值,方便觀察讀取結果
2.使用[腳位(2)模式設為(INPUT)],宣告數位腳D2為輸入(接收訊號),其他D3~D5也是同樣宣告。
3.使用[腳位(11)模式設為(OUTPUT)],宣告數位腳D11為輸出。
4.接著重複執行讀取及判斷
[設定變數(2)為(讀取數位腳位(2)],設定變數2為數位腳D2讀取的值,其他D3~D5也是同樣的設定
如果變數值(讀取值)符合條件,數位腳D11就輸出1(高電位),LED燈就會亮,否則數位腳D11就輸出0(低電位),LED燈就會滅。
注意:
當開關未接通時,數位腳D2讀取到高電位(1),當開關接通時,數位腳D2讀取到低電位(0)。
程式下載:input.sb2
———————-
B、利用Arduino內建的上拉電阻
利用指撥開關的接通與否來當成密碼開關。
一般常見的指撥開關,有 8 個切換開關,可以有2的8次方共256種變化,這裡只接4組,讓同學體驗。
基本接法跟上面一樣,但是省去外接電阻,線路簡潔
指撥開關的每一個切換開關都同前面概要圖畫的一樣,一邊接地,另一邊接數位腳D2~D5,接收輸入訊號。
1.製作2、3、4、5等四個變數,來存放讀取值,方便觀察讀取結果。
2.使用[腳位(2)模式設為(INPUT_PULLUP)],宣告數位腳D2為上拉電阻輸入(接收訊號),其他D3~D5也是同樣宣告。
3.使用[腳位(11)模式設為(OUTPUT)],宣告數位腳D11為輸出。
4.接著重複執行讀取及判斷
[設定變數(2)為(讀取數位腳位(2)],設定變數2為數位腳D2讀取的值,其他D3~D5也是同樣的設定
如果變數值(讀取值)符合條件,數位腳D11就輸出1(高電位),LED燈就會亮,否則數位腳D11就輸出0(低電位),LED燈就會滅。
注意:
當開關未接通時,數位腳D2讀取到高電位(1),當開關接通時,數位腳D2讀取到低電位(0)。
程式下載:上拉電阻.sb2
延伸:
1.讀取數位腳位為什麼不要接D0、D1?要從D2開始的腳位來接?
2.為什麼平常沒按下開關D2讀取的是1(高電位)?按下開關D2讀取的是0(低電位)?
3.將數位腳D11輸出接線接到電鎖,就變成電子密碼門鎖了。
4.將數位腳D11輸出接線接到繼電器(第13課),就變成電子密碼開關了,可以控制家電用品。
5.將數位腳D11輸出改成使用 [ 伺服馬達為腳位(…)轉動角度為(…)度] 的指令積木也可以用來控制馬達的轉動角度。當輸入不同的密碼,可以轉動不同的角度,可以觸動不同的開關,做出不同的動作。(第11課)
7.小朋友想想看,指撥開關還有什麼用途?
——————
註:
參考資料 :https://zh.wikipedia.org/wiki/%E4%B8%8A%E6%8B%89%E7%94%B5%E9%98%BB
在數位電路中,上拉電阻(英語:Pull-up resistors)是當某輸入埠未連接設備或處於高阻抗的情況下,一種用於保證輸入訊號為預期邏輯電平的電阻元件。他們通常在不同的邏輯器件之間工作,提供一定的電壓訊號。
———————————————
相關連結:
新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
————————
為什麼要推Arduino初級班課程為正式課程?
A:
1.程式寫作如果結合外部感應器,可以達成簡單的自動控制功能,進一步讓學生創作一些作品改善生活或是增加樂趣。課程內容適合小孩或初學者,完成初級班課程後,發揮創意再加上市面上的各種感應器,就可以創造各種有用、有趣的作品,讓資訊課不再只是[電腦課]。
2.教育機會均等:適合國小五、六年級以上學生,全年級都上一個學期課的型態,讓全校學生都能接受基礎的Maker資訊課,讓家裡沒有電腦、沒錢上社團、科學班的學生享有平等的受教權。
3.本系列課程,材料便宜(初級班基本材料費每校只要幾千元),程式安裝簡便,學生學習容易(簡單的電子零件,搭配積木式拖拉來完成程式寫作),有完整的教材教案提供老師教學(老師只要依照課程示範,學生創意無限)。