سيكون معظمنا على دراية بشاشة LCD ذات مصفوفة نقطية مقاس 16 × 2 تُستخدم في معظم المشاريع لعرض بعض المعلومات للمستخدم. لكن شاشات LCD هذه لديها الكثير من القيود فيما يمكن أن تفعله. في هذا البرنامج التعليمي سوف نتعرف على شاشات OLED وكيفية استخدامها Arduino. هناك الكثير من أنواع شاشات OLED المتاحة في السوق وهناك الكثير من الطرق لجعلها تعمل. سنناقش في هذا البرنامج التعليمي تصنيفاته وأيها سيكون الأنسب لمشروعك.
الأجهزة المطلوبة:
- وحدة عرض 7pin 128 × 64 OLED (SSD1306)
- اردوينو أونو / نانو
- اللوح
- توصيل الأسلاك
- حاسوب محمول
التعرف على شاشات OLED:
يرمز المصطلح OLED إلى " الصمام الثنائي الباعث للضوء العضوي" ، وهو يستخدم نفس التقنية المستخدمة في معظم أجهزة التلفزيون لدينا ولكن بها عدد أقل من وحدات البكسل مقارنة بها. من الممتع حقًا أن يتم ربط وحدات العرض الرائعة هذه مع Arduino لأنها ستجعل مشاريعنا تبدو رائعة. لقد قمنا بتغطية مقال كامل حول شاشات OLED وأنواعها هنا.
نحن نستخدم شاشة OLED أحادية اللون ذات 7 أسنان SSD1306 0.96 بوصة. سبب اختيار هذا العرض هو أنه يمكن أن يعمل على ثلاثة بروتوكولات اتصالات مختلفة مثل وضع SPI 3 Wire ووضع SPI بأربعة أسلاك ووضع IIC. سيغطي هذا البرنامج التعليمي كيفية استخدام الوحدة في وضع SPI 4-wire حيث إنه أسرع وضع للاتصال والوضع الافتراضي.
يتم شرح المسامير ووظائفها في الجدول أدناه.
الرقم السري |
اسم الدبوس |
اسماء اخرى |
إستعمال |
1 |
Gnd |
أرض |
الدبوس الأرضي للوحدة |
2 |
Vdd |
Vcc ، 5 فولت |
دبوس الطاقة (3-5V مقبول) |
3 |
SCK |
D0 ، SCL ، CLK |
بمثابة دبوس الساعة. تستخدم لكل من I2C و SPI |
4 |
SDA |
D1 ، MOSI |
دبوس البيانات للوحدة. تستخدم لكل من IIC و SPI |
5 |
RES |
RST ، إعادة تعيين |
يعيد تعيين الوحدة (مفيد أثناء SPI) |
6 |
العاصمة |
أ 0 |
دبوس أمر البيانات. يستخدم لبروتوكول SPI |
7 |
CS |
اختيار رقاقة |
يكون مفيدًا عند استخدام أكثر من وحدة واحدة بموجب بروتوكول SPI |
في هذا البرنامج التعليمي ، سنقوم ببساطة بتشغيل الوحدة في وضع 4-Wire SPI ، وسنترك الباقي لبعض البرامج التعليمية الأخرى.
لقد قدم لنا مجتمع Arduino بالفعل الكثير من المكتبات التي يمكن استخدامها مباشرة لجعل هذا الأمر أكثر بساطة. لقد جربت بعض المكتبات ووجدت أن مكتبة Adafruit_SSD1306 كانت سهلة الاستخدام للغاية ولديها عدد قليل من الخيارات الرسومية ومن ثم سنستخدمها في هذا البرنامج التعليمي. ولكن ، إذا كان مشروعك به قيود على الذاكرة / السرعة ، فحاول استخدام مكتبة U8g لأنها تعمل بشكل أسرع وتشغل ذاكرة أقل للبرنامج.
الأجهزة والتوصيلات:
في مخطط الدائرة لSSD1306 OLED التواصل مع اردوينو هو حقا بسيطة وهو مبين أدناه
لقد أنشأنا ببساطة اتصال SPI بين وحدة OLED و Arduino. نظرًا لأن OLED يعمل على 3V-5V ويستهلك القليل جدًا من الطاقة ، فإنه لا يحتاج إلى مصدر طاقة خارجي. يمكنك ببساطة استخدام الأسلاك لإجراء الاتصال أو استخدام لوح التجارب كما استخدمته حتى يسهل تجربته. الاتصال مدرج أيضًا في الحكاية أدناه
لا |
اسم الدبوس على وحدة OLED |
اسم الدبوس على اردوينو |
1 |
Gnd ، الأرض |
أرض |
2 |
Vdd ، Vcc ، 5 فولت |
5 فولت |
3 |
SCK ، D0 ، SCL ، CLK |
10 |
4 |
SDA ، D1 ، MOSI |
9 |
5 |
RES ، RST ، RESET |
13 |
6 |
العاصمة ، A0 |
11 |
7 |
CS ، رقاقة حدد |
12 |
ملاحظة: لن تكون قادرًا على تصور أي إضاءة خلفية / توهج على وحدة OLED بمجرد تشغيلها. يجب عليك برمجته بشكل صحيح لملاحظة أي تغييرات على شاشة OLED.
برمجة شاشة SSD1306 OLED لـ Arduino:
بمجرد أن تصبح الاتصالات جاهزة ، يمكنك البدء في برمجة Arduino. كما ذكرنا سابقًا ، سنستخدم مكتبة Adafruit ومكتبة GFX للعمل مع وحدة OLED هذه. اتبع الخطوات لاختبار تشغيل شاشة OLED.
الخطوة 1: قم بتنزيل مكتبة Adafruit ومكتبة GFX من Github باستخدام الرابط أدناه
- مكتبة Adafruit
- مكتبة رسومات GFX
الخطوة 2: يجب أن تقوم بتنزيل ملفين من نوع Zip. قم الآن بإضافتها إلى Arduino الخاص بك باتباعك
Sketch-> Include Library -> إضافة مكتبة Zip كما هو موضح أدناه. ثم حدد المكتبة التي قمنا بتنزيلها للتو. يمكنك تحديد مكتبة واحدة فقط في كل مرة ، وبالتالي عليك تكرار هذه الخطوة مرة أخرى.
الخطوة 3: قم بتشغيل مثال البرنامج عن طريق تحديد ملف-> أمثلة-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino كما هو موضح في الصورة أدناه.
الخطوة 4: داخل المثال البرنامج أعلى السطر 64 أضف السطر "#define SSD1306_LCDHEIGHT 64" كما هو موضح في الصورة أدناه.
الخطوة 5: الآن قم بتحميل البرنامج وسترى شاشة OLED تظهر مع رمز مثال Adafruit الافتراضي كما هو موضح في الصورة أدناه. يتم تقديم فيديو العمل الكامل في النهاية.
يوضح لك هذا البرنامج النموذجي جميع الرسومات الممكنة التي يمكن عرضها على شاشة OLED. يجب أن يكون هذا الرمز كافيًا بالنسبة لك لإنشاء صور نقطية ورسم خطوط / دوائر / مستطيلات واللعب بالبكسل وعرض أحرف وسلسلة بخطوط وأحجام مختلفة وما إلى ذلك…
إذا كنت ترغب في فهم المكتبة ووظائفها بشكل أفضل ، يمكنك قراءة المزيد. يتم تقسيم كل خردة من الكود وشرحها بمساعدة سطور التعليق. يتم توفير رمز كامل في نهاية هذه المقالة
عرض ومسح الشاشة:
الكتابة على شاشة OLED تشبه الكتابة على السبورة السوداء ، يتعين علينا كتابة القيم ثم تنظيفها قبل الكتابة فوقها. تُستخدم الأوامر التالية لكتابة الشاشة ومسحها
display.display () ، // اكتب لعرض العرض. ClearDisplay () ؛ // امسح العرض
عرض متغير الحرف:
لعرض المحتوى داخل متغير يمكن استخدام الكود التالي.
شار أنا = 5 ؛ // المتغير المراد عرضه display.setTextSize (1) ؛ // حدد حجم شاشة النص.setTextColor (WHITE) ؛ // للعرض أحادي اللون يمكن عرض اللون الأبيض فقط. setCursor (0،0) ؛ // 0،0 هو الزاوية اليسرى العلوية لشاشة OLED. الكتابة (i) ؛ // اكتب المتغير المراد عرضه
رسم خط ، دائرة ، مستطيل ، مثلث:
إذا كنت تريد إضافة بعض الرموز إلى شاشتك ، يمكنك استخدام الكود التالي لرسم أي مما يلي
display.drawLine (display.width () - 1، 0، i، display.height () - 1، WHITE) ؛ // void drawLine (x0، y0، x1، y1، color) ؛ display.drawRect (i، i، display.width () - 2 * i، display.height () - 2 * i، WHITE) ؛ // void drawRect (x0، y0، w، h، color) ؛ display.drawTriangle (display.width () / 2 ، display.height () / 2-i ، display.width () / 2-i ، display.height () / 2 + i ، display.width () / 2+ i ، display.height () / 2 + i ، WHITE) ؛ // باطل drawTriangle (x0 ، y0 ، x1 ، y1 ، x2 ، y2 ، اللون) ؛ display.drawCircle (display.width () / 2، display.height () / 2، i، WHITE) ؛ // void drawCircle (x0، y0، r، color) ؛
رسم سلسلة على الشاشة:
يمكن استخدام الجزء التالي من التعليمات البرمجية لعرض أي رسالة على الشاشة في مكان وحجم معينين
display.setTextSize (2) ، // تعيين حجم عرض النص. setTextColor (WHITE) ؛ // عرض إعداد اللون. setCursor (10،0) ؛ // ستبدأ السلسلة عند 10،0 (x، y) display.clearDisplay ()؛ // ممحاة أي عرض سابق على شاشة العرض. println ("ملخص الدائرة") ؛ // اطبع السلسلة هنا "Circuit Digest" display.display ()؛ // أرسل النص إلى الشاشة
عرض صورة نقطية:
أحد الأشياء غير الموثوقة التي يمكن القيام بها باستخدام وحدة OLED هو أنه يمكن استخدامها لعرض الصور النقطية. يتم استخدام الكود التالي لعرض صورة نقطية
ثابت const غير موقعة char PROGMEM logo16_glcd_bmp = {B00000000 ، B11000000 ، B00000001 ، B11000000 ، B00000001 ، B11000000 ، B00000011 ، B11100000 ، B11110011 ، B11100000 ، B11111110 ، B11111000 ، B01111110 ، B11101111 ، B1100 B10100000 ، B00111111 ، B11100000 ، B00111111 ، B11110000 ، B01111100 ، B11110000 ، B01110000 ، B01110000 ، B00000000 ، B00110000} ؛ display.drawBitmap (XPO]، YPOS، bitmap، w، h، WHITE) ؛ // void drawBitmap (x، y، * bitmap، w، h، color) ؛
كما ترى ، لعرض صورة ، يجب تخزين بيانات الصورة النقطية في ذاكرة البرنامج في شكل توجيه PROMGMEM. ببساطة ، علينا أن نوجه شاشة OLED بما يجب فعله بكل بكسل عن طريق تمرير تسلسل أو قيم من مصفوفة كما هو موضح أعلاه. ستحتوي هذه المجموعة على بيانات الصورة النقطية للصورة.
قد يبدو الأمر معقدًا ولكن بمساعدة أداة الويب ، من السهل جدًا تحويل صورة إلى قيم خريطة صغيرة وتحميلها في المصفوفة أعلاه.
ما عليك سوى تحميل الصورة وضبط الإعدادات للحصول على المعاينة المفضلة للصورة. ثم انقر فوق "إنشاء رمز" انسخ الكود والصقه في صفيفك. قم بتحميل البرنامج وأنت على وشك الانتهاء. حاولت عرض شعار باتمان وهكذا ظهر الأمر.
لا يزال هناك الكثير من الأشياء التي يمكنك فعلها بهذه المكتبات. لمعرفة الاحتمالات الكاملة ، قم بزيارة صفحة Adafruit GFX Graphics Primitives.
آمل أن تكون قد شغلت هذا وأن تكون جاهزًا لتنفيذ شاشة OLED في بعض مشاريعك. إذا كانت لديك أي مشكلة ، فشاركها في قسم التعليقات وسأبذل قصارى جهدي لتصحيحها.