متوسط⏱ 16 دقیقه مطالعه
I2C پروتکلی است که با تنها دو سیم (SDA برای داده و SCL برای ساعت) امکان اتصال چندین قطعه همزمان به دو پایهٔ ثابت را میدهد. هر قطعه یک آدرس منحصربهفرد دارد. این پروتکل برای نمایشگرها، سنسورهای دقیق (شتابسنج، فشارسنج) و ماژولهای ساعت واقعی (RTC) بسیار محبوب است.
اسکن آدرس دستگاههای I2C
PYTHON
from machine import Pin, I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=400000)
devices = i2c.scan()
print("دستگاههای یافتشده:", [hex(d) for d in devices])
💡 نکته
اگر لیست خالی برگشت، اتصالات SDA/SCL و تغذیه ماژول را بررسی کنید؛ همچنین برخی ماژولها به مقاومت Pull-up خارجی نیاز دارند.
راهاندازی نمایشگر OLED (SSD1306)
برای استفاده از نمایشگر OLED به کتابخانهٔ ssd1306.py نیاز داریم (از طریق Thonny یا mip قابل نصب است).
PYTHON
from machine import Pin, I2C
import ssd1306
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(0)
oled.text("Hello, ESP32!", 10, 10)
oled.text("آکادمی میکروپایتون", 0, 30)
oled.show()
🛠️ کارگاه عملی
کارگاه عملی: با استفاده از حلقهٔ while و oled.fill(0) + oled.show()، یک شمارندهٔ زنده روی صفحه OLED نمایش دهید.
❓ چند سیم داده/ساعت برای پروتکل I2C نیاز است؟
طراحی و توسعه: امین شیخ نجدی — glcd.ir