Arduino Nano R4 LCD 快速入門指南:Qwiic(I2C)接線與設定教學

概述

本文介紹如何使用 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);
}

相關實用資訊:

請點擊以下超鏈結以取得相關資訊: