Як підключити OLED I2C дисплей до ARDUINO

Pin
Send
Share
Send

Введення: Знайомство з OLED I2C дисплеєм 128 * 64/128 * 32.

Вітання! Будучи любителем - ентузіастом електроніки, я впевнений, що все що ми робимо - радіоелектронні іграшки - саморобки, або великі проекти, все це від цікавості і ліні. Цікавість прагне зрозуміти і осягнути неосяжне, що не пізнане, розібратися, як воно там працює, чого робить, як рухається. А лінь винаходить, щоб такого придумати, щоб не вставати, не підходити, не піднімати, не забруднитися або ще чого ні будь важливе.
Так як бачити інформацію, це краще, ніж розбиратися чого там зараз має відбутися в нашому пристрої, або вже сталося, або відбувається, ми обов'язково захочемо отримати цю саму корисну інформацію від наших мікроконтролерів, датчиків, або інших пристроїв. А отримувати, я в усякому разі, хочу будь-які повідомлення, на кшталт питань, попереджень, нагадувань, смайликів, зірочок, сердечок тощо.
Для тих, у кого теж виникло подібне бажання, - ось короткий посібник з підключення та перевірці маленьких і не дорогих дисплеїв OLED.
Далі мова піде про одну з широко доступних для радіоаматорів моделях OLED дисплеїв, керованих чіпом SSD1306, з розміром екрану 0,96-дюймів і роздільною здатністю 128 * 64 або 128 * 32 точки. Ці дисплеї ідеально підходять для не великих радіоаматорських конструкцій і саморобок.

Крок 1: Основні поняття


Підключати ми його будемо до Arduino UNO / NANO, ну і програмувати, відповідному ми його будемо теж через Arduino.
  • OLED це Organic Light-Emitting Diode, тобто, напівпровідниковий прилад з органічних сполук, який починає випромінювати світло при проходженні через нього електричного струму.
  • ARDUINO - це платформа для навчання і побудови систем автоматики і робототехніки.
  • ArduinoIDE - середовище розробки. Це безкоштовна програма для програмування Arduino.
  • I2C - Inter-Integrated Circuits, межмікросхемная лінія зв'язку.
  • Скетч, він же, код, він же програма - термінологія Arduino.

Дотримуйтесь інструкцій, щоб зрозуміти, як правильно підключити і налаштувати OLED дисплей до Arduino і як відобразити власне повідомлення на його дисплеї.
Робимо все по кроках.

Крок 2: Комплектуючі


Нам будуть потрібні всього чотири речі:
  • 1. Сам OLED дисплей 0,96 "(можна купити на Aliexpress або Ebay, - довго, але дешево!).
  • 2. Arduino UNO / Nano (там же де дисплей).
  • 3. Сполучні дроти (там же).
  • 4. Комп'ютер або ноутбук зі встановленою ArduinoIDE.

Взагалі покупка деталей для різних проектів на Aliexpress і Ebay дуже прикольна штука, поки займаєшся одним проектом, деталі до іншого вже на підході. Головне не забути зробити замовлення.

Крок 3: Підключення дисплея


Управління дисплеєм здійснює чіп SSD1306, який підтримує п'ять протоколів зв'язку і один з яких I2C. Дані з цього протоколу передаються за все по двох проводах, а чим менше проводів в корпусі, тим краще, так що нам він цілком підходить. Але! Зустрічаються модулі з протоколом SPI і навіть з перемиканням протоколів, так що будьте уважні при покупці даного модуля.

Використовувані висновки:
OLED дисплей - SCL / SCK (clock) і SDA (data), "Плюс" харчування (VCC) і "Мінус" харчування (GND).

Використовувані висновки:
Arduino UNO - SCL / SCK на A5 і SSD на A4, "Плюс" харчування (+ 5V) і "Мінус" харчування (GND).
Під'єднуємо дисплей до Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA - A4
  • SCL - A5

Крок 4: Сканер I2C


Кожен пристрій на шині I2C має шістнадцятковий адреса, поміняти не можна, він вшитий намертво, кожен відповідальний виробник повинен десь на корпусі або в інструкції вказати його. Бувають модулі з перемикачами і перемичками, якими можна змінити адресу, але ... якщо пристрої дешеві, до неподобства, то виробник може і не спромогтися займатися такою дрібницею, тому його доведеться визначати самостійно.
Всього на шині може використовуватися до 127 адрес - 119 для пристроїв і 8 адрес службових. Спілкування ведеться за цими адресами. Є головний, він же Master, а є ведений, він же Slave, - Майстри запитують, ведені відповідають, все просто.
Оскільки на нашому OLED-дисплей використовується протокол зв'язку I2C, а адреса може бути і не вказано, ми самі спробуємо дізнатися цю саму адресу.
Це можна зробити, завантаживши коротенький скетч на свою плату Arduino з підключеним OLED. АЛЕ!
Не поспішайте відразу заливати скетч в Arduino! Давайте для початку завантажимо "драйвера", тобто підключимо бібліотеки, а для цього відразу перейдемо до "Кроку №5", а потім повернемося і продовжимо.

Крок 4: Продовження:


Завантажити КОД Finder_I2C_Hex_Address.ino, завантажити в Arduino.
Відкрити "Монітор порту", виставити швидкість 9600 і якщо все правильно підключено, програма покаже адресу пристрою, в моєму випадки OLED з адресою 0x3F.

Крок 5: Завантаження і підключення бібліотек


Для того щоб все правильно запрацювало, а вам не довелося винаходити велосипед, потрібно підключити пару бібліотек в середу ArduinoIDE, а саме: ADAFRUIT GFX і ADAFRUIT SSD1306, вони необхідні для того щоб Arduino змогла самостійно спілкуватися з OLED дисплеєм.
Ви можете підключити ці бібліотеки, виконавши наступні кроки.
  • 1. У ArduinoIDE йдемо в меню Скетч / Sketch.
  • 2. Вибираємо "Включити бібліотеки" / Include Libraries.
  • 3.Вибіраем "Управління бібліотеками" / Managed Libraries.
  • 4. Знаходимо ADAFRUIT GFX і встановлюємо їх.
  • 5. Знаходимо ADAFRUIT SSD1306 і встановлюємо їх.

Зі свіжими версіями бібліотек, дисплей у мене працював криво, може звичайно це обумовлено кривизною рук, але після того, як я встановив найперші версії цих бібліотек, все стало показуватися рівненько і красиво. У пам'яті чомусь спливають рядки Пушкіна:
... і досвід, син помилок важких,
і геній, парадоксів друг.

Інший спосіб установки бібліотек - знайти, скачати і встановити ці бібліотеки самостійно.
Для прикладу Github:
//github.com/adafruit/Adafruit-GFX-Library
//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.

Відкрийте файл 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 #include #include #include 

Потім пишемо протокол скидання:
#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 ( "Well done!"); display.display ();

В кінці не забудьте написати display.display, Щоб зображення вивелося на екран, інакше отримаєте порожнечу.
Якщо ви все зробили правильно, то на дисплеї з'явиться повідомлення.

Тут КОД Starting_with_Arduino_OLED.ino нашої програми:
code.zip 946 b (cкачиваний: 1366)

Pin
Send
Share
Send