一、 實驗說明:為什麼選擇 LCD 2004 I2C 顯示器?
當 Arduino 專題需要同時顯示多組感測器數據、菜單選單或系統狀態時,傳統 16×2 的 LCD 1602 螢幕往往顯得空間不足。此時 LCD 2004 I2C 顯示模組 就是最佳首選!它提供每行 20 個字元、共 4 行(總計 80 個字元)的大容量顯示空間。
核心技術與軟體架構
硬體規格: 採用背光 LCD 面板,解析度為 字元,搭配 PCF8574 I2C 轉接板 後,只需 4 根線即可完成控制。
預設 I2C 位址: 市售模組預設位址通常為
0x27或0x3F。龐大生態系相容性: 使用標準
LiquidCrystal_I2C程式庫,語法與 LCD 1602 完全通用,無縫升級大螢幕!
二、 實驗所需材料與電路接線圖 (Hardware Setup)
請依照下表將 LCD 2004 I2C 模組正確連接至 Arduino Uno。
💡 省線關鍵: 傳統 LCD 2004 需佔用高達 16 根 Pin 腳,焊上 I2C 轉接板後僅需 VCC、GND、SDA、SCL 4 根線,大大節省開發板腳位!
🛒 準備材料
Arduino Uno R3 開發板 x 1
USB 傳輸線 x 1
LCD 2004 I2C 顯示器模組 x 1
杜邦線 若干
▼購買LCD 2004 I2C 顯示模組:
🛍️ 準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含豐富驅動專案模組)
⚡ 腳位對接說明 (Pin Mapping)
三、 必備函式庫下載與安裝步驟
要順利驅動 LCD 2004 I2C 模組,必須安裝專用的 LiquidCrystal_I2C 函式庫。
📥 函式庫下載連結
LiquidCrystal_I2C 函式庫檔(ZIP 格式):載點
⚙️ 兩種安裝方式說明
方法 A:透過 Arduino IDE 管理器安裝(推薦)
開啟 Arduino IDE,點選上方選單 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 管理程式庫 (Manage Libraries)。
在上方搜尋欄位輸入 「LiquidCrystal_I2C」。
找到由 Frank de Brabander / johnrickman 維護的版本,點擊 「安裝 (Install)」 即可。
方法 B:匯入 ZIP 壓縮檔安裝
點選上方 [載點] 下載
LiquidCrystal_I2C-master.zip檔案。開啟 Arduino IDE,點選 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 加載 .ZIP 程式庫 (.ZIP Library…)。
選擇剛剛下載的
.zip檔案,系統即會自動完成解壓與安裝。

圖一: 開啟 Arduino IDE,點選上方選單 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 加入 .ZIP 程式庫…,準備匯入下載好的 LiquidCrystal_I2C 壓縮檔。

圖二: 在彈出的檔案選擇視窗中,點選已下載的 LiquidCrystal_I2C-master.zip 檔案並點擊「選擇」,系統將自動完成 LCD 2004 函式庫的安裝。
四、 程式碼實作範例
🔹 程式範例一:20×4 四行文字與動態數據顯示 (4-Line Text & Data Display)
本範例示範如何在 LCD 2004 的 4 行空間內進行精準排版,並透過 loop() 動態更新數值。
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
// 宣告 LCD 物件:位址通常為 0x27 或 0x3F,規格為 20 個字元 x 4 行
LiquidCrystal_I2C lcd(0x27, 20, 4);
int uptimeSeconds = 0;
void setup() {
lcd.init(); // 初始化 LCD
lcd.backlight(); // 開啟 LCD 背光
// 第一行:標題
lcd.setCursor(0, 0); // 游標移至 (第0欄, 第0行)
lcd.print("=== Mirotek Demo ===");
// 第二行:固定文字
lcd.setCursor(0, 1);
lcd.print("LCD 2004 I2C Display");
// 第三行:規格標示
lcd.setCursor(0, 2);
lcd.print("Resolution: 20x4 Chars");
}
void loop() {
// 第四行:動態更新運作時間
lcd.setCursor(0, 3);
lcd.print("System Time: ");
lcd.print(uptimeSeconds);
lcd.print("s "); // 空格用於蓋掉舊數字殘影
uptimeSeconds++;
delay(1000);
}
🔹 程式範例二:自訂特殊符號圖案 (Custom Characters Drawing)
LCD 2004 內建 CGRAM 支援自訂 點陣符號,本範例示範如何繪製「愛心」圖案並顯示在螢幕上。
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
// 定義 $5 \times 8$ 點陣愛心圖案 (1代表發光,0代表不亮)
byte heartIcon[8] = {
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
void setup() {
lcd.init();
lcd.backlight();
// 將自訂圖案寫入 CGRAM 位置 0
lcd.createChar(0, heartIcon);
lcd.setCursor(0, 0);
lcd.print("Custom Icon Demo:");
// 顯示自訂愛心符號
lcd.setCursor(0, 1);
lcd.print("I ");
lcd.write(0); // 呼叫 0 號自訂符號
lcd.print(" Arduino!");
}
void loop() {
// 主迴圈保留
}
五、 常見問題與除錯 (FAQ)
Q1:螢幕背光有亮,但完全看不到任何文字(或是全黑方塊)?
解答: 這通常是對比度未調整所致。請拿一支小十字螺絲起子,旋轉 LCD 2004 背面 I2C 藍色轉接板上的藍色可變電阻(Potentiometer),直到文字清晰浮現為止。
Q2:程式順利上傳,但文字完全沒有顯示出來?
解答: 請檢查 I2C 位址是否正確。市售模組常用位址為
0x27或0x3F。可上傳「I2C Scanner」腳本檢測實際位址,並修改LiquidCrystal_I2C lcd(位址, 20, 4);參數。
Q3:編譯時出現
LiquidCrystal_I2C.h: No such file or directory錯誤?
解答: 這表示專案未正確載入函式庫。請參考第三區塊的步驟,透過手動下載 ZIP 檔並點選 草稿碼 > 匯入程式庫 > 加載 .ZIP 程式庫 重新安裝一次。
🔗 延伸閱讀與推薦課程
📟 經典顯示模組控制: 【Arduino進階教學】LCD 1602 I2C 顯示模組:4線快速接線、位址檢測與程式碼範例
👈 上一篇: 【Arduino進階教學】SSD1306 0.91吋 OLED 顯示器模組:128×32 I2C 接線、Adafruit 繪圖庫與文字動畫實作
👉 下一篇:【Arduino進階教學】MAX7219 8×8 LED 點陣顯示模組:SPI 3 線接線、LedControl 函式庫與動態文字圖案繪製實作
📘 總索引: Arduino 新手學習必讀經典 – 快速索引頁面
