Arduino第37課四位數七段顯示器
四位數七段顯示器有4個七段顯示器,每個七段顯示器含小數點有8隻腳(註1),本來四個應該要有32隻腳,實際上如下圖只有12隻腳(註2)。
圖片來源:http://3.bp.blogspot.com/-E0z0AZehIQE/UhsIwPZq_jI/AAAAAAAAH2Q/Z1goRC2zZBQ/s320/Seg7x4.png
其中8隻腳控制七段顯示器(a、b、c、d、e、f、g、h),還有4隻腳(0、1、2、3)代表想要控制哪一個(位)七段顯示器。
這裡選用的是共陰極四位數七段顯示器,要控制(亮)的那一個腳位為0(低電位),其他3個為1(高電位)。
因為有4個七段顯示器,我們可以使用掃描的方式,輪流顯示每一個七段顯示器,只要掃描速度夠快,因為視覺暫留原理,就會以為同時顯示。
專業上會直接寫程式控制,速度較快,效果比較好,這裡因為scratch程式的限制,效果並不好,這裡以讓學生練習運算思維為主。
————————–
接線圖:
參考註1及上圖,將(a、b、c、d、e、f、g、h)腳接上電阻,再依序接到arduino的數位腳D2到數位腳D9。
再將四位數七段顯示器的(0、1、2、3)接到arduino的數位腳D10到數位腳D13。
————————————-
一、基本測試(輪流亮)
讓各節點輪流亮起來。
先製作一個變數[顯示]。
因為要從數位腳2開始,所以[設定變數(顯示)為2]
接下來再依序讓各腳位輸出1(高電位),節點亮;輸出0(低電位),節點滅。
程式下載: 輪流亮.sb2
二、各節點輪流亮
上面程式沒有指定要亮那一個(位)七段顯示器,所以4個(位)七段顯示器的同一個節點會同時亮。
加上指定那一個(位)七段顯示器,讓每次只亮一個節點,輪流亮起來。
主要程式跟上面一樣。
增加一個[同時輸出]積木,同時控制四個腳位輸出,控制四位數七段顯示器的4隻腳(0、1、2、3)代表想要控制哪一個七段顯示器動作,要控制的那一個腳位為0(低電位),其他3個為1(高電位)。
輪流讓每一位數的每一個節點亮起來。
程式下載:輪流亮(修正).sb2
延伸:
設計個節點輪流顯示程成一個圖案,例如:繞外圈,S型。
三、輪流顯現0~9的數字
用[製做積木]指令來讓顯示器顯示字元。
[顯示字元]積木:用[如果…就…],來判斷要顯示的字元,7段顯示器每一個腳位要亮或暗。
使用[7段顯示]積木,讓7段顯示器的8個腳位同時輸出高電位(全亮),或低電位(全滅)
然後重複輪流顯示各個字元。
加上等待0.5秒,可以清楚的觀察每個字。
主程式使用[同時輸出]積木,同時控制四個腳位輸出,控制四位數七段顯示器的4隻腳(0、1、2、3)代表想要控制哪一個七段顯示器動作,要控制的那一個腳位為0(低電位),其他3個為1(高電位)。
輪流讓每一位數的每一個節點亮起來。
程式下載:輪流數字.sb2
延伸:
1.上面的[顯示積木]裡面有關使用[7段顯示]積木,裡面的設定其實有點小問題,可以再修正。
2.請將上面的程式修改的更精簡一點(顯示字元積木可以再修正)
四、輪流顯現0~9的數字(輪流數字掃描)
用[製做積木]指令來讓顯示器顯示字元。
定義[個位]積木:
使用[同時輸出]積木,同時控制四個腳位輸出,控制四位數七段顯示器的4隻腳(0、1、2、3)代表想要控制哪一個七段顯示器動作,要控制的那一個腳位為0(低電位),其他3個為1(高電位)。
用[如果…就…],來判斷要個位數(最右邊)顯示的字元,7段顯示器每一個腳位要亮或暗。
使用[7段顯示]積木,讓7段顯示器的8個腳位同時輸出高電位(全亮),或低電位(全滅)
同樣的定義[十位]積木、定義[百位]積木、定義[千位]積木來顯示其他位數字。
然後重複輪流顯示各個字元。
輪流讓每一位數的每一個節點亮起來。
程式下載:輪流數字(掃描).sb2
延伸:
稍微修正一下,只用2位數,搭配攝影機的效果,看起來就有點連續了。
程式下載:輪流數字(掃描)修正.sb2
五、超音波測距儀
使用[超音波感測器]來測量距離,四位數七段顯示器來顯示距離。
接線圖:
四位數七段顯示器接線圖同上面。
超音波感測器的Vcc接5V,Gnd接地,Echo接腳位14(A0),Trig接腳位15(A1)
原理請參考WFduino第十二課(超音波感測器)http://blog.ilc.edu.tw/blog/blog/868/post/97509/639095
因為上課時的距離大概在100公分以內,所以範例程式只做2位數顯示(個位、十位)。
1.先清除四位數七段顯示器上原有的內容
2.用[製做積木]指令來讓顯示器顯示字元。
定義[個位]積木:
使用[同時輸出]積木,同時控制四個腳位輸出,控制四位數七段顯示器的4隻腳(0、1、2、3)代表想要控制哪一個七段顯示器動作,要控制的那一個腳位為0(低電位),其他3個為1(高電位)。
用[如果…就…],來判斷要個位數(最右邊)顯示的字元,7段顯示器每一個腳位要亮或暗。
使用[7段顯示]積木,讓7段顯示器的8個腳位同時輸出高電位(全亮),或低電位(全滅)
3.同樣的定義[十位]積木來顯示十位的數字。
然後重複輪流顯示各個字元。
4.使用 [HCSR超音波感測器,Echo在腳位(14)Tring在腳位(15)]指令可以偵測感測器的偵測結果。
4.將偵測結果(測量到的距離是幾公分),做數學轉換後,顯示在7段顯示器上。
程式下載:超音波測距儀.sb2
六、模擬十字路口(紅燈時,顯示倒數計時)
配合第四課(LED紅綠燈),將螢幕顯示倒數計時改成由四位數七段顯示器顯示。
七、計數顯示器
配合第八課(按鍵)或第十五課(主動式紅外線感測器)做計數器的顯示。
————————–
註1:
七段顯示器(Seven-segment display):為常用顯示數字的電子元件,七段顯示器由四個直向、三個橫向及上右下角一點的發光二極體組成,七段顯示器分為共陽極及共陰極。
詳細原理及說明請看:
http://thats-worth.blogspot.tw/2014/06/arduino-7-seven-segment-display-1.html
共陰極七段顯示器接線圖如下:下圖中P(小數點)未接,但是我們可以同前面加電阻接D9,讓小數點也可以亮起來。
下表列出對應顯示 0~9 的數字及HELLO,各接腳的明亮狀態,這邊用 1 表示高電位,0 表示低電位。
注意:下表的A~G排列順序是由右到左
(以上圖片來源:http://thats-worth.blogspot.tw/2014/06/arduino-7-seven-segment-display-1.html)
如前面所說將共陰極七段顯示器的各腳,分別接上220歐姆電阻後,再接到D2~D8。
顯示器中間的COM腳接GND。
註2:參考資料
http://yehnan.blogspot.tw/2013/08/arduino_26.html
———————————-
相關連結:
新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