A 0.91" OLED شاشة هي شاشة صغيرة عالية التباين مثالية لـ عرض النصوص والرسوم البيانية وبيانات المستشعر في مشاريع Arduino. سيرشدك هذا الدليل خلال الأسلاك والبرمجة وعرض النصوص والرسوم باستخدام وحدة OLED المبنية على SSD1306 مع Arduino.
1. ما تحتاجه
✅ لوحة Arduino (Uno, Mega, Nano، إلخ)
✅ 0.91" OLED شاشة (SSD1306، I2C)
✅ أسلاك توصيل Jumper
✅ تثبيت Arduino IDE
🔹 ملاحظة: يركز هذا الدرس على الاتصال عبر I2C، الذي يستخدم فقط سلكين (SDA و SCL)، مما يجعله مثالياً للمشاريع البسيطة.
2. توصيل 0.91" OLED إلى Arduino (وضع I2C)
| دبوس شاشة OLED | دبوس Arduino Uno | دبوس Arduino Nano |
|---|---|---|
| VCC | 5V | 5V |
| GND | GND | GND |
| SDA | A4 (SDA) | A4 (SDA) |
| SCL | A5 (SCL) | A5 (SCL) |
🔹 بالنسبة لـ Arduino Mega: استخدم SDA (دبوس 20) و SCL (دبوس 21).
3. تثبيت المكتبات المطلوبة
قبل البرمجة، ثبّت مكتبات Adafruit SSD1306 و Adafruit GFX:
- افتح Arduino IDE.
- اذهب إلى Sketch → Include Library → Manage Libraries.
- ابحث عن Adafruit SSD1306 وقم بتثبيتها.
- ابحث عن Adafruit GFX وقم بتثبيتها.
4. كود أساسي لعرض النص على OLED
يقوم هذا المثال بتهيئة شاشة OLED ويعرض "Hello, Arduino!".
#include
#include
#include
// Define OLED screen size
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
// Initialize OLED display (I2C address 0x3C)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
// Start OLED display
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("SSD1306 allocation failed");
for (;;);
}
display.clearDisplay(); // Clear buffer
display.setTextSize(1); // Text size
display.setTextColor(SSD1306_WHITE);
display.setCursor(10, 10);
display.println("Hello, Arduino!");
display.display(); // Show text on screen
}
void loop() {
// Nothing here (text is static)
}
🔹 ما الذي يفعله هذا الكود:
✔ يقوم بتهيئة شاشة SSD1306.
✔ يطبع "Hello, Arduino!" على الشاشة.
✔ يستخدم عنوان I2C 0x3C (قد تستخدم بعض الوحدات 0x3D).
5. عرض الرسوم (خطوط، دوائر، صور)
لرسم الأشكال، عدّل الكود باستخدام دوال Adafruit GFX.
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
// Draw a rectangle
display.drawRect(10, 10, 50, 20, SSD1306_WHITE);
// Draw a filled circle
display.fillCircle(90, 16, 10, SSD1306_WHITE);
display.display();
}
void loop() {}
🔹 دوال رسم أخرى:
✔ display.drawLine(x1, y1, x2, y2, color); → يرسم خطاً
✔ display.drawCircle(x, y, radius, color); → يرسم دائرة
✔ display.drawRect(x, y, width, height, color); → يرسم مستطيلاً
6. مثال لفاصل نص متحرك
يقوم هذا المثال بتمرير النص أفقياً عبر شاشة OLED.
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println("Scrolling Text...");
display.display();
// Start scrolling
display.startscrollleft(0x00, 0x0F);
}
void loop() {}
🔹 دوال التمرير:
✔ display.startscrollleft(start, stop); → يمرر النص إلى اليسار
✔ display.startscrollright(start, stop); → يمرر النص إلى اليمين
✔ display.stopscroll(); → يوقف التمرير
7. نصائح استكشاف الأخطاء وإصلاحها
مشكلة: الشاشة لا تعرض أي شيء.
✅ تحقق من التوصيل (SDA و SCL متصلان بشكل صحيح).
✅ تأكد من أن عنوان OLED على I2C هو 0x3C (أو جرّب 0x3D).
✅ استخدم ماسح I2C لاكتشاف الجهاز:
#include
void setup() {
Wire.begin();
Serial.begin(115200);
Serial.println("Scanning...");
for (byte address = 8; address < 120; address++) {
Wire.beginTransmission(address);
if (Wire.endTransmission() == 0) {
Serial.print("Found I2C device at 0x");
Serial.println(address, HEX);
}
}
}
void loop() {}
مشكلة: النص صغير جداً أو كبير جداً.
✅ اضبط display.setTextSize(1); (زد القيمة للنص الأكبر).
8. تطبيقات عملية
✔ عرض بيانات المستشعر – عرض القراءات اللحظية من DHT11, BMP280، إلخ.
✔ عرض ساعة – دمج مع DS3231 وحدة RTC لصنع ساعة رقمية.
✔ أنظمة القوائم – استخدم أزراراً للتنقل بين القوائم.
✔ مؤشر جهد البطارية – مراقبة مستويات الطاقة في المشاريع المحمولة.
9. الخلاصة
استخدام 0.91" OLED مع Arduino هي طريقة رائعة لإضافة مخرج مرئي لمشاريعك. سواء أردت عرض نصوصاً أو رسوماً أو بيانات المستشعر، توفر هذه الشاشة الصغيرة تبايناً عالياً واستهلاك طاقة منخفضاً.




1 تعليق
Sres. buenas noches, gracias a su amables enseñanzas al menos yo he podido programar mis arduinos para escribir en pantallas OLED.
Ahora se me presenta otro reto, programar un arduino nano V3.0 con pantalla OLED 128 × 32 integrada, seria que nos ayudara si es que tienen el IDE para hacerlo?
Saludos afectuosos desde México.
Atte Fernando Soriano López