شاشة OLED 0.91
حول المشروع:
هذا الدرس يشرح طريقة استخدام شاشة OLED مع الأردوينو. تعتبر الشاشة خيارا ممتازا للكثير من التطبيقات حيث انها تعطي سطوع أقوى وتستهلك طاقة أقل وتوفر مرونة نظرية أكبر مقارنة بالشاشات الأخرى.
الأدوات والمعدات الألكترونية المطلوبة:
1 – أردوينو أونو.
2 – شاشة OLED 0.91.
3 – أسلاك M-F.

الدائرة الكهربائية والتوصيل

شاشة OLED 0.91 متوافقة مع برتوكل I2C مما يجعل التوصيل أسهل نسبيا حيث يتم توصيل سلكين فقط لنقل البيانات باستخدام I2C. لكل لوحة الكترونية منافذ خاصة ل I2C في هذا الدرس نستخدم اردوينو اونو التي تخصص مدخلين A5 و A4 للاتصال عبر I2C. إذا بعد تغذية الشاشة بالتيار الكهربائي يتم توصيل منفذ SDA وهو منفذ البايانات بمنفذ A4 للاردوينو في حين يوصل منفذ (Clock) SCK بمنفذ A5 للاردوينو.
البرمجة:
اولا يجب تنزيل المكتبات المخصصة للشاشة وهما مكتبتين الأولى (Adafruit_SSD1306) والثانية (Adafruit_GFX). لتنزيل المكتبات قم بالضغط على ادوات ومن ثم ادارة االمكتبات . بعد ذلك يمكنك البحث عن اسم المكتبة والضغط عليه لتنزيلها. بعد تنزيل المكتبات يجب تضينها ضمن الكود بالإضافة للمكتبة Wire المخصصة للتواصل عبر I2C ومن ثم تعريف كل من ابعاد الشاشة بالبكسل و زر إعادة الضبط (نعطيه القيمة -1 حيث يكون نفس زر reset الاردوينو ) و عنوان الشاشة ومن ثم تعريف كائن للكلاس Adafruit_SSD1306 وتمرير قيم ابعاد الشاشة وبروتوكول الاتصال وزر اعادة الضبط .
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
بعد ذلك يتم إضافة كود مخصص لاتوليد اشارة 3.3 فولت داخلية للشاشة. ومسح كافة المعروضات السابقة باستخدام الدالة clearDisplay . قبل العرض على الشاشة يجب ضبط حجم الخط واللون وموقع العرض باستخدام الدوال setTextSize, setTextColor, setCursor . اخيرا يتم العرض باستخدام الدالة print. يجب الانتباه ان الطباعة على الشاشة لن تتم إلا بعد استخادم الدالة display.
void setup() {
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
for(;;); }
display.clearDisplay();
}
void loop() {
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.clearDisplay();
display.print("Hello Word");
delay(1000);
display.display();
}
كما يمكن تحريك النص من اليمين لليسار او من اليسار لليمين بشكل مستقيم باستخدام دالتي startscrollright و startscrollleft او بشكل قطري باستخدام دالتي startscrolldiagright و startscrolldiagleft في حيث تستخدم الدالة stopscroll للايقاف.

void loop() {
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.print("Hello World");
display.startscrollright(0x00,0x0F);
delay(2000);
display.stopscroll();
display.startscrolldiagleft(0x00, 0x07);
delay(2000);
display.display();
}