Arduino第33課液晶顯示器(LCD)
使用價格便宜有 LCM控制板的I²C LCD ,接線比較簡單。(註1)
選購時要留意,這一類的LCD有好幾種,需要支援I²C (IIC、I2C)協定,位址有0x20、0x27或0x3F,工作電壓有3.3V或5V。(註2)
積木說明:
一般常見的I²C LCD為橫排2列,有16格(字),可以設定要在第幾列從第幾格開始顯示那些字。位址一般就是內定的0x3F
清除所有筆跡:清除LCD上的字
blink:最後一個待輸入的字會閃爍空格
noBlink:最後一個待輸入的字不會閃爍空格
backlight:LCD有背光
noBacklight:LCD沒有背光
move_left:顯示的字串向左移動
move_right:顯示的字串向右移動
[列]後面的空格可以指定哪一列要做動作,留空白(沒有填)就是2列一起做動作。
例如:LCD(清除所有筆跡)列(1),只清除第一列,第二列保留。
LCD(清除所有筆跡)列(),兩列同時清除。
接腳對照表
LCD接腳 | Arduino UNO | 備註 |
VCC | 5V或3.3V | 注意電源不可接錯 |
GND | GND | 注意電源不可接錯 |
SCL | A5(SCL) | |
SDA | A4(SDA) |
一、Hi WFduino!
LCD上顯示[ Hi WFduino! ]
第1列從第1格開始顯示,第2列從第4格開始顯示。
程式下載:Hi.sb2
延伸:
1.讓顯示的字置中
2.讓顯示的字靠右
二、左、右移動
LCD上顯示的[Hi WFduino!]會左、右移動
1.先清除前面顯示過的字
2.第1列從第1格開始顯示,第2列從第6格開始顯示。
3.重複執行讓兩列字串輪流分別向左、右移動。
程式下載:Hi2.sb2
三、時鐘
LCD上顯示現在的日期及時間。
1.先清除前面顯示過的字
2.製作[DATE]及[TIME]兩個變數儲存日期及時間。
3.將變數顯示在LCD上。
程式下載:時鐘.sb2
延伸:
1.讓顯示日期及時間,左、右移動
2.讓顯示日期及時間置中
四、時鐘(修正)
時鐘會出現98秒?
因為當59秒跳0秒時,9沒清掉,接下來個位數的秒直接顯示在十位數上。
將清除積木放進迴圈裡就可以了。
程式下載:時鐘(修正).sb2
五、顯示LASS資料
讀取LASS上的資料(PM2.5及溫、濕度),在LCD上顯示
讀取程式請參考WFduino第二十四課PM2.5環境監測超簡單
程式下載:讀取LASS.sb2
六、溫、溼度顯示
接線圖:
這裡訊號接數位腳位D7
LCD接線請考前面列表
溫濕度感測器請參考:第32課DHT11溫濕度感測器(http://blog.ilc.edu.tw/blog/blog/868/post/97509/660493)
A、LCD上顯示現在的溫、溼度
[腳位7模式設為INPUT],設定數位腳D7為輸入訊號。
[等待1秒],預設是OUTPUT,在設定之後加一個等待時間,讓程式有時間設定為INPUT。
清除前面顯示過的字
重複執行下面的動作。
[溫溼度感測器(11)在腳位(7)],設定數位腳D7接收來自DHT11的訊號
[等待1秒],因為DHT11需要做資料轉換,每筆資料的抓取時間不能太快。
第1列從第1格開始顯示溫度。
第2列從第1格開始顯示濕度。
程式下載:溫溼度顯示.sb2
延伸:
1.讓顯示左、右移動
2.讓顯示置中
B、LCD上顯示現在的日期、時間及溫、溼度
主要程式跟前面一樣。
第1列從第1格開始顯示日期、時間。
第2列從第1格開始顯示溫、溼度。
程式下載:溫溼度顯示(時間).sb2
七、紅綠燈倒數
模擬十字路口綠、黃、紅燈(紅、綠燈時,LCD顯示倒數計時)
主要程式請參考:
WFduino第四課3顆LED紅綠燈(http://blog.ilc.edu.tw/blog/blog/868/post/97509/637850)
增加LCD顯示部分
程式下載:紅綠燈倒數.sb2
延伸:
1.讓顯示置中
2.無線連接
八、按鍵計數器
按一次按鍵,計數器加1,並發出提示音,計算按鍵次數,並在LCD上顯示。
接線圖:
主要程式請參考:
第二十五課指撥開關(密碼鎖)(http://blog.ilc.edu.tw/blog/blog/868/post/97509/656348 )
第八課(按鍵)(http://blog.ilc.edu.tw/blog/blog/868/post/97509/639090)
利用Arduino內建的上拉電阻,省去外接電阻,線路簡潔。
使用[腳位(7)模式設為(INPUT_PULLUP)],宣告數位腳D7為上拉電阻輸入(接收訊號)。
注意:
當開關未接通時,數位腳D7讀取到高電位(1),當開關接通時,數位腳D7讀取到低電位(0)。
增加LCD顯示及蜂鳴器部分
程式下載:計數器.sb2
延伸:
1.讓顯示置中
2.無線連接
3.參考第十五課(主動式紅外線感測器),顯示計數結果。
九、倒數計時器
接線圖如前,按下[綠旗]後,輸入倒數時間,等待按下按鍵後開始倒數計時,時間到,蜂鳴器發出聲響。
主要程式請參考:第七課(蜂鳴器)http://blog.ilc.edu.tw/blog/blog/868/post/97509/638509
[腳位7模式設為INPUT],設定數位腳7為輸入。
[LCD(清除所有筆跡)],清除前面顯示過的字
LCD顯示提示字,(please enter Countdown times)
提問要計時多久,輸入時間。
設定變數[倒數計時]為[答案]
LCD清除前面顯示過的字,顯示提示字,[press butten to begin (秒數)]
[等待(讀取數位腳位7)=0],等待按下按鍵
[等待(讀取數位腳位7)=1],等待放開按鍵,才開始倒數計時
重複[倒數計時]次
等待1秒,將(倒數計時)變數 -1
LCD顯示倒數計時
時間到了,將造型換成[時間到],LCD顯示[time up],並發出聲音。
程式下載:倒數計時器.sb2
延伸:
1.讓顯示置中
2.無線連接
十、模擬捷運顯示站名
模擬捷運車廂,播報站名,LCD顯示站名。
使用存取檔案功能,從[站名]文字檔案取出站名,到站時播報站名,並在LCD上顯示站名。
請參考WFduino第二十六課資料存取(http://blog.ilc.edu.tw/blog/blog/868/post/97509/657968)
文湖線文字檔:文湖線.txt
程式下載:模擬捷運顯示站名.sb2
延伸:
1.使用其他感測器觸發下一站通知,例如:光敏電阻、紅外線感應器等。
2.參考WFduino第31課JSON格式資料運用(http://blog.ilc.edu.tw/blog/blog/868/post/97509/677614)
從捷運公開資料網站中擷取捷運即時資料,在LCD上顯示。
十一、模擬捷運顯示站名及下一站
模擬捷運車廂,播報站名,LCD顯示站名及下一站。
使用存取檔案功能,從[站名]文字檔案取出站名,到站時播報站名,並在LCD上顯示站名及下一站。
請參考WFduino第二十六課資料存取(http://blog.ilc.edu.tw/blog/blog/868/post/97509/657968)
文湖線文字檔:文湖線.txt
程式下載:捷運顯示站名及下一站.sb2
十二、超音波測距儀
使用[超音波感測器]來測量距離。
超音波感測器的Vcc接5V,Gnd接地,Echo接腳位5,Trig接腳位6
原理請參考WFduino第十二課(超音波感測器)http://blog.ilc.edu.tw/blog/blog/868/post/97509/639095
LCD請參考上面LCD接腳對照表
1.先清除LCD上原有的內容
2.LCD第一列顯示[distance]
3.使用 [HCSR超音波感測器,Echo在腳位(5)Tring在腳位(6)]指令可以偵測感測器的偵測結果。
4.將偵測結果(測量到的距離是幾公分)顯示在LCD的第2列上。
程式下載:測距儀.sb2
十三、scratch3
程式下載:LCD.sb3
————————–
註1:
https://zh.wikipedia.org/wiki/%E6%B6%B2%E6%99%B6%E6%98%BE%E7%A4%BA%E5%99%A8
液晶顯示器(liquid-crystal display,縮寫為LCD),在不加電壓下,光線會沿著液晶分子的間隙前進而轉折90度,所以光可通過。但加入電壓後,光順著液晶分子的間隙直線前進,因此光被濾光板所阻隔。
https://zh.wikipedia.org/wiki/I%C2%B2C
I²C(Inter-Integrated Circuit)是I²C Bus簡稱,中文叫積體電路匯流排,它是一種串列通訊匯流排,使用內送流量備援容錯機制從架構。
I²C(Inter-Integrated Circuit)字面上的意思是積體電路之間,它其實是I²C Bus簡稱,所以中文應該叫積體電路匯流排,它是一種串列通訊匯流排,使用內送流量備援容錯機制從架構,由飛利浦公司在1980年代為了讓主機板、嵌入式系統或手機用以連接低速週邊裝置而發展。I²C的正確讀法為「I平方C」(”I-squared-C”),而「I二C」(”I-two-C”)則是另一種錯誤但被廣泛使用的讀法。自2006年11月1日起,使用I²C協定已經不需要支付專利費,但製造商仍然需要付費以取得I²C從屬裝置位址。
註2:
一般買5V供電的比較便宜。
藍底白字3.3V和5V正面看起來都一樣。
3.3V的背面有多一個8腳的IC 跟2個電容。
顯示效果
3.3V 16×2藍底白字(有背光)
3.3V 16×2黃綠底黑字(有背光)
3.3V 16×2黃綠底黑字(無背光)
如果看不清楚顯示的字,可以用十字起子調整電位器(可變電阻)
——————————–
相關連結:
新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