כיצד לחבר צג OLED I2C ל-ARDUINO

הקדמה: מבוא לתצוגת OLED I2C 128*64 / 128*32.
כיצד לחבר צג OLED I2C ל-ARDUINO

שלום! בהיותי חובב אלקטרוניקה חובב, אני בטוח שכל מה שאנחנו עושים - צעצועים אלקטרוניים - מוצרים תוצרת בית, או פרויקטים גדולים - הכל מתוך סקרנות ועצלנות. הסקרנות שואפת להבין ולהבין את העצום, הלא נודע, כדי להבין איך הוא עובד שם, מה הוא עושה, איך הוא זז. והעצלות ממציאה על מה להמציא, כדי לא לקום, לא להתקרב, לא להרים, לא להתלכלך או כל דבר אחר חשוב.

מכיוון שראיית מידע טובה יותר מאשר להבין מה עומד לקרות במכשיר שלנו, או שכבר קרה, או קורה, אנחנו בהחלט נרצה לקבל את המידע השימושי ביותר הזה מהמיקרו-בקרים, החיישנים או מכשירים אחרים שלנו. ובכל מקרה, אני רוצה לקבל כל הודעה כמו שאלות, אזהרות, תזכורות, אמוטיקונים, כוכבים, לבבות וכדומה.

למי שיש גם רצון דומה, הנה מדריך קצר לחיבור ובדיקה של צגי OLED קטנים וזולים.
לאחר מכן, נדבר על אחד מדגמי תצוגת ה-OLED הזמינים באופן נרחב עבור חובבי רדיו, הנשלט על ידי שבב SSD1306, עם גודל מסך של 0.96 אינץ' ורזולוציה של 128*64 או 128*32 פיקסלים. תצוגות אלה אידיאליות עבור עיצובים קטנים של רדיו חובבים ופרויקטים תוצרת בית.
כיצד לחבר צג OLED I2C ל-ARDUINO

שלב 1: מושגים בסיסיים


נחבר אותו ל-Arduino UNO / NANO, וגם נתכנת אותו דרך Arduino.
  • OLED היא דיודה פולטת אור אורגנית, כלומר, מכשיר מוליכים למחצה העשוי מתרכובות אורגניות שמתחיל לפלוט אור כאשר זרם חשמלי עובר דרכה.
  • ARDUINO היא פלטפורמה להדרכה ובניית מערכות אוטומציה ורובוטיקה.
  • ArduinoIDE - סביבת פיתוח. זוהי תוכנית תכנות חינם של Arduino.
  • I2C – Inter-Integrated Circuits, קו תקשורת בין שבבים.
  • Sketch, aka code, aka program - טרמינולוגיה של ארדואינו.

עקוב אחר ההוראות כדי להבין כיצד לחבר ולהגדיר כראוי את תצוגת ה-OLED ל-Arduino וכיצד להציג הודעה מותאמת אישית על הצג שלו.
אנחנו עושים הכל צעד אחר צעד.

שלב 2: אביזרים


אנחנו צריכים רק ארבעה דברים:
  • 1. תצוגת ה-OLED עצמה היא בגודל 0.96 אינץ' (תוכלו לקנות אותה ב- Aliexpress או Ebay, היא ארוכה, אבל זולה!).
  • 2. Arduino UNO / Nano (אותו מקום כמו התצוגה).
  • 3. חוטי חיבור (שם).
  • 4. מחשב או מחשב נייד עם ArduinoIDE מותקן.

כיצד לחבר צג OLED I2C ל-ARDUINO

באופן כללי, קניית חלקים לפרויקטים שונים ב- Aliexpress וב-Ebay היא דבר מאוד מגניב, בזמן שאתה עובד על פרויקט אחד, חלקים למשנהו כבר בדרך. העיקר לא לשכוח לבצע הזמנה.

שלב 3: חיבור הצג


התצוגה נשלטת על ידי שבב SSD1306, התומך בחמישה פרוטוקולי תקשורת, אחד מהם הוא I2C. נתונים באמצעות פרוטוקול זה מועברים על פני שני חוטים בלבד, וככל שפחות חוטים במארז, כך ייטב, כך שהוא מתאים לנו למדי.אבל! ישנם מודולים עם פרוטוקול SPI ואפילו עם החלפת פרוטוקול, אז היזהר בעת רכישת מודול זה.
כיצד לחבר צג OLED I2C ל-ARDUINO

סיכות בשימוש:
תצוגת OLED - SCL/SCK (שעון) ו-SDA (נתונים), כוח "פלוס" (VCC) וכוח "מינוס" (GND).
כיצד לחבר צג OLED I2C ל-ARDUINO

סיכות בשימוש:
Arduino UNO - SCL/SCK ב-A5 ו-SSD ב-A4, הספק "פלוס" (+5V) והספק "מינוס" (GND).
חיבור הצג לארדואינו:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

כיצד לחבר צג OLED I2C ל-ARDUINO

שלב 4: סורק I2C


לכל מכשיר באוטובוס I2C יש כתובת הקסדצימלית, לא ניתן לשנות אותה, היא מחוברת לחיבורים, כל יצרן אחראי חייב לציין זאת איפשהו על המארז או בהוראות. ישנם מודולים עם מתגים ומגשרים שניתן להשתמש בהם כדי לשנות את הכתובת, אבל... אם המכשירים זולים עד כדי גיחוך, אז אולי היצרן לא יטרח להתעסק בפרט כזה, אז תצטרכו לקבוע זאת בעצמכם.

בסך הכל ניתן להשתמש באפיק עד 127 כתובות - 119 למכשירים ו-8 כתובות שירות. התקשורת מתבצעת בכתובות אלו. יש עיקר, הלא הוא מאסטר, ויש עבד, הלא הוא עבד - המאסטרים שואלים, העבדים עונים, הכל פשוט.
מכיוון שתצוגת ה-OLED שלנו משתמשת בפרוטוקול התקשורת I2C, וייתכן שהכתובת לא תצוין, ננסה לברר את הכתובת הזו בעצמנו.

אתה יכול לעשות זאת על ידי העלאת סקיצה קצרה ללוח Arduino שלך עם ה-OLED מחובר. אבל!
אל תמהרו להעלות את הסקיצה לארדואינו מיד! בוא נוריד תחילה את ה"דרייברים", כלומר. בואו נחבר את הספריות, וכדי לעשות זאת נעבור מיד ל"שלב מס' 5", ואז נחזור ונמשיך.

שלב 4: המשך:


הורד את CODE Finder_I2C_Hex_Address.ino, העלה ל-Arduino.
פתחו את "מוניטור יציאות", הגדר את המהירות ל-9600 ואם הכל מחובר כהלכה, התוכנה תציג את כתובת המכשיר, במקרה שלי OLED עם כתובת 0x3F.
כיצד לחבר צג OLED I2C ל-ARDUINO

שלב 5: הורד וחבר ספריות


כדי שהכל יעבוד כמו שצריך, ואתה לא צריך להמציא את הגלגל מחדש, אתה צריך לחבר כמה ספריות לסביבת ArduinoIDE, כלומר: ADAFRUIT GFX ו-ADAFRUIT SSD1306, הם נחוצים כדי שארדואינו יוכל לתקשר באופן עצמאי עם תצוגת OLED.
אתה יכול לכלול ספריות אלה על ידי ביצוע השלבים הבאים.
  • 1. ב-ArduinoIDE, עבור לתפריט Sketch.
  • 2. בחר "כלול ספריות".
  • 3. בחר "נהל ספריות".
  • 4. מצא את ADAFRUIT GFX והתקן אותם.
  • 5. מצא את ADAFRUIT SSD1306 והתקן אותם.

עם הגרסאות העדכניות ביותר של הספריות, התצוגה שלי עבדה בצורה עקומה, זה כמובן יכול להיות בגלל עקמומיות הידיים שלי, אבל אחרי שהתקנתי את הגרסאות הראשונות של הספריות האלה, הכל התחיל להראות חלק ויפה. מסיבה כלשהי, השורות של פושקין עולות בראש:
...וניסיון, בן הטעויות הקשות,
וגאון, חבר הפרדוקסים.

דרך נוספת להתקין ספריות היא למצוא, להוריד ולהתקין ספריות אלו בעצמך.
לדוגמא של Github:
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 libraries.
כיצד לחבר צג OLED I2C ל-ARDUINO

פתח את הקובץ Adafruit_SSD1306.h בעורך טקסט ומצא את השורות:
//#define SSD1306_128_64

#define SSD1306_128_32

// #define SSD1306_96_16 

בטל את ההערה על השורה:
#define SSD1306_128_64. 

זה אמור להיראות כך:
#define SSD1306_128_64

//#define SSD1306_128_32

// #define SSD1306_96_16

אם השגיאה מתרחשת שוב, עליך לבדוק את החיבורים הנכונים.
לאחר השלמת ההורדה, תראה אנימציית בדיקה על המסך, מה שאומר שהגדרת בהצלחה את תצוגת ה-OLED שלך.

כאשר נהנית ביסודיות מהאנימציה הזו, תוכל לעבור לשלב הבא.

שלב 7: כתוב הודעה משלך


כדי לכתוב הודעה משלך, תחילה צור סקיצה חדשה בסביבת התכנות ArduinoIDE.
בכותרת אנחנו כוללים 4 ספריות:
#include <SPI.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

לאחר מכן נכתוב את פרוטוקול האיפוס:
#define OLED_RESET 4

Adafruit_SSD1306 display(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);

display.println("כל הכבוד!");

display.display();

בסוף אל תשכח לכתוב display.displayכך שהתמונה תוצג על המסך, אחרת תקבל חלל.
אם עשית הכל נכון, תופיע הודעה על המסכים.
כיצד לחבר צג OLED I2C ל-ARDUINO

הנה הקוד Starting_with_Arduino_OLED.ino של התוכנית שלנו:
code.zip [946 ב] (הורדות: 4908)
חזור
תגובה
  • עניבת פרפרחיוךצוחקלְהַסמִיקסמיילירגוע רגועחִיוּך מְעוּשֶׂה
    עיני_לבמנשק_לבמנשקים בעיניים עצומותסמוקהקלהמרוצהלְגַחֵך
    קְרִיצָהלשון בחוץ עין קורצתלשון בחוץ עיניים סגורותמחייךמתנשקיםלשון_תקועהיָשֵׁן
    מוּדְאָגמזעיף פניםייסוריםפה פתוחמעווה את פניומְבוּלבָּלשקט
    חסר הבעהלא משועשעזיעה_חיוךלְהָזִיעַמאוכזב_מוקללְהַלאוֹתפַּסִיבִי
    מְאוּכזָבמבולבלחוֹשֵׁשׁזיעה קרהלהתמידבוכהבֶּן כַּלבָּה
    שִׂמְחָהמוּפתָעלִצְרוֹחַפנים_עייפותכּוֹעֵסזעםנצחון
    מְנוּמנָםיאמממסכהמישקפי שמשסחרחורת_פניםשֵׁדsmiling_imp
    נייטרלי_פניםאין_פהחף מפשע
4 פחות אחד =
הערות (10)
  1. טאטושקה
    #1 טאטושקה אורחים 14 בנובמבר 2018 21:18
    9
    תודה לך חבר! זהו הסקיצה וההקדמה הראשונה שלי שהעליתי לארדואינו. מלבד מצמוץ מצמוץ))
  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 SETUP או VOID LOOP, אלא void setup(); ו-void loop(); שפת C היא שפה הרגישה לאותיות גדולות.
  4. אורח אלכס
    #5 אורח אלכס אורחים 14 בינואר 2020 03:00
    6
    > שלב 4: ... במקרה שלי OLED עם כתובת 0x3F.
    ואז
    >ב-VOID SETUP... הכתובת של התצוגה שלנו 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
    יש לי שאלה. יש 2 צגי OLED זהים לשלך בתמונה (תמונה שנייה). אני לא מצליח להבין באילו מגשרים להשתמש כדי לשנות את הכתובת?
  8. אורח מקסים
    #9 אורח מקסים אורחים 31 באוקטובר 2020, 18:53
    11
    תודה על המאמר.אבל יש לי בעיה: הפיקסלים באותיות זוהרים כל אחד והגופן גדול ממה שהוא צריך להיות. כנראה שהארדואינו לא מזהה את רזולוציית המסך. אם למישהו יש את אותה בעיה, הנה איך לפתור אותה:
    #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).