🖥️ نمایشگر OLED ۰٫۹۶ اینچ (SSD1306) (SSD1306 OLED Display 0.96")
| اسم انگلیسی | SSD1306 OLED Display 0.96" |
|---|---|
| در ووکوی (Wokwi) | board-ssd1306 |
| دسته | 💡 LED و نمایشگر |
| در شبیهساز فارسی | مود آردوینو · رایگان |
نمایشگر OLED ۰٫۹۶ اینچ SSD1306 (SSD1306 OLED Display) صفحهی کوچک ۱۲۸×۶۴ پیکسلی است که هر پیکسلش خودش نور میدهد؛ پس نور پسزمینه ندارد، کنتراستش بالاست و کم مصرف میکند. با دو سیم I2C به آردوینو وصل میشود و رویش متن، عدد درشت، نمودار و آیکن میکشی؛ برای ساعت، دماسنج، منوی کوچک دستگاه و نمایش وضعیت ربات عالی است.
نمایشگر OLED در ووکوی (Wokwi)
شناسهی این نمایشگر در ووکوی board-ssd1306 است، با چهار پایهی GND، VCC، SCL و SDA و آدرس I2C برابر 0x3C:
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "board-ssd1306", "id": "oled1", "top": -110, "left": 100, "attrs": {} }
],
"connections": [
[ "oled1:GND", "uno:GND.1", "black", [] ],
[ "oled1:VCC", "uno:5V", "red", [] ],
[ "oled1:SCL", "uno:A5", "blue", [] ],
[ "oled1:SDA", "uno:A4", "green", [] ]
]
}
| پایهی OLED | وصل به | چرا |
|---|---|---|
| GND | uno:GND.1 | زمین |
| VCC | uno:5V | بیشتر ماژولها رگولاتور دارند و ۳٫۳ ولت هم کار میکنند |
| SCL | uno:A5 | کلاک I2C |
| SDA | uno:A4 | دادهی I2C |
OLED در تینکرکد فارسی جزو اشتراک پلاس است؛ مثالهایش برای خواندن رایگان باز میشوند و برای اجرا پلاس لازم داری.
کد نمونه
// SSD1306 OLED: uptime in big digits and a progress bar
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1); // -1 = no reset pin
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("OLED not found at 0x3C"));
while (true) {}
}
}
void loop() {
unsigned long sec = millis() / 1000;
int width = (sec % 11) * 12; // 0..120 px
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setTextSize(1);
display.setCursor(0, 0);
display.print(F("Uptime"));
display.setTextSize(2);
display.setCursor(0, 16);
display.print(sec);
display.print(F(" s"));
display.drawRect(0, 44, 122, 12, SSD1306_WHITE);
display.fillRect(1, 45, width, 10, SSD1306_WHITE);
display.display(); // nothing shows without this
delay(200);
}
دو کتابخانه لازم است: Adafruit SSD1306 و Adafruit GFX. هر چیزی که میکشی اول در حافظه نوشته میشود و فقط با display.display() روی صفحه میآید. آموزش کاملتر با متن، خط و دایره را در راهاندازی OLED SSD1306 با آردوینو ببین.
OLED یا LCD کاراکتری؟
هر دو با چهار سیم I2C وصل میشوند، ولی برای دو کار متفاوت ساخته شدهاند. LCD 16×2 فقط ۳۲ حرف در دو خط نشان میدهد، نور پسزمینه دارد و تقریباً رمی از آردوینو نمیگیرد؛ برای نمایش یک عدد و یک پیام ساده کافی است. OLED هر پیکسل را جدا کنترل میکند، پس نمودار، آیکن، فونت درشت و انیمیشن میکشد و در تاریکی خواناتر است، ولی صفحهاش کوچکتر است و رم بیشتری میخواهد. اگر پروژهات فقط دما را نشان میدهد LCD بس است؛ اگر نمودار زندهی سنسور یا منوی گرافیکی میخواهی، OLED را بردار.
یک نکتهی کاربردی: هر دو نمایشگر میتوانند همزمان روی یک باس I2C کار کنند، چون آدرسشان فرق دارد (0x3C برای OLED و معمولاً 0x27 برای LCD). پس میتوانی هر دو را به همان A4 و A5 بزنی و هر کدام را با شیء خودش در کد صدا کنی.
اشتباههای رایج
- display فراموششده: بدون
display.display()صفحه سیاه میماند، هرچقدر هم رسم کرده باشی. - آدرس اشتباه: بعضی ماژولها 0x3D هستند؛ اگر
beginشکست خورد، آدرس را عوض کن. - کمبود رم: صفحهی ۱۲۸×۶۴ نصف رم اونو را میگیرد؛ متنهای ثابت را داخل
F()بنویس و آرایهی بزرگ نساز. - مدل ۱۲۸×۳۲: اگر نمایشگرت باریک است و ارتفاع را ۶۴ گذاشتهای، تصویر کش میآید یا نصفه دیده میشود.
آموزشهای مرتبط
- OLED و نئوپیکسل با میکروپایتون روی پیکو
- نمودار زنده روی OLED در تینکرکد فارسی
- LCD 16×2 با ماژول I2C
- اضافه کردن کتابخانه در ووکوی
سؤالهای رایج
آدرس I2C نمایشگر OLED چند است؟
بیشتر ماژولهای ۱۲۸×۶۴ آدرس 0x3C دارند و بعضی 0x3D. در ووکوی 0x3C است. اگر صفحهی مدار واقعی روشن نشد، با یک برنامهی I2C Scanner آدرس را پیدا کن.
چرا با OLED برنامهی آردوینو Uno هنگ میکند؟
کتابخانهی Adafruit_SSD1306 برای صفحهی ۱۲۸×۶۴ حدود یک کیلوبایت رم میگیرد، یعنی نصف رم اونو. اگر برنامه آرایه و رشتهی بزرگ هم دارد، رم تمام میشود؛ رشتههای ثابت را با F() در حافظهی فلش نگه دار.