متوسط⏱ 16 دقیقه مطالعه

I2C پروتکلی است که با تنها دو سیم (SDA برای داده و SCL برای ساعت) امکان اتصال چندین قطعه هم‌زمان به دو پایهٔ ثابت را می‌دهد. هر قطعه یک آدرس منحصربه‌فرد دارد. در Arduino، کتابخانهٔ استاندارد Wire این پروتکل را پیاده‌سازی می‌کند.

اتصال نمایشگر OLED با I2C به ESP32

اسکن آدرس دستگاه‌های I2C

CPP
#include <Wire.h>

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);   // SDA=21, SCL=22

  Serial.println("در حال اسکن گذرگاه I2C...");
  for (byte addr = 1; addr < 127; addr++) {
    Wire.beginTransmission(addr);
    if (Wire.endTransmission() == 0) {
      Serial.print("دستگاه یافت شد در آدرس: 0x");
      Serial.println(addr, HEX);
    }
  }
}

void loop() {}
💡 نکته

اگر هیچ دستگاهی یافت نشد، اتصالات SDA/SCL و تغذیه ماژول را بررسی کنید؛ همچنین برخی ماژول‌ها به مقاومت Pull-up خارجی نیاز دارند.

راه‌اندازی نمایشگر OLED (SSD1306)

برای استفاده از نمایشگر OLED، دو کتابخانهٔ Adafruit را از Library Manager نصب کنید: Adafruit SSD1306 و وابستگی آن Adafruit GFX Library.

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

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  Wire.begin(21, 22);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(1);
  display.setCursor(10, 10);
  display.println("Hello, ESP32!");
  display.setCursor(0, 30);
  display.println("Academy Arduino");
  display.display();
}

void loop() {}
شبیه‌سازی زندهٔ نمایشگر OLED با I2C روی ESP32 — همان کتابخانهٔ Adafruit_SSD1306 روی آدرس 0x3C که در این درس دیدید باز کردن در Wokwi ↗
در حال بارگذاری شبیه‌ساز… (ممکن است چند ثانیه طول بکشد)

این یک شبیه‌سازی واقعی و قابل اجراست؛ روی دکمه پخش (▶) در Wokwi بزنید تا کد روی برد مجازی ESP32 اجرا شود. اگر جعبهٔ بالا بیش از حد سیاه/خالی ماند، صفحه را رفرش کنید یا از دکمهٔ «باز کردن در Wokwi» بالا استفاده کنید.

🛠️ کارگاه عملی

کارگاه عملی: با استفاده از loop() و متدهای clearDisplay()/display()، یک شمارندهٔ زنده روی صفحهٔ OLED نمایش دهید.

❓ چند سیم داده/ساعت برای پروتکل I2C نیاز است؟
طراحی و توسعه: امین شیخ نجدیglcd.ir | نسخهٔ افزونه: 1.21.0