Basic Tutorial for Arduino, 進階篇, 顯示器模組

【Arduino進階教學】LCD 2004 I2C 顯示器模組:20×4 大螢幕 4 線接線、LiquidCrystal_I2C 庫與自訂符號繪製實作

一、 實驗說明:為什麼選擇 LCD 2004 I2C 顯示器?

當 Arduino 專題需要同時顯示多組感測器數據、菜單選單或系統狀態時,傳統 16×2 的 LCD 1602 螢幕往往顯得空間不足。此時 LCD 2004 I2C 顯示模組 就是最佳首選!它提供每行 20 個字元、共 4 行(總計 80 個字元)的大容量顯示空間。

核心技術與軟體架構

  1. 硬體規格: 採用背光 LCD 面板,解析度為 字元,搭配 PCF8574 I2C 轉接板 後,只需 4 根線即可完成控制。

  2. 預設 I2C 位址: 市售模組預設位址通常為 0x27 或 0x3F。

  3. 龐大生態系相容性: 使用標準 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 顯示模組:

LCD2004 IIC/I2C interface 液晶螢幕 藍屏白字

🛍️ 準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含豐富驅動專案模組)

👍爆款推薦:程式學習套件組 

購買網址:shop.mirotek.com.tw

 

⚡ 腳位對接說明 (Pin Mapping)

LCD 2004 I2C 模組腳位功能說明Arduino Uno 對應引腳
GND電源接地GND
VCC電源正極 (建議 5V)5V
SDAI2C 序列資料線A4 (或硬體 SDA 腳位)
SCLI2C 序列時脈線A5 (或硬體 SCL 腳位)

三、 必備函式庫下載與安裝步驟

要順利驅動 LCD 2004 I2C 模組,必須安裝專用的 LiquidCrystal_I2C 函式庫。

📥 函式庫下載連結

  • LiquidCrystal_I2C 函式庫檔(ZIP 格式):載點

⚙️ 兩種安裝方式說明

  • 方法 A:透過 Arduino IDE 管理器安裝(推薦)

    1. 開啟 Arduino IDE,點選上方選單 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 管理程式庫 (Manage Libraries)。

    2. 在上方搜尋欄位輸入 「LiquidCrystal_I2C」。

    3. 找到由 Frank de Brabander / johnrickman 維護的版本,點擊 「安裝 (Install)」 即可。

  • 方法 B:匯入 ZIP 壓縮檔安裝

    1. 點選上方 [載點] 下載 LiquidCrystal_I2C-master.zip 檔案。

    2. 開啟 Arduino IDE,點選 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 加載 .ZIP 程式庫 (.ZIP Library…)。

    3. 選擇剛剛下載的 .zip 檔案,系統即會自動完成解壓與安裝。

Arduino IDE 點選草稿碼匯入程式庫並選擇加入 ZIP 程式庫步驟示意圖

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

 

Arduino IDE 彈出檔案選擇視窗並選取 LiquidCrystal_I2C-master.zip 壓縮檔進行匯入

圖二: 在彈出的檔案選擇視窗中,點選已下載的 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 新手學習必讀經典 – 快速索引頁面

 

 

 

相關文章