液晶螢幕LCD

硬體

GND:黑線

VCC:紅線

SDA:黃線

SCL:綠線

插在A4A5的孔位

程式

範例程式在Motoduino_V11/LiquidCrystal_I2C/HelloWorld

使用的LED螢幕型號叫做「1602」,代表可顯示16欄2行的數字或字母。其實就像XY座標一樣,左上角是原點,括弧裡第一個數字是X座標,第二個數字是Y座標,只是Y座標是向下為正(一般熟悉的XY座標是向上為正)

在loop()裡增加一些程式

lcd.setCursor(0, 1);//這是設定顯示的位置,第一個數字是第幾個Column,第二個數字是Line。

  • 注意這些欄或行都是從零開始
  • 下面的範例程式是顯示讀秒,在0-9的秒數時,數字只會在(0,1)的格子出現,而超過9之後,數字會用到(0,1)和(1,1)兩個格子
  • 請自己修改 lcd.setCursor()內的數字,看看顯示出來的畫面有什麼變化。
  • 如果要關閉背光,用 lcd.noBacklight();
  • 如果要清除螢幕, 用lcd.clear();
  • 以後設計程式時,如果要在同一行顯示兩個不同的變數(例如溫度和濕度),要記得預留空間。比方說溫度放在(0,1),濕度放在(7,1)

習題

請把擴充版上的滑桿值顯示到LCD螢幕上,以下是參考程式

當滑桿滑到最右邊,再滑回最左邊的時候,會發現第四格會有殘留的數字。這有很多種解法,一種是把所有數字前面都補零,例如1變成0001。或是依照數字的長短決定游標的位置。另一種解法,就是當讀到新數值的時候,就把螢幕刷新(clear),請參考範例。

習題

如果要讓LCD上面同時顯示兩種變數,例如滑桿值和光線值,請自己做看看。底下是範例,最後一行的delay(1000),是為了讓LCD的螢幕刷新的速度慢一點,請試著把delay(1000)刪除,看看LCD會發生什麼事情?

備註:LCD螢幕的Address

要怎麼知道 LCD螢幕的address要設定成0x27呢,你可以用這隻程式(網頁最底下有個Get Code,可以複製程式碼)。上傳Arduino,並接上LCD螢幕,就可以在序列埠監控視窗看到程式掃描出來的address了