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

roc

宜蘭縣國小資訊小站

您可能也會喜歡…