液晶顯示
不用電腦也看得到板子在說什麼。 · ⏱ 約 25 分鐘
你會學到三件事
- LCD 是一塊有行有列的畫布
setCursor 決定接下來寫在哪裡
- 「先移游標、再寫字」——這個順序不能反
開始之前
序列埠很好用,而它需要一條線接著電腦。
做成品的時候你要的是:拔掉電腦,它還看得到。
接線(並列式 LiquidCrystal):RS→12、E→11、D4→5、D5→4、
D6→3、D7→2,另外接電源和一顆調對比的可變電阻。
一、宣告
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
括號裡是六支腳的號碼,順序是 RS, E, D4, D5, D6, D7。
⚠️ 順序錯的話畫面會是亂碼或空白,而不會報錯。
和第 8 課的 Servo s; 一樣,這是一個物件——它有自己的動作。
二、告訴它多大
lcd.begin(16, 2);
16 行寬、2 列高——最常見的規格(也有 20×4 的)。
⚠️ 這一行在 setup() 裡,而且要在任何 print 之前。
三、先移游標,再寫字
lcd.setCursor(0, 0);
lcd.print("Hello");
setCursor(第幾行, 第幾列):
0 1 2 3 4 5 ... 15
列 0 H e l l o
列 1
⚠️ 兩個都從 0 開始(又是那件事)。
所以 16×2 的螢幕,合法的位置是行 0~15、列 0~1。
⚠️ 順序不能反。 print 之後再 setCursor 是沒有意義的——
游標是「接下來寫在哪」,不是「剛剛寫在哪」。
四、⚠️ 覆蓋不會清乾淨
LCD 不會自己清空。在同一個位置寫 100 再寫 5,會變成 500
——因為只有第一格被蓋掉。
兩種解法:
lcd.clear(); // 全部清掉(會閃一下)
lcd.print("5 "); // 或者自己補空格蓋掉
每次都 clear() 會讓畫面閃爍,所以顯示會變的數字時,
補空格通常比較好看。
完成的樣子
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Hello");
}
void loop() {
}
換你了
把第 5 課的光感應值顯示在第二列,每秒更新一次
(⚠️ 用第 10 課的 millis(),不要用 delay)。
記得處理「從 3 位數變 2 位數」的殘影問題。
這一課你做了什麼
- 你在一塊沒有電腦的螢幕上寫了字
- 你用
setCursor 決定寫在哪一格
- 你知道覆蓋不會清乾淨,而
clear() 會閃
如果卡住了
| 你看到 |
多半是因為 |
| 整片空白 |
對比沒調(轉那顆可變電阻),或背光沒接 |
| 一整排黑方塊 |
沒收到資料——begin 漏了,或腳位順序錯 |
| 亂碼 |
六支腳的順序錯了 |
| 數字有殘影 |
覆蓋不會清乾淨。補空格或 clear() |
| 畫面一直閃 |
每次 loop 都 clear() 了。改成只在值變了才更新 |
在編輯器打開這一課 →