أ 0.91 "شاشة OLED هي شاشة صغيرة عالية التباين مثالية ل عرض بيانات النص والرسومات وبيانات المستشعر في مشاريع أردوينو. هذا الدليل سوف يسير لك من خلال الأسلاك والترميز وعرض النص والرسومات باستخدام وحدة OLED المستندة إلى SSD1306 مع أردوينو.
1. ما تحتاجه
✅ لوحة أردوينو (Uno ، Mega ، Nano ، إلخ)
✅ 0.91 "شاشة OLED (SSD1306 ، I2C)
✅ الأسلاك الطائر
✅ Arduino IDE مثبتة
🔹 ملحوظة: يركز هذا البرنامج التعليمي على اتصال I2Cالذي يستخدم فقط سلكان (SDA و SCL)مما يجعلها مثالية للمشاريع البسيطة.
2. الأسلاك 0.91 "OLED إلى Arduino (وضع I2C)
دبوس عرض OLED | Arduino Uno Pin | Arduino Nano Pin |
---|---|---|
VCC | 5V | 5V |
GND | GND | GND |
SDA | A4 (SDA) | A4 (SDA) |
SCL | A5 (SCL) | A5 (SCL) |
🔹 لأردوينو ميجا: يستخدم SDA (PIN 20) و SCL (PIN 21).
3. تثبيت المكتبات المطلوبة
قبل الترميز ، قم بتثبيت ملف Adafruit SSD1306 و Adafruit GFX المكتبات:
- يفتح Arduino IDE.
- اذهب إلى رسم ← تضمين مكتبة ← إدارة المكتبات.
- بحث عن Adafruit SSD1306 وتثبيته.
- بحث عن Adafruit GFX وتثبيته.
4. الكود الأساسي لعرض النص على OLED
هذا المثال يهيئة OLED والعروض "مرحبا ، أردوينو!".
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// 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.
✔ مطبوعات "مرحبا ، أردوينو!" على الشاشة.
✔ يستخدم عنوان 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 <Wire.h>
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 هي طريقة رائعة للإضافة الإخراج البصري لمشاريعك. سواء كنت تريد عرضها نص أو رسومات أو بيانات المستشعر، تقدم هذه الشاشة الصغيرة التباين العالي وانخفاض استهلاك الطاقة.