- Требуемое оборудование:
- Знакомство с OLED-дисплеями:
- Оборудование и соединения:
- Программирование OLED-дисплея SSD1306 для Arduino:
Большинство из нас знакомы с матричным ЖК-дисплеем 16 × 2, который используется в большинстве проектов для отображения некоторой информации пользователю. Но у этих ЖК-дисплеев есть много ограничений в возможностях. В этом уроке мы узнаем об OLED-дисплеях и о том, как их использовать в Arduino. На рынке доступно множество типов OLED-дисплеев, и есть много способов заставить их работать. В этом уроке мы обсудим его классификации, а также то, что лучше всего подойдет для вашего проекта.
Требуемое оборудование:
- 7-контактный модуль дисплея OLED 128 × 64 (SSD1306)
- Ардуино UNO / Nano
- Макетная плата
- Подключение проводов
- Компьютер / Ноутбук
Знакомство с OLED-дисплеями:
Термин OLED означает « органический светоизлучающий диод». В нем используется та же технология, что и в большинстве наших телевизоров, но с меньшим количеством пикселей по сравнению с ними. Очень весело иметь эти классно выглядящие модули дисплея для взаимодействия с Arduino, так как это сделает наши проекты крутыми. Мы рассмотрели полную статью об OLED-дисплеях и их типах здесь.
Мы используем монохромный 7-контактный OLED-дисплей SSD1306 0,96 дюйма. Причина выбора этого дисплея заключается в том, что он может работать с тремя различными протоколами связи, такими как трехпроводный режим SPI, четырехпроводный режим SPI и режим IIC. В этом руководстве будет рассказано, как использовать модуль в 4-проводном режиме SPI, поскольку это самый быстрый способ связи и режим по умолчанию.
Контакты и их функции описаны в таблице ниже.
Пин код |
Имя контакта |
Другие названия |
Применение |
1 |
Gnd |
Земля |
Контакт заземления модуля |
2 |
Vdd |
Vcc, 5 В |
Вывод питания (допустимое напряжение 3-5 В) |
3 |
SCK |
D0, SCL, CLK |
Действует как штифт часов. Используется как для I2C, так и для SPI |
4 |
ПДД |
D1, MOSI |
Вывод данных модуля. Используется как для IIC, так и для SPI |
5 |
ВИЭ |
RST, СБРОС |
Сбрасывает модуль (полезно во время SPI) |
6 |
ОКРУГ КОЛУМБИЯ |
A0 |
Вывод команды данных. Используется для протокола SPI |
7 |
CS |
Выбор чипа |
Полезно, когда по протоколу SPI используется более одного модуля |
В этом уроке мы просто будем работать с модулем в режиме 4-Wire SPI, остальное мы оставим для другого урока.
Сообщество Arduino уже предоставило нам множество библиотек, которые можно использовать напрямую, чтобы сделать это намного проще. Я опробовал несколько библиотек и обнаружил, что библиотека Adafruit_SSD1306 очень проста в использовании и имеет несколько графических опций, поэтому мы будем использовать их в этом руководстве. Но, если ваш проект имеет ограничение памяти / скорости, попробуйте использовать библиотеку U8g, так как она работает быстрее и занимает меньше программной памяти.
Оборудование и соединения:
Принципиальная схема для SSD1306 OLED взаимодействия с Arduino очень проста и показана ниже
Мы просто установили SPI-связь между модулем OLED и Arduino. Поскольку OLED работает от 3V-5V и потребляет очень мало энергии, ему не нужен внешний источник питания. Вы можете просто использовать провода для подключения или использовать макетную плату, как я использовал, чтобы было легко экспериментировать. Связь также указана в сказке ниже
S.No |
Имя контакта на модуле OLED |
Имя пина на Arduino |
1 |
Земля, Земля |
Земля |
2 |
Vdd, Vcc, 5 В |
5В |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, СБРОС |
13 |
6 |
Постоянный ток, A0 |
11 |
7 |
CS, выбор микросхемы |
12 |
Примечание. Вы не сможете визуализировать подсветку / свечение на модуле OLED, просто включив его. Вы должны правильно запрограммировать его, чтобы заметить любые изменения на OLED-дисплее.
Программирование OLED-дисплея SSD1306 для Arduino:
Как только соединения будут готовы, вы можете приступить к программированию Arduino. Как было сказано ранее, мы будем использовать библиотеку Adafruit и библиотеку GFX для работы с этим модулем OLED. Следуйте инструкциям, чтобы протестировать OLED-дисплей.
Шаг 1. Загрузите библиотеку Adafruit и GFX с Github по ссылке ниже.
- Библиотека Адафрута
- Графическая библиотека GFX
Шаг 2: Вы должны загрузить два Zip-файла. Теперь добавьте их в свой Arduino, выполнив следующие действия.
Скетч-> Включить библиотеку -> Добавить библиотеку Zip, как показано ниже. Затем выберите только что загруженную библиотеку. Вы можете выбрать только одну библиотеку за раз, поэтому вам придется повторить этот шаг еще раз.
Шаг 3: Запустите пример программы, выбрав Файл-> Примеры-> Adafruit 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); // Выбираем размер текста display.setTextColor (WHITE); // для монохромного отображения возможно только белое display.setCursor (0,0); // 0,0 - это верхний левый угол OLED-экрана display.write (i); // Записываем переменную для отображения
Рисование линии, круга, прямоугольника, треугольника:
Если вы хотите добавить несколько символов на свой дисплей, вы можете использовать следующий код для рисования любого из следующих
display.drawLine (display.width () - 1, 0, i, display.height () - 1, БЕЛЫЙ); // пусто drawLine (x0, y0, x1, y1, color); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, БЕЛЫЙ); // пусто 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, БЕЛЫЙ); // пусто drawCircle (x0, y0, r, color);
Вывод строки на экран:
Следующий фрагмент кода может использоваться для отображения любого сообщения на экране в определенном месте и размере.
display.setTextSize (2); // устанавливаем размер текста display.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, B011111000, B101111001111, B11100110011, B011111000 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, БЕЛЫЙ); // void drawBitmap (x, y, * bitmap, w, h, color);
Как видите, для отображения изображения данные растрового изображения должны быть сохранены в памяти программы в виде директивы PROMGMEM. Проще говоря, мы должны указать OLED-дисплею, что делать с каждым пикселем, передав ему последовательность или значения из массива, как показано выше. Этот массив будет содержать данные растрового изображения изображения.
Это может показаться сложным, но с помощью веб-инструмента очень легко преобразовать изображение в значения битовой карты и загрузить их в указанный выше массив.
Просто загрузите изображение и отрегулируйте настройки, чтобы получить желаемый предварительный просмотр изображения. Затем нажмите «Создать код», скопируйте код и вставьте его в свой массив. Загрузите программу, и все готово. Я попробовал отобразить логотип Бэтмена, и вот как это получилось.
С этими библиотеками можно еще многое сделать. Чтобы узнать полные возможности, посетите страницу Adafruit GFX graphics Primitives.
Надеюсь, вы это запустили и готовы реализовать OLED-дисплей в некоторых из ваших проектов. Если у вас возникли проблемы, поделитесь ими в разделе комментариев, и я постараюсь исправить их.