كود أردوينو وفيديو لشاشة SSD1306 OLED 128 x 32 مع I2C
في هذا الدرس سنستعرض كيفية استخدام شاشة OLED طراز SSD1306 بمقاس 128 × 32 مع واجهة الاتصال I2C على لوحة أردوينو. الهدف هو عرض عناصر متنوعة مثل النصوص والمستطيلات والقيم الديناميكية مثل الجهد ودرجة الحرارة على الشاشة. هذا الإعداد مثالي للمشاريع التي تتطلب حلاً صغير الحجم وفعالًا لعرض البيانات.

سنستعرض مكونات الأجهزة اللازمة وتعليمات التوصيل وكود الأردوينو لتشغيل كل شيء. للحصول على دليل مرئي، تأكد من مشاهدة الفيديو المرافق لهذا الدرس (في الفيديو عند 00:00).
شرح الأجهزة
تشمل المكونات الرئيسية لهذا المشروع شاشة SSD1306 من نوع OLED، وهي شاشة منخفضة الطاقة تستخدم بروتوكول I2C لتسهيل الربط. تتميز الشاشة بدقة 128 × 32 بكسل، مما يجعلها مناسبة لعرض النصوص والالرسومات البسيطة.
للتحكم في الشاشة سنستخدم لوحة أردوينو، التي سترسل الأوامر والبيانات عبر I2C. يتولى الأردوينو منطق عرض المعلومات باستخدام مكتبات مثلAdafruit_GFXوAdafruit_SSD1306. تُبَسِّط هذه المكتبات عملية الاتصال وتسمح برسم الأشكال والنصوص بسهولة
تفاصيل ورقة البيانات
| المصنّع | أدافروت |
|---|---|
| رقم القطعة | SSD1306 |
| جهد المنطق/المدخلات والمخرجات | 3.3 - 5 فولت |
| جهد التغذية | 3.3 - 5 فولت |
| استهلاك التيار الكهربائي | ~20 mA (نموذجي) |
| دقة العرض | 128 × 32 بكسل |
| واجهة | آي2سي |
| الأبعاد | 128 × 32 مم |
| ملاحظات / تنويعات | متوفر بأحجام وواجهات متنوعة |
- تحقق من عنوان I2C، عادةً 0x3C لشاشات OLED.
- تأكد من توفير مصدر طاقة مناسب لتجنب الضرر.
- استخدم مقاومات سحب للأعلى لخطّي SDA وSCL إذا لزم الأمر.
- اجعل التوصيلات قصيرة لتقليل التشويش في إشارة I2C.
- ضع في الاعتبار تبديد الحرارة عند تزويد عدة وحدات بالطاقة.
تعليمات الأسلاك

لتوصيل شاشة OLED طراز SSD1306، قم أولاً بتوصيل دبوس VCC في الشاشة بمخرج 5V في الأردوينو. بعد ذلك، وصل دبوس GND بأحد دبابيس الأرضي في الأردوينو. لواجهة I2C، وصل دبوس SDA في الشاشة بدبوس SDA في الأردوينو، والذي يكون A4 في لوحة UNO. ثم وصل دبوس SCL في الشاشة بدبوس SCL في الأردوينو، والذي يكون A5 في لوحة UNO. إذا كنت تستخدم طراز أردوينو مختلفاً، راجع تخصيص الدبابيس الخاص بالطراز لمعرفة مواقع SDA وSCL.
للمكونات الإضافية، إذا كان لديك صمام ضوئي (LED) ترغب في التحكم به، فوصّله بالدبوس 9 عبر مقاوم قيمته 330 أوم. تأكد من توصيل الطرف الآخر للمقاوم بالأنود للصمام، بينما يجب توصيل الكاثود بالأرضي. سيسمح هذا التوصيل بإضاءة الصمام عندما يُفعّل الدبوس 9.
أمثلة على الكود وشرح خطوة بخطوة
في كود الأردوينو، نبدأ بتضمين المكتبات اللازمة لشاشة OLED. أحد المعرّفات الرئيسية هوdisplay، وهو مثال على الـAdafruit_SSD1306الفئة. يتم تهيئة العرض في الـsetup()الدالة، حيث نقوم أيضًا بمسح الشاشة للتحضير للرسم.

void setup() {
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
}في الـloop()في الدالة نُعرّف متغيرًا نصيًاvStringللاحتفاظ بقيمة الجهد، التي يتم تحديثها ديناميكيًا. الـrobojaxText()تُستخدم الدالة لعرض نص على الشاشة عند إحداثيات محددة.
void loop() {
String vString = String(count, 3);
display.clearDisplay();
robojaxText("Voltage: ", 4, 3, 1, false);
robojaxText(vString, 72, 3, 1, false);
display.display();
count += 0.173;
delay(2000);
}الrobojaxText()الدالة ضرورية لتحديد موضع النص وعرضه. تأخذ معلمات لسلسلة النص، وإحداثيات x و y، وحجم النص، وقيمة منطقية لتحديد ما إذا كان يجب تحديث العرض على الفور.
void robojaxText(String text, int x, int y, int size, boolean d) {
display.setTextSize(size);
display.setTextColor(WHITE);
display.setCursor(x, y);
display.println(text);
if(d) {
display.display();
}
}تقوم هذه الدالة بتعيين حجم النص ولونه وموضع المؤشر قبل طباعة النص. تذكّر مشاهدة الفيديو للحصول على شرح كامل للكود (في الفيديو عند 10:00).
عرض توضيحي / ما الذي تتوقعه
عند رفع الكود إلى الأردوينو، يجب أن تعرض شاشة OLED قيم الجهد ودرجة الحرارة والسعة وتُحدَّث ديناميكيًا كل ثانيتين. يجب أيضًا أن ترى مستطيلًا مرسومًا حول عناصر النص. إذا لم تُظهر الشاشة أي شيء، فتأكد من أن الوصلات صحيحة وأن عنوان I2C يطابق العنوان المحدد في الكود.
طوابع زمنية للفيديو
- 00:00- مقدمة عن المشروع
- 02:00- تعليمات الأسلاك
- 05:00- شرح الكود
- 10:00- عرض المخرجات
الأشياء التي قد تحتاجها
-
أمازونPurchase OLED 128x32 from Amazonamzn.to
-
علي إكسبريسPurchase SSD1306 OLED 128x32 from AliExpresss.click.aliexpress.com
الموارد والمراجع
-
خارجيمكتبة Adafruit-GFX (من GitHub)github.com
-
خارجيمكتبة SSD1306 (من GitHub)github.com
ملفات📁
لا توجد ملفات متاحة.