S3i第15課七段顯示器
小學生運算思維能力較弱,可以直接改用第16課七段顯示器(新)上課,
http://blog.ilc.edu.tw/blog/blog/868/post/111175/728100
七段顯示器(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~D9。
顯示器中間的COM腳接GND。
iL學習板內建共陰極的七段顯示器,已經接好電阻,共用的負極也已經內接了。
使用Jump直接將第1排(紅色)7段顯示器的八支腳和第2排(黑色)arduino的數位腳位D2~D9依序連接,就會像上圖一樣。
一、基本測試
讓各節點輪流亮起來。
先製作一個變數[亮]。
因為要從數位腳2開始,所以[設定變數(亮)為2]
先用[重複8次],[腳位(亮)模式設為OUTPUT],來設定D2~D9為OUTPUT。
接下來再依序讓各腳位輸出1(高電位),節點亮;輸出0(低電位),節點滅。
延伸:
1.讓七段顯示器外圈LED輪流亮起來。
2.讓七段顯示器上面LED像口字形亮起來,再換下面LED像口字形亮起來,輪流亮。
3.自行設計圖形。
二、輪流出現上表所示的0~9 的數字
1.老師請學生思考如何讓七段顯示器能夠顯示數字?
2.老師說明:可以使用掃描的方式,讓七段顯示器的每一顆LED亮或不亮,眼睛因為視覺暫留的關係,就會以為有數字顯示。
A.直接顯示
用[重複8次],[腳位(顯示)模式設為OUTPUT],來設定D2~D9為OUTPUT。
然後用[製做積木]指令來讓顯示器顯示字元。
[清除顯示]積木:輪流將顯示器每一段都設為低電位,讓顯示器熄滅。
[顯示字元]積木:用[如果…就…]來判斷要顯示的字元,每一個腳位要亮或暗。
然後重複顯示各個字元。
這種寫法的執行效率並不好。
B.使用字串
用字串來表示字元中顯示器各段LED的亮或暗,L表示低電位,H表示高電位。例如:0除了第七腳低電位外,其他腳位都是高電位。
先將各字元變數該亮該暗的LED字串設置好。
注意:前面有一張列表所顯示的節點順序和這裡字元變數字串的順序剛好相反喔!
然後用[重複8次],[腳位(亮)模式設為OUTPUT],來設定D2~D9為OUTPUT。
然後用[製做積木]指令來讓顯示器顯示變數字元。
[清除顯示]積木:輪流將顯示器每一段都設為低電位,讓顯示器熄滅。
[顯示器狀態(type) ] 積木:先清除前一個字元,再讓新的字元,每一段LED輪流亮或不亮,以顯示該字元。
要顯示的字元變數內的各段LED代表字串如果是H,就讓該腳位輸出高電位,亮起來。
讓七段顯示器輪流顯示0~9的字元,每個字元間等待0.5秒,讓我們能看到字元的完成。
[顯示器狀態(type) ] ,這個積木用到特別的指令功能。
要先按[製做一個積木]後,輸入積木名稱(顯示器狀態),形成(顯示器狀態)的積木指令。
然後再按[選項],再點[新增字串輸入後面的方形,輸入(type),再按[確定],就可以了。
[ letter(索引)of(type)=H ] 裡面的 (索引)直接去變數裡面拉,裡面的 (type) 就直接將上面 [定義 [顯示器狀態(type) ] 積木 裡面的 (type) 拉下來就可以了。
三、用鍵盤控制七段顯示器顯示結果
依照鍵盤按下的結果來顯示字元,例如:按下鍵盤的[0],就顯示器顯示[0]。
注意:
記得先檢查[輸入法]是否為[英],當輸入法不對時,鍵盤按鍵對應的值是錯的,無法正確反應動作。
按數字鍵盤上的數字沒有作用,請按文字鍵盤上面的數字鍵才有作用。
基本程式同上,將輪流顯示字元,改成按下字元後顯示。
程式下載:
四、依據輸入內容顯示,類似跑馬燈效果
點綠旗開始後,先詢問想要顯示的數字,輸入完畢後,依照輸入數字,輪流顯示。
除了原來的[清除顯示] 積木和 [顯示器狀態(type) ] 積木外,再增加製作一個 [顯示字(number1) ] 積木
這裡多用了一些變數
主程式跟前面一樣,先各先將各字元變數該亮該暗的LED字串設置好。
然後用[重複8次],[腳位(亮)模式設為OUTPUT],來設定D2~D9為OUTPUT。
接下來用[提問(…)並等待],來輸入字串
[設定變數(字串)為答案]。
[設定變數(字串長)為(字串)的長度],來計算字串長度,等一下才知道要重複幾次才能將字串顯示完。
[設定變數(第幾個字)為0],從第0開始
[重複(字串長)次],讓字串的每一個字都能依序顯示。
[顯示字(第幾個字) ] ,判斷要顯示的字元是什麼。
[顯示器狀態(顯示) ] ,將要顯示的字元顯示出來。
[顯示字(number1) ] 這個積木,就是要判斷字串裡面的字要顯示什麼。
[設定變數(顯示)為(letter(number1)of(字串)],將字串裡面的字轉換出來
接下來用[如果…就…] ,來將顯示的字,變成字元變數,才能顯示
五、模擬十字路口(紅燈時,顯示倒數計時)
配合第四課(LED紅綠燈),將螢幕顯示倒數計時改成由七段顯示器顯示。
六、計數顯示器
配合第八課(按鍵)或第十五課(主動式紅外線感測器)做計數器的顯示。
註:
生活中的應用
–—————————–
相關連結:
S32E(Scratch3 to Esp8266)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/113127/750388
S3i(Scratch3 to arduino iL學習板)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/113128/750428
S3A(Scratch3 to Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/113129/750447
arduino iL學習板課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/111175/727272
WFduino(Arduino)課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/97509/641433
新DiFi課程目錄
http://blog.ilc.edu.tw/blog/blog/868/post/104089/678192