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

【Arduino進階教學】SSD1306 0.91吋 OLED 顯示器模組:128×32 I2C 接線、Adafruit 繪圖庫與文字動畫實作

一、 實驗說明:為什麼選擇 SSD1306 0.91 吋 OLED 顯示器?

在需要極致輕薄、長條狀外觀的穿戴式裝置或微型儀表板專題中,0.91 吋 SSD1306 OLED 顯示模組 是最佳解答。相較於常見的 0.96 吋面板,0.91 吋擁有更窄小的體積,同時保留了 OLED 自發光、高對比、超省電與廣視角 的優異特性。

核心技術與軟體架構

  1. 硬體規格: 解析度為長條型的 像素,採用極簡的 I2C 通訊介面(只需 4 根線)。

  2. 預設 I2C 位址: 市售 0.91 吋模組預設位址通常為 0x3C。

  3. Adafruit 繪圖生態系: 搭配 Adafruit_SSD1306 與 Adafruit_GFX 程式庫,只需在程式碼中指定螢幕高度為 32,即可完全相容所有圖形與文字繪製語法。

二、 實驗所需材料與電路接線圖 (Hardware Setup)

請依照下表將 0.91 吋 SSD1306 OLED 模組連接至 Arduino Uno。

⚠️ 注意事項: 接線前請務必仔細確認模組背面的引腳標示(特別是 VCC 與 GND),避免極性接反導致模組燒毀。

🛒 準備材料

  • Arduino Uno R3 開發板 x 1

  • USB 傳輸線 x 1

  • 0.91 吋 SSD1306 OLED 模組 (128×32 I2C 介面) x 1

  • 杜邦線 若干

▼ 購買OLED 0.91吋顯示螢幕:

0.91吋 I2C OLED 液晶螢幕模組 12832 LCD

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

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

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

 

材料:

  • Arduino Uno R3
  • USB 傳輸線
  • OLED 0.91吋顯示器
  • 杜邦線

⚡ 腳位對接說明 (Pin Mapping)

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

三、 必備函式庫安裝步驟

編譯程式碼前,請先透過 Arduino IDE 的程式庫管理員安裝以下套件:

  1. 安裝 Adafruit SSD1306 程式庫:

    • 點選選單 草稿碼 (Sketch) > 匯入程式庫 (Include Library) > 管理程式庫 (Manage Libraries)。

    • 搜尋 「Adafruit SSD1306」 並點擊安裝。

  2. 安裝 Adafruit GFX 程式庫:

    • 在程式庫管理員搜尋 「Adafruit GFX」 並點擊安裝(若提示安裝相依套件請全數安裝)。

搜尋Adafruit SSD1306並點擊安裝

安裝 Adafruit SSD1306 程式庫

 

搜尋Adafruit GFX並點擊安裝

搜尋 「Adafruit GFX」 並點擊安裝,如跳出安裝相依套件提示,請選擇全數安裝

 

四、 程式碼實作範例

🔹 程式範例一:多行文字與數據顯示 (Text & Sensor Data Display)

本範例針對 OLED 螢幕 長條型畫面進行排版設計,示範如何在限高 32 像素的空間內漂亮顯示文字與設定字體大小、輸出字串。

#include <SPI.h> 
#include <Wire.h> 
#include <Adafruit_GFX.h> 
#include <Adafruit_SSD1306.h> 

#define SCREEN_WIDTH 128 // OLED 寬度像素
#define SCREEN_HEIGHT 32 // OLED 高度像素

// 設定OLED
#define OLED_RESET     -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);


void testdrawstyles(void) {
  
  display.clearDisplay();
  display.setTextSize(2);          // 設定文字大小
  display.setTextColor(1);         // 1:OLED預設的顏色(這個會依該OLED的顏色來決定)
  display.setCursor(5,0);          // 設定起始座標
  display.print("Hello OLED");     // 要顯示的字串
  display.display();               // 要有這行才會把文字顯示出來
  delay(1000);
}


void setup() {
  Serial.begin(9600);

  // 偵測是否安裝好OLED了
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 一般1306 OLED的位址都是0x3C
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }

  display.clearDisplay(); // 清除畫面
  testdrawstyles();    // 測試文字
  delay(1000);
}

void loop() {

}

 

🔹 程式範例二:圖形繪製與畫面滾動動畫 (Graphics & Text Scrolling)

可直接調用 Adafruit 官方的經典測試程式在 0.91 吋螢幕上繪製邊框、幾何圖案,並啟用 SSD1306 硬體加速的水平文字滾動效果:

Adafruit 內建全圖形展示範例

圖:開啟Adafruit SSD1306 >> ssd1306_128x32_i2c 範例檔。

 

五、 常見問題與除錯 (FAQ)

Q1:畫面文字被壓縮拉長,或是下半部一半消失不見?

  • 解答: 這是因為程式碼中的解析度參數錯設為 0.96 吋的 64 像素。請務必確認將 #define SCREEN_HEIGHT 設為 32,並且傳入 Adafruit_SSD1306 物件初始化。

Q2:螢幕一片漆黑,完全沒有任何顯示反應?

  • 解答: 請執行 「I2C Scanner」 腳本確認模組位址。雖然多數 0.91 吋模組為 0x3C,但仍有少數副廠批次為 0x3D。將 display.begin(SSD1306_SWITCHCAPVCC, 位址) 替換為實際位址即可解決。

Q3:呼叫繪圖函式後螢幕沒有改變?

  • 解答: Adafruit_SSD1306 採用繪圖緩衝區機制,所有文字與繪圖指令必須在最後補上 display.display(); 才會寫入實體 OLED 顯示。

🔗 延伸閱讀與推薦課程

📟 顯示模組控制: 【Arduino進階教學】LCD 1602 I2C 顯示模組:4線快速接線、位址檢測與程式碼範例

👈 上一篇: 【Arduino進階教學】SSD1306 0.96吋 OLED 顯示器模組:I2C 接線、位址檢測、Adafruit GFX 繪圖與雙程式範例實作

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

📘 總索引: Arduino 新手學習必讀經典 – 快速索引頁面

 

 

 

 

 

 

 

相關文章