- Необхідне обладнання:
- Ознайомлення з OLED-дисплеями:
- Обладнання та підключення:
- Програмування OLED-дисплея SSD1306 для Arduino:
Більшості з нас був би знайомий матричний РК-дисплей розміром 16 × 2 точки, який використовується в більшості проектів для відображення певної інформації для користувача. Але ці РК-дисплеї мають багато обмежень щодо того, що вони можуть зробити. У цьому підручнику ми збираємось дізнатись про OLED-дисплеї та як ними користуватися Arduino. На ринку доступно безліч типів OLED-дисплеїв, і існує безліч способів змусити їх працювати. У цьому уроці ми поговоримо про його класифікації, а також про те, які найкраще підходять для вашого проекту.
Необхідне обладнання:
- 7-контактний модуль OLED-дисплея 128 × 64 (SSD1306)
- Arduino UNO / Nano
- Макет
- Підключення проводів
- Комп’ютер / ноутбук
Ознайомлення з OLED-дисплеями:
Термін OLED означає « органічний світлодіод», він використовує ту саму технологію, яка використовується в більшості наших телевізорів, але має менше пікселів порівняно з ними. Це справді весело, коли ці приємні на вигляд модулі дисплея поєднуються з Arduino, оскільки це дозволить нашим проектам виглядати круто. Тут ми розглянули повну статтю про OLED-дисплеї та їх типи.
Ми використовуємо монохромний 7-контактний OLED-дисплей SSD1306 0,96 ”. Причиною вибору цього дисплея є те, що він може працювати на трьох різних протоколах зв'язку, таких як режим SPI 3 Wire, режим SPI чотири дроти та режим IIC. У цьому посібнику буде розказано про те, як використовувати модуль у 4-провідному режимі SPI, оскільки це найшвидший режим зв'язку та стандартний.
Шпильки та її функції пояснюються в таблиці нижче.
Номер PIN-коду |
Ім'я PIN-коду |
Інші імена |
Використання |
1 |
Gnd |
Земля |
Штифт заземлення модуля |
2 |
Vdd |
Vcc, 5 В. |
Штифт живлення (3-5 В допустимий) |
3 |
SCK |
D0, SCL, CLK |
Діє як годинниковий штифт. Використовується як для I2C, так і для SPI |
4 |
SDA |
D1, MOSI |
Штифт даних модуля. Використовується як для IIC, так і для SPI |
5 |
ВДЕ |
RST, RESET |
Скидає модуль (корисно під час SPI) |
6 |
Постійного струму |
A0 |
Командний штифт даних. Використовується для протоколу SPI |
7 |
CS |
Вибір чіпа |
Корисно, коли за протоколом SPI використовується більше одного модуля |
У цьому посібнику ми просто будемо керувати модулем у режимі 4-Wire SPI, а решту залишимо для якогось іншого підручника.
Спільнота Arduino вже надала нам багато бібліотек, які можна безпосередньо використовувати, щоб зробити це набагато простішим. Я спробував кілька бібліотек і виявив, що бібліотека Adafruit_SSD1306 була дуже простою у використанні і мала кілька графічних параметрів, отже, ми будемо використовувати те саме в цьому посібнику. Але якщо у вашого проекту обмеження пам’яті / швидкості, спробуйте скористатися бібліотекою U8g, оскільки вона працює швидше і займає менше програмної пам’яті.
Обладнання та підключення:
Принципова схема для взаємодії OLED SSD1306 з Arduino дійсно проста і показана нижче
Ми просто встановили SPI-зв'язок між OLED-модулем та Arduino. Оскільки OLED працює від 3 В-5 В і споживає дуже мало енергії, йому не потрібно зовнішнє джерело живлення. Ви можете просто використовувати дроти для підключення або використовувати макет, як я використовував, щоб було легко експериментувати. Зв'язок також вказаний у казці нижче
С.Ні |
Ім'я контакту на модулі OLED |
Закріпити ім'я на Arduino |
1 |
Gnd, Ground |
Земля |
2 |
Vdd, Vcc, 5V |
5 В |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
Постійного струму, A0 |
11 |
7 |
CS, Chip Select |
12 |
Примітка: Ви не зможете візуалізувати жодне підсвічування / світіння на OLED-модулі, лише включивши його. Ви повинні запрограмувати його правильно, щоб помітити будь-які зміни на OLED-дисплеї.
Програмування OLED-дисплея SSD1306 для Arduino:
Після того, як з'єднання будуть готові, ви можете приступати до програмування Arduino. Як вже було сказано раніше, ми будемо використовувати бібліотеку Adafruit та бібліотеку GFX для роботи з цим OLED-модулем. Виконайте кроки для тестового запуску вашого OLED-дисплея.
Крок 1: Завантажте бібліотеку Adafruit і бібліотеку GFX з Github, використовуючи посилання нижче
- Бібліотека Адафрута
- Бібліотека графіки GFX
Крок 2: Вам слід завантажити два файли Zip. Тепер додайте їх до свого Arduino, дотримуючись
Ескіз-> Включити бібліотеку -> Додати бібліотеку Zip, як показано нижче. Потім виберіть бібліотеку, яку ми щойно завантажили. Ви можете вибрати лише одну бібліотеку за раз, отже вам доведеться повторити цей крок ще раз.
Крок 3: Запустіть приклад програми, вибравши Файл-> Приклади-> Адафрут SSD1306 -> SSD1306_128 * 64_SPI.ino, як показано на малюнку нижче.
Крок 4: Всередині прикладу програми поверх рядка 64 додайте рядок “#define SSD1306_LCDHEIGHT 64”, як показано на малюнку нижче.
Крок 5: Тепер завантажте програму, і ви побачите, що OLED-дисплей спрацьовує із типовим кодом Adafruit за замовчуванням, як показано на малюнку нижче. Повні робочі відео наводяться в кінці.
Цей приклад програми показує всі можливі графічні зображення, які можуть відображатися на OLED-екрані. Цього коду має бути достатньо для того, щоб ви могли створювати растрові зображення, малювати лінії / кола / прямокутники, грати з пікселями, відображати символи та рядки з різними шрифтами та розмірами тощо…
Якщо ви хочете краще зрозуміти бібліотеку та її функції, ви можете читати далі. Кожен недоступ коду розділений і пояснюється за допомогою рядків коментарів. Повний код наведено в кінці цієї статті
Відображення та очищення екрана:
Писати на OLED-екрані так само, як писати на чорній дошці, ми повинні записати значення, а потім очистити їх, перш ніж їх можна буде перезаписати. Наступні команди використовуються для запису та очищення дисплея
display.display (); // Запис на дисплей display.clearDisplay (); // очистити дисплей
Відображення змінної символу:
Для відображення вмісту всередині змінної можна використовувати наступний код.
char i = 5; // змінна для відображення display.setTextSize (1); // Виберіть розмір відображуваного тексту. SetTextColor (WHITE); // для монохромного відображення можливе лише те, що display.setCursor (0,0); // 0,0 - верхній лівий кут дисплея OLED-екрана.write (i); // Написати змінну, яка відображатиметься
Малювання лінії, кола, прямокутника, трикутника:
Якщо ви хочете додати деякі символи на дисплей, ви можете використати наступний код, щоб намалювати будь-що з наступного
display.drawLine (display.width () - 1, 0, i, display.height () - 1, БІЛИЙ); // void drawLine (x0, y0, x1, y1, колір); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, БІЛИЙ); // 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, БІЛИЙ; // void drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // void drawCircle (x0, y0, r, color);
Малювання рядка на екран:
Наступний фрагмент коду можна використовувати для відображення будь-якого повідомлення на екрані в певному місці та розмірі
display.setTextSize (2); // встановлюємо розмір відображення тексту.setTextColor (WHITE); // налаштування кольору display.setCursor (10,0); // Рядок розпочнеться з 10,0 (x, y) display.clearDisplay (); // Стирання будь-якого попереднього відображення на екрані display.println ("Circuit Digest"); // Надрукуйте рядок тут “Circuit Digest” display.display (); // надсилаємо текст на екран
Відображення растрового зображення:
Недовірливе, що можна зробити за допомогою OLED-модуля, це те, що його можна використовувати для відображення растрових зображень. Наступний код використовується для відображення растрового зображення
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111 B10 B11111111, B111100, B111100, B11 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, растрове зображення, w, h, WHITE); // порожнеча drawBitmap (x, y, * растрове зображення, w, h, колір);
Як бачите, для відображення зображення растрові дані повинні зберігатися в пам'яті програми у формі директиви PROMGMEM. Простіше кажучи, ми маємо доручити OLED-дисплею, що робити з кожним пікселем, передаючи йому послідовність або значення з масиву, як показано вище. Цей масив буде містити растрові дані зображення.
Це може здатися складним, але за допомогою веб-інструменту дуже легко перетворити зображення у бітові значення карти та завантажити їх у вищезазначений масив.
Просто завантажте зображення та налаштуйте параметри, щоб отримати бажаний попередній перегляд зображення. Потім натисніть «Створити код», скопіюйте код і вставте його у свій масив. Завантажте програму, і все готово. Я спробував показати логотип бетмена, і ось як це вийшло.
Є ще багато речей, які ви можете зробити з цими бібліотеками. Щоб ознайомитись із повними можливостями, відвідайте сторінку графічних примітивів Adafruit GFX.
Сподіваємось, ви запустили це і готові впровадити OLED-дисплей у деяких своїх проектах. Якщо у вас виникли проблеми, поділіться ними у розділі коментарів, і я постараюся зробити все можливе, щоб виправити їх.