كيفية توصيل شاشة OLED I2C بالاردوينو

مقدمة: مقدمة لشاشة OLED I2C 128*64 / 128*32.
كيفية توصيل شاشة OLED I2C بالاردوينو

مرحبًا! كوني من هواة الإلكترونيات، فأنا متأكد من أن كل ما نقوم به - الألعاب الإلكترونية، أو المنتجات محلية الصنع، أو المشاريع الكبيرة - كلها بدافع الفضول والكسل. يسعى الفضول إلى فهم وفهم المجهول الواسع، لمعرفة كيف يعمل هناك، وماذا يفعل، وكيف يتحرك. والكسل يخترع شيئًا ليتوصل إليه، حتى لا يقوم، ولا يقترب، ولا يرفع، ولا يتسخ أو أي شيء آخر مهم.

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

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

الخطوة 1: المفاهيم الأساسية


سنقوم بربطه مع Arduino UNO/NANO وسنبرمجه أيضًا من خلال Arduino.
  • OLED هو صمام ثنائي عضوي باعث للضوء، أي جهاز شبه موصل مصنوع من مركبات عضوية يبدأ في إصدار الضوء عندما يمر تيار كهربائي من خلاله.
  • ARDUINO هي عبارة عن منصة للتدريب وبناء أنظمة الأتمتة والروبوتات.
  • اردوينو آي دي - بيئة التطوير. هذا برنامج برمجة اردوينو مجاني.
  • I2C – دوائر متكاملة، خط اتصال بين الرقائق.
  • رسم، ويعرف أيضًا باسم الكود، ويعرف أيضًا باسم البرنامج - مصطلحات اردوينو.

اتبع التعليمات لفهم كيفية توصيل شاشة OLED وتكوينها بشكل صحيح مع Arduino وكيفية عرض رسالة مخصصة على شاشتها.
نحن نفعل كل شيء خطوة بخطوة.

الخطوة 2: الملحقات


نحتاج فقط إلى أربعة أشياء:
  • 1. يبلغ حجم شاشة OLED نفسها 0.96 بوصة (يمكنك شراؤها من موقع Aliexpress أو Ebay، فهي طويلة ولكنها رخيصة الثمن!).
  • 2. Arduino UNO/Nano (نفس مكان الشاشة).
  • 3. توصيل الأسلاك (المرجع نفسه).
  • 4. كمبيوتر أو كمبيوتر محمول مثبت عليه ArduinoIDE.

كيفية توصيل شاشة OLED I2C بالاردوينو

بشكل عام، يعد شراء أجزاء لمشاريع مختلفة على Aliexpress وEbay أمرًا رائعًا جدًا، بينما تعمل في مشروع واحد، تكون قطع الغيار لمشروع آخر في الطريق بالفعل. الشيء الرئيسي هو عدم نسيان تقديم الطلب.

الخطوة 3: توصيل الشاشة


يتم التحكم في الشاشة بواسطة شريحة SSD1306، التي تدعم خمسة بروتوكولات اتصال، أحدها هو I2C. يتم نقل البيانات باستخدام هذا البروتوكول عبر سلكين فقط، وكلما قل عدد الأسلاك في العلبة، كان ذلك أفضل، لذلك فهو يناسبنا جيدًا.لكن! هناك وحدات مع بروتوكول SPI وحتى مع تبديل البروتوكول، لذا كن حذرًا عند شراء هذه الوحدة.
كيفية توصيل شاشة OLED I2C بالاردوينو

الدبابيس المستخدمة:
شاشة OLED - SCL/SCK (ساعة) وSDA (بيانات)، طاقة "زائد" (VCC) وطاقة "ناقص" (GND).
كيفية توصيل شاشة OLED I2C بالاردوينو

الدبابيس المستخدمة:
Arduino UNO - SCL/SCK على A5 و SSD على A4، طاقة "زائد" (+5 فولت) وطاقة "ناقص" (GND).
توصيل الشاشة بالاردوينو:
  • في سي سي - 5 فولت
  • غند - غند
  • سدا-A4
  • SCL-A5

كيفية توصيل شاشة OLED I2C بالاردوينو

الخطوة 4: الماسح الضوئي I2C


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

في المجمل، يمكن استخدام ما يصل إلى 127 عنوانًا في الناقل - 119 للأجهزة و8 عناوين الخدمة. يتم التواصل على هذه العناوين. هناك رئيسي، ويعرف أيضًا باسم السيد، وهناك عبد، ويعرف أيضًا باسم العبد - السادة يسألون، والعبيد يجيبون، كل شيء بسيط.
نظرًا لأن شاشة OLED الخاصة بنا تستخدم بروتوكول الاتصال I2C، وقد لا يتم تحديد العنوان، فسنحاول معرفة هذا العنوان بأنفسنا.

يمكنك القيام بذلك عن طريق تحميل رسم قصير على لوحة Arduino الخاصة بك مع توصيل OLED. لكن!
لا تتعجل في تحميل المخطط على Arduino على الفور! لنقم أولاً بتنزيل "برامج التشغيل"، أي. فلنقم بتوصيل المكتبات، وللقيام بذلك سننتقل فورًا إلى "الخطوة رقم 5"، ثم نعود ونواصل.

الخطوة 4: تابع:


قم بتنزيل CODE Finder_I2C_Hex_Address.ino، وقم بتحميله إلى Arduino.
افتح "Port Monitor"، واضبط السرعة على 9600 وإذا كان كل شيء متصلاً بشكل صحيح، فسيعرض البرنامج عنوان الجهاز، في حالتي OLED بعنوان 0x3F.
كيفية توصيل شاشة OLED I2C بالاردوينو

الخطوة 5: تنزيل المكتبات وتوصيلها


لكي يعمل كل شيء بشكل صحيح، وليس عليك إعادة اختراع العجلة، تحتاج إلى توصيل مكتبتين ببيئة ArduinoIDE، وهما: ADAFRUIT GFX و ADAFRUIT SSD1306، وهما ضروريان لكي يتمكن Arduino من التواصل بشكل مستقل مع شاشة OLED.
يمكنك تضمين هذه المكتبات باتباع الخطوات التالية.
  • 1. في ArduinoIDE، انتقل إلى قائمة Sketch.
  • 2. حدد "تضمين المكتبات".
  • 3. حدد "إدارة المكتبات".
  • 4. ابحث عن ADAFRUIT GFX وقم بتثبيتها.
  • 5. ابحث عن ADAFRUIT SSD1306 وقم بتثبيتها.

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

هناك طريقة أخرى لتثبيت المكتبات وهي العثور على هذه المكتبات وتنزيلها وتثبيتها بنفسك.
على سبيل المثال جيثب:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

هذه هي نفس مكتبات Adafruit، ولكن يمكن البحث عن مكتبات مماثلة بسهولة في محركات البحث، بناءً على طلب OLED I2C. يقوم العديد من المتحمسين بكتابة مكتبات "لأنفسهم" ثم نشرها على الويب. المكتبة التي ستستخدمها متروك لك.
من أجل عرض الحروف الروسية على الشاشة، هناك حاجة أيضا إلى مكتبات خاصة، ولكن هذا موضوع منفصل لمقال منفصل.
بعد تثبيت المكتبات، يمكنك العودة إلى الخطوة 4 ومعرفة العنوان السداسي العشري لشاشة العرض الخاصة بك.

الخطوة 6: عرض الاختبار


للتحقق مما إذا كان كل شيء يعمل كما هو متوقع، قم بتشغيل مثال الاختبار من ArduinoIDE.
لهذا:
انتقل إلى ملف > أمثلة > SSD 1306 > حدد 128x64 i2c
إذا حصلت على "خطأ"، فحاول تحديد SSD 1306 > 128x32 i2c.
في حالة حدوث "خطأ" مرة أخرى، حاول تغيير عنوان I2C في السطر 61 من الكود التجريبي واستبداله بعنوان شاشة العرض الذي حددته في الخطوة رقم 4.
إذا حدث الخطأ مرة أخرى، يمكنك محاولة تحرير ملف Adafruit_SSD1306.h، فهو موجود في مجلد مكتبات Arduino.
كيفية توصيل شاشة OLED I2C بالاردوينو

افتح ملف Adafruit_SSD1306.h في محرر النصوص وابحث عن السطور:
//#تعريف SSD1306_128_64

#تعريف SSD1306_128_32

// #تعريف SSD1306_96_16 

قم بإلغاء تعليق السطر:
#تعريف SSD1306_128_64. 

يجب أن تبدو هذه:
#تعريف SSD1306_128_64

//#تعريف SSD1306_128_32

// #تعريف SSD1306_96_16

إذا حدث الخطأ مرة أخرى، فأنت بحاجة إلى التحقق من الاتصالات الصحيحة.
بمجرد اكتمال التنزيل، سترى رسمًا متحركًا للاختبار على الشاشة، مما يعني أنك قمت بإعداد شاشة OLED بنجاح.

عندما تستمتع تمامًا بهذه الرسوم المتحركة، يمكنك الانتقال إلى الخطوة التالية.

الخطوة 7: اكتب رسالتك الخاصة


لكتابة رسالتك الخاصة، قم أولاً بإنشاء رسم جديد في بيئة برمجة ArduinoIDE.
في الرأس ندرج 4 مكتبات:
#تشمل <SPI.h>

#تشمل <Wire.h>

#تتضمن <Adafruit_GFX.h>

#تشمل <Adafruit_SSD1306.h>

ثم نكتب بروتوكول إعادة التعيين:
#تعريف OLED_RESET 4

عرض Adafruit_SSD1306 (OLED_RESET)؛

في VOID SETUP، نشير إلى العنوان السداسي العشري لشاشتنا 0x3C، والذي تعلمناه في "الخطوة رقم 4".
ثم نقوم بتهيئة الشاشة ومسحها:
Display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

Display.clearDisplay();

بعد ذلك، في VOID LOOP، نكتب الرمز الرئيسي، أي رسالتنا التي نريد عرضها على الشاشة.
للقيام بذلك، نصف حجم النص، ولون النص، وموضع المؤشر، وأخيرًا، نعرض الرسالة باستخدام أمر println:
Display.setTextSize(2);

Display.setTextColor(WHITE);

Display.setCursor(0,0);

println("أحسنت!");

Display.display();

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

إليك رمز Starting_with_Arduino_OLED.ino لبرنامجنا:
الرمز البريدي [946 ب] (تنزيلات: 4908)
عد
تعليق
  • ربطة القوسيبتسميضحكاحمر خدودمبتسماسترخاء استرخاءابتسامة متكلفة
    عيون القلبتقبيل القلبالتقبيل و العيون مغمضةمسحمرتاحراضيابتسامة
    غمزةاللسان الى الخارج وعين تغمزملجوم اللسان مغمض العينينابتسامة عريضةتقبيلstuck_out_tongueنائم
    قلقعابسحزينفتح الفمكشرمشوشصمت
    بدون تعبيرغير مستمتعSweat_smileيعرقبخيبة أمل_مرتاحالمرهقسلبي
    خائب الأملمرتبكخشيةعرق باردالمثابرةيبكيتنهد
    مرحمندهشتصرخوجه متعبغاضبغضبانتصار
    نعسانيمقناعنظارة شمسيهdizzy_faceعفريتsmile_imp
    محايد_faceno_mouthالبريء
4 ناقص واحد =
التعليقات (10)
  1. تاتوشكا
    #1 تاتوشكا ضيوف 14 نوفمبر 2018 الساعة 21:18
    9
    شكرا لك يا صديق! هذا هو أول رسم تخطيطي ومقدمة لي عن Arduino. وبصرف النظر عن وامض وميض))
  2. اليشر
    #2 اليشر ضيوف 28 يوليو 2019 الساعة 19:35
    8
    أين يمكنني تنزيل رمز Finder_I2C_Hex_Address.ino هذا؟
    1. آل
      #3 آل ضيوف 14 أغسطس 2019 الساعة 12:51
      11
      يوجد أسفل الصورة رابط "هذا هو رمز Starting_with_Arduino_OLED.ino لبرنامجنا:"
  3. أليكس
    #4 أليكس ضيوف 13 نوفمبر 2019 20:01
    9
    ليس الإعداد VOID أو VOID LOOP، ولكن الإعداد void () ؛ وحلقة باطلة ()؛ لغة C هي لغة حساسة لحالة الأحرف.
  4. الضيف اليكس
    #5 الضيف اليكس ضيوف 14 يناير 2020 الساعة 03:00
    6
    >الخطوة 4: ... في حالتي OLED مع العنوان 0x3F.
    وثم
    >في الإعداد الفارغ... عنوان العرض الخاص بنا 0x3Cوالذي تعلمناه في "الخطوة رقم 4".
    كيف هذا؟
  5. الضيف اليكس
    #6 الضيف اليكس ضيوف 14 يناير 2020 03:10
    9
    شكرًا لك! لقد فعلت كل شيء وفقًا للتعليمات الموجودة على Atmega328 Pro Mini وتحققت من الإصدار 0.96 الذي تم شراؤه. وتبين أن كلاهما يعمل. Arduino IDE 1.8.10
  6. قارئ
    #7 قارئ ضيوف 3 مارس 2020 الساعة 21:50
    4
    شكرا لك، مفيدة، كل شيء يعمل!
  7. إلدار خافيزوف
    #8 إلدار خافيزوف ضيوف 19 أبريل 2020 الساعة 19:15
    5
    عندي سؤال. توجد شاشتان OLED مطابقتان لشاشتك في الصورة (الصورة الثانية). لا أستطيع معرفة أي وصلات العبور يجب استخدامها لتغيير العنوان؟
  8. ضيف مكسيم
    #9 ضيف مكسيم ضيوف 31 أكتوبر 2020 الساعة 18:53
    11
    شكرا لك على المقال.لكن لدي مشكلة: وحدات البكسل الموجودة في الحروف تتوهج بعضها البعض والخط أكبر مما ينبغي. يبدو أن Arduino لا يتعرف على دقة الشاشة. إذا كان أي شخص لديه نفس المشكلة، فإليك كيفية حلها:
    #define SCREEN_WIDTH 128 // عرض شاشة OLED بالبكسل
    #define SCREEN_HEIGHT 64 // ارتفاع شاشة OLED بالبكسل
    شاشة Adafruit_SSD1306 (SCREEN_WIDTH، SCREEN_HEIGHT، &Wire، OLED_RESET)؛
  9. ديمتري
    #10 ديمتري ضيوف 9 مايو 2021 الساعة 19:35
    7
    شكرًا لك! لم ينجح كل شيء على الفور. في الواقع، كان العنوان على الشاشة 128*64، وليس 0x3D، ولكن 0x3C. وقمت بإعادة ترتيب المكتبات "من المنتصف" للإصدارات. ليس الأحدث، لأن... كانت هناك رسالة حول القيمة الحرجة للذاكرة (لدي Arduino Uno).