مواجــهة شـاشـة أوليــد الرســومـيـــة OLED مـــع الاردويـنـــو اكتب تعليقُا

تم نشر هذا المشروع لجميع الأشخاص المهتمين في مجال تصنيع وابتكار المشاريع الإلكترونية والبرمجية، و نود التنويه أن موقع انا الكتروني يخلي مسؤوليته التامة في حال لم يعمل المشروع لدى العميل أو في حال الاستخدام الخاطئ للمكونات الإلكترونية والكهربائية التي قد تؤدي لحدوث الحرائق أو غيرها لا سمح الله.

OLED

أذا تضجرت أو شعرت بالملل من استخدام شاشة LCD في مشاريع الاردوينو مرارا وتكرارا ؟ حسنا ! هم في الواقع شيء من الماضي . أدخل شاشات OLED الرائعة (Organic Light-Emitting Diode)! إنها فائقة الإضاءة ، ورقيقة تقريبًا ، ومرنة من الناحية النظرية ، وتنتج صورة أكثر إشراقًا .

مواجهة الدرايفر SSD1306 OLED

يوجد في قلب الوحدة وحدة تحكم قوية CMOS OLED أحادية الرقاقة – SSD1306 . يمكنها التواصل مع المتحكم بطرق متعددة بما في ذلك برتكولات  I2C و SPI .

برتكول SPI أسرع بشكل عام من برتكول I2C ولكنه يتطلب دبابيس I / O أكثر . بينما يتطلب I2C دبابيس اثنين فقط ويمكن مشاركتها مع الأجهزة الطرفية الأخرى . إنها مفاضلة بين الدبابيس والسرعة . لذلك ، فإنها تتلخص حقًا حسب اختيارك .

1

بفضل براعة وحدة التحكم SSD1306 ، تأتي الوحدة بأحجام وألوان مختلفة : على سبيل المثال 128 × 64 ، 128 × 32 ، مع OLEDs الأبيض ، OLEDs الأزرق و OLEDs ثنائي اللون . والخبر السار هو أن كل هذه العروض قابلة للتبديل .

2

متطلبات امدادات الطاقة لشاشة OLED

تعمل شاشة OLED بدون إضاءة خلفية لأنها تعمل على إضاءةها . هذا هو السبب في أن الشاشة لديها مثل هذا التباين العالي ، وزاوية العرض واسعة للغاية ويمكن أن تعرض مستويات سوداء عميقة . غياب الإضاءة الخلفية يقلل بشكل كبير من الطاقة اللازمة لتشغيل OLED . في المتوسط ، تستخدم الشاشة حوالي 20 مللي أمبير في الوقت الحالي ، على الرغم من أن ذلك يعتمد على مقدار إضاءة الشاشة .

يتراوح جهد التشغيل لوحدة التحكم SSD1306 من 1.65 فولت إلى 3.3 فولت بينما تتطلب لوحة OLED جهد تزويد من 7 فولت إلى 15 فولت . كل هذه المتطلبات المختلفة للطاقة كافية باستخدام دوائر مضخة الشحن الداخلي . هذا يجعل من الممكن توصيلها إلى الاردوينو أو أي متحكم منطق 5V بسهولة دون استخدام أي محول .

خريطة الذاكرة لشاشة OLED

بغض النظر عن حجم وحدة OLED ، يحتوي برنامج التشغيل SSD1306 على ذاكرة الوصول العشوائي (GDDRAM) المدمجة 1KB لعرض الشاشة التي تحتوي على نمط بت ليتم عرضها . يتم تنظيم منطقة الذاكرة هذه بحجم 1 كيلو في 8 صفحات (من 0 إلى 7) . تحتوي كل صفحة على 128 عمودًا أو مقطعًا (المربع من 0 إلى 127) . ويمكن لكل عمود تخزين 8 بت من البيانات (من 0 إلى 7) . هذا يخبرنا بالتأكيد لدينا :

8 pages x 128 segments x 8 bits of data = 8192 bits = 1024 bytes = 1KB memory

يتم تمييز ذاكرة 1K بأكملها مع الصفحات والشرائح والبيانات أدناه .

1KB-128x64-OLED-Display-RAM-Memory-Map (1)

يمثل كل بت بكسل OLED معينًا على الشاشة يمكن تشغيله أو إيقاف تشغيله برمجيًا .

تعرض شاشة 128 × 64 OLED جميع محتويات ذاكرة الوصول العشوائي بينما تعرض شاشة 128 × 32 OLED 4 صفحات فقط (نصف المحتوى) من ذاكرة الوصول العشوائي .

هنا المواصفات الكاملة :

3

أطراف شاشة OLED Display

دعونا نلقي الان نظرة على الاطراف .

128x64-I2C-OLED-Display-Pinout
  • GND يجب أن تكون مرتبطة إلى GND الاردوينو .
  • VCC هو مصدر الطاقة للشاشة الذي نقوم بتوصيله الي دبوس 5 فولت على اردوينو .
  • SCL هو دبوس الساعة التسلسلية لواجهة I2C .
  • SDA هو دبوس البيانات التسلسلية لواجهة I2C .

الأسلاك - ربط وحدة شاشة OLED لاردوينو أونو

قبل أن نصل إلى تحميل الكود وإرسال البيانات إلى الشاشة ، دعونا نربط الشاشة بأردوينو .

الاتصالات بسيطة إلى حد ما . ابدأ بتوصيل دبوس VCC بمخرج 5V على الاردوينو وقم بتوصيل GND بالأرضي .
الآن ما زلنا مع الاطراف التي يتم استخدامها للاتصال I2C . لاحظ أن كل لوحة اردوينو بها دبابيس I2C مختلفة يجب توصيلها وفقًا لذلك . على لوحات الاردوينو ذات تخطيط R3 ، توجد SDA (خط البيانات) و SCL (خط الساعة) على رؤوس الدبوس القريبة من دبوس AREF. وهي معروفة أيضًا باسم A5 (SCL) و A4 (SDA) .

إذا كان لديك ميجا ، فإن الاطراف مختلفة ! ستحتاج إلى استخدام الرقمين 21 (SCL) و 20 (SDA) . أو الرجوع للجدول أدناه لفهم سريع .

5

يوضح لك الرسم التوضيحي التالي كيفية توصيل كل شيء .

Wiring-Fritzing-Connecting-128x64-OLED-Display-Module-With-Arduino

كود الاردوينو - عرض النص في شاشة OLED

الآن تأتي الأشياء المثيرة للاهتمام !

سيقوم كود الاختبار التالي بطباعة رسالة “Hello World!” على الشاشة .

يمنحك هذا فهمًا تامًا لكيفية استخدام شاشة OLED ويمكن أن يكون بمثابة أساس لمزيد من التجارب العملية والمشاريع .

عند إنشاء الكود ، سيعرض IDE رسالة تحذير انخفاض الذاكرة . وذلك لأن المكتبة تخصص 1 كيلوبايت من الذاكرة من ATmega328P كمخزن مؤقت للعرض . يمكنك تجاهلها .

تنبيه : في حال لم تكن متأكد من قدرتك على تنفيذ خطوات المشروع يرجى استشارة شخص متخصص في هذا المجال.
لتحميل الكود البرمجي اضغط هنا
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Adafruit_SSD1306 display(-1);

void setup()   
{                
  // initialize with the I2C addr 0x3C
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  

  // Clear the buffer.
  display.clearDisplay();

  // Display Text
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0,28);
  display.println("Hello world!");
  display.display();
  delay(2000);
  display.clearDisplay();

  // Display Inverted Text
  display.setTextColor(BLACK, WHITE); // 'inverted' text
  display.setCursor(0,28);
  display.println("Hello world!");
  display.display();
  delay(2000);
  display.clearDisplay();

  // Changing Font Size
  display.setTextColor(WHITE);
  display.setCursor(0,24);
  display.setTextSize(2);
  display.println("Hello!");
  display.display();
  delay(2000);
  display.clearDisplay();

  // Display Numbers
  display.setTextSize(1);
  display.setCursor(0,28);
  display.println(123456789);
  display.display();
  delay(2000);
  display.clearDisplay();

  // Specifying Base For Numbers
  display.setCursor(0,28);
  display.print("0x"); display.print(0xFF, HEX); 
  display.print("(HEX) = ");
  display.print(0xFF, DEC);
  display.println("(DEC)"); 
  display.display();
  delay(2000);
  display.clearDisplay();

  // Display ASCII Characters
  display.setCursor(0,24);
  display.setTextSize(2);
  display.write(3);
  display.display();
  delay(2000);
  display.clearDisplay();

  // Scroll full screen
  display.setCursor(0,0);
  display.setTextSize(1);
  display.println("Full");
  display.println("screen");
  display.println("scrolling!");
  display.display();
  display.startscrollright(0x00, 0x07);
  delay(2000);
  display.stopscroll();
  delay(1000);
  display.startscrollleft(0x00, 0x07);
  delay(2000);
  display.stopscroll();
  delay(1000);    
  display.startscrolldiagright(0x00, 0x07);
  delay(2000);
  display.startscrolldiagleft(0x00, 0x07);
  delay(2000);
  display.stopscroll();
  display.clearDisplay();

  // Scroll part of the screen
  display.setCursor(0,0);
  display.setTextSize(1);
  display.println("Scroll");
  display.println("some part");
  display.println("of the screen.");
  display.display();
  display.startscrollright(0x00, 0x00);
}

void loop() {}

يجب أن تشاهد الاخراج أدناه :

Displaying-Text-On-OLED-Dsiplay-Module

أنتهت !!!

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *