متوسط⏱ 16 دقیقه مطالعه
I2C پروتکلی است که با تنها دو سیم (SDA برای داده و SCL برای ساعت) امکان اتصال چندین قطعه همزمان به دو پایهٔ ثابت را میدهد. هر قطعه یک آدرس منحصربهفرد دارد. در Arduino، کتابخانهٔ استاندارد Wire این پروتکل را پیادهسازی میکند.
اسکن آدرس دستگاههای 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() {}🛠️ کارگاه عملی
کارگاه عملی: با استفاده از loop() و متدهای clearDisplay()/display()، یک شمارندهٔ زنده روی صفحهٔ OLED نمایش دهید.
❓ چند سیم داده/ساعت برای پروتکل I2C نیاز است؟
طراحی و توسعه: امین شیخ نجدی — glcd.ir | نسخهٔ افزونه: 1.21.0