概述
本文介紹如何使用 Arduino Nano R4 搭配 Qwiic(I2C)介面來驅動液晶顯示器(LCD)。重點在於 Qwiic 連接的快速、簡單與低接線需求。相關技術同樣適用於 Arduino UNO R4 WiFi,因兩者使用相同微控制器並支援 Qwiic。
什麼是 Arduino Nano R4?
Arduino Nano R4 是 Arduino 評估板家族中體積最小的成員之一,採用 32-bit Renesas RA4M1 Cortex-M4 核心微控制器。
同一系列包含:
LCD 介面比較:平行 vs I2C
圖 1 展示了兩種方法,包括傳統的並行介面以及 Qwiic 連接
平行介面(Parallel)
- 傳統 LCD 連接方式
- 需要較多接線(見圖中藍色線)
- 已有大量教學與應用資源 。想了解更多關於這項技術的信息,請參閱這篇關於 Liquid Crystal Displays (LCD) with Arduino 的文章。
序列介面(Qwiic / I2C)
- 僅需 4 條線即可完成連接。圖 1 所示的 SparkFun 16397 LCD 僅需 4 條物理導線。
- 接線更簡潔、安裝快速。有關 Qwiic 的簡要介紹,請參閱這篇文章。
- Qwiic 為 Arduino 新增的易用介面
- 需留意:
- 傳輸速度有限
- 傳輸距離較短
圖 1: Arduino Nano R4 利用 Qwiic 和 平行介面方式連接 LCD
硬體實作說明
範例中使用 SparkFun 16397 Qwiic LCD,並透過 Qwiic 介面連接。注意:
- Nano R4 與 LCD 不附 Qwiic 線材
- 建議準備相容 Qwiic 連接線或套件
是否所有 Arduino R4 開發板都支援 Qwiic 連接嗎?
不,Qwiic 連線僅限於 Nano R4 和 UNO R4 WiFi。不過,您可以利用 Qwiic 擴充板,例如 SparkFun 14352。這擴充板提供了一種簡單的方法,可以將 Qwiic 連接系統整合到您的 Arduino 設備中。此擴充板將 Arduino 上的 I2C 匯流排連接到一系列 SparkFun Qwiic 連接器,並提供電路將 5V 電壓轉換為 Qwiic 系統中 I2C 板所需的 3.3V 電壓。
技術提示:使用 Qwiic 連接在編寫程式碼時,請注意 Arduino 的 Wire 和 Wire1 object。傳統的 Wire object 用於板載 I2C 連接,而 Wire1 用於 Qwiic 介面。更多信息,請參閱這篇文章。
如何對 Qwiic LCD 進行程式設計?
Qwiic 連接的 LCD 的應用程式介面 (API) 與經典的平行介面類似。您可能已經熟悉以下函數:
lcd.clear(); // Clear the LCD
lcd.setCursor(0, 1); // set the cursor to the first position on line 2
lcd.print(“Hello, World!”); // Print the text starting at the cursor
要了解有關 API 的更多信息,請細閱 SparkFun 的 SparkFun_SerLCD_Arduino_Library。函式庫包含許多範例,展示如何操作 LCD,涵蓋從基本用法到設定啟動畫面等各種主題。
入門指南
請務必依照下圖 2 所示安裝 Arduino 函式庫。
圖 2:使用 Arduino Library Manager 安裝 SerLCD 庫
範例程式
#include <SerLCD.h> //Click here to get the library: http://librarymanager/All#SparkFun_SerLCD
SerLCD Qwiic_lcd; // Initialize the library with default I2C address 0x72
void setup() {
// Essential and often overlooked: We must use Wire1 for the Nano R4 Qwiic connection.
Wire1.begin();
Qwiic_lcd.begin(Wire1);
Qwiic_lcd.setBacklight(255, 255, 255);
Qwiic_lcd.setContrast(5);
Qwiic_lcd.clear();
Qwiic_lcd.print("LCD Demo using");
Qwiic_lcd.setCursor(0, 1);
Qwiic_lcd.print(" Qwiic (Wire1)");
delay(4000);
Qwiic_lcd.clear();
Qwiic_lcd.print("Hello, World!");
}
void loop() {
Qwiic_lcd.setCursor(0, 1);
Qwiic_lcd.print(millis() / 1000);
}
相關實用資訊:
請點擊以下超鏈結以取得相關資訊:

