🖥 MakerClass OLED Studio
0.96 吋 SSD1306 128×64(藍黃雙色)畫面設計 · 動畫 · 界面範例工具
GND→GNDVCC→5VSCL→A5SDA→A4位址 0x3C上16行黃 / 下48行藍
上傳任何圖片(或 Ctrl+V 貼上截圖)→ 自動轉成 128×64 單色點陣 → 複製 Arduino 程式碼直接上傳。右側預覽就是實機的雙色效果。
1️⃣ 選擇圖片
🖼 點擊選圖,或把圖片拖到這裡
也可以直接 Ctrl+V 貼上截圖
2️⃣ 轉換設定
3️⃣ 輸出

程式碼在右側下方 — 可切換 Adafruit / U8g2 格式、複製或下載 .ino

SSD1306 128×64 · 雙色預覽
■ 黃區 y 0–15■ 藍區 y 16–63
直接在模擬螢幕上畫圖:左鍵畫、右鍵擦。畫面即時對應雙色分區 — 上 16 行是黃色、下 48 行是藍色。畫完的程式碼在下方自動更新。
x:— y:—
SSD1306 128×64 · 可直接繪製
■ 黃區 y 0–15■ 藍區 y 16–63
全部用「邏輯」畫出來的動畫(不是圖片播放):左邊是網頁即時模擬,右邊是同樣邏輯的 Arduino 程式碼,可直接複製上傳。
互動界面範例(最多 4 顆按鍵 = D2~D5):先在網頁上玩玩看(點虛擬按鈕或按鍵盤 1~4),再把 Arduino 程式碼上傳實機。
接線(4 針 I2C)
OLED 腳位接到 UNO說明
GNDGND共地
VCC5V供電(模組內建穩壓,3.3V 也可)
SCLA5I2C 時脈線
SDAA4I2C 資料線
注意

⚠️ 不同廠牌模組的腳位順序不一定相同(有的 GND-VCC-SCL-SDA、有的 VCC-GND…)。一定要看板子上的絲印文字,接反 VCC/GND 可能燒毀模組。

💛 藍黃雙色的真相:這塊螢幕其實是單色螢幕 — 面板上方 16 行的螢光材料是黃色、下方 48 行是藍色,位置固定、不能改變顏色。所以設計畫面時:狀態列/標題放上方黃區(y 0–15),主內容放下方藍區(y 16–63)。兩區中間有一條細細的物理分隔線。

函式庫安裝
Arduino IDE

工具 → 管理程式庫 → 搜尋 Adafruit SSD1306 → INSTALL(會自動一併安裝 Adafruit GFX)。本工具產生的程式碼預設使用這套函式庫;若你偏好 U8g2,程式碼面板可切換格式。

第一個測試程式
雙色分區測試
// ═══ OLED 快速測試 — 雙色分區 ═══
// 0.96" SSD1306 128x64 I2C:GND→GND VCC→5V SCL→A5 SDA→A4(位址 0x3C)
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  Serial.begin(9600);
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {   // 大多數模組位址是 0x3C
    Serial.println("X 找不到 SSD1306:檢查接線 / 位址");
    while (true) {}
  }
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);

  display.setTextSize(1);
  display.setCursor(10, 4);
  display.print("YELLOW ZONE y0-15");    // 這行會是黃色

  display.setTextSize(2);
  display.setCursor(16, 26);
  display.print("HELLO!");               // 這行會是藍色

  display.setTextSize(1);
  display.setCursor(22, 50);
  display.print("BLUE ZONE y16-63");

  display.drawRect(0, 0, 128, 64, SSD1306_WHITE);   // 螢幕外框
  display.display();                     // 把緩衝區推上螢幕(必要!)
}

void loop() {}
找不到螢幕?(I2C 掃描器)
I2C 位址掃描
// ═══ I2C 掃描器 — 找出螢幕位址 ═══
#include <Wire.h>
void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("掃描中...");
  for (byte a = 8; a < 120; a++) {
    Wire.beginTransmission(a);
    if (Wire.endTransmission() == 0) {
      Serial.print("找到裝置:0x");
      Serial.println(a, HEX);            // OLED 通常是 0x3C(少數 0x3D)
    }
  }
  Serial.println("掃描完成");
}
void loop() {}
常見問題
問題原因解法
完全沒畫面位址不對 / 接線錯 / 忘了 display.display()跑 I2C 掃描器;檢查 SDA=A4、SCL=A5;每次畫完要呼叫 display.display()
畫面雪花雜訊沒共地 / 杜邦線接觸不良GND 一定要接;換線再試
只亮上半部 / 畫面錯位初始化寫成 128x32宣告要用 display(128, 64, &Wire, -1)
畫面上下顛倒模組安裝方向setup 加一行 display.setRotation(2);
上傳後越跑越慢RAM 不足(UNO 只有 2KB,畫面緩衝占 1KB)減少全域陣列 / 改用 uint8_t / 避免 String