OLED-дисплей 128×64: подключение к Arduino и русский шрифт

OLED-дисплей 128×64: подключение к Arduino и русский шрифт

Поиск адреса OLED-дисплея на шине I2C, библиотеки Adafruit SSD1306 и OLED_I2C, вывод кириллицы и пример часов на DS3231.

Чем OLED отличается от ЖК-индикатора

OLED-дисплеи всё чаще заменяют в проектах Arduino простые ЖК-индикаторы, хотя и стоят дороже. Причина в принципе работы: пиксели ЖК-экрана подсвечиваются, а у OLED каждый пиксель светится сам. Картинка получается более контрастной и насыщенной, сохраняется при взгляде под углом, а энергии такой экран потребляет немного.

OLED-дисплей 0.96 дюйма с разрешением 128×64

Подключение и адрес на шине I2C

Дисплей подключается к плате по шине I2C.

Схема подключения OLED-дисплея к Arduino

Сначала выясняют адрес модуля. Для этого на плату загружают скетч-сканер: он использует библиотеку Wire, перебирает адреса от 0 до 127, каждому отправляет запрос и печатает в монитор порта (скорость 9600) либо адрес ответившего устройства, либо прочерк. Таблица обновляется каждые три секунды. В рассматриваемом примере дисплей обнаруживается по адресу 0x3C.

Библиотеки

Для такого дисплея существует несколько библиотек. Самая известная из них Adafruit SSD1306, в её составе есть примеры вывода графики.

Пример из библиотеки Adafruit SSD1306

Другой вариант — библиотека OLED_I2C. В ней объект экрана создаётся строкой OLED display(SDA, SCL, 8), а основные действия выполняются методами begin(), clrScr(), setFont(), print() и update().

Пример из библиотеки OLED_I2C

Вывод русского текста

Библиотека OLED_I2C поддерживает кириллицу. Шрифт объявляется строкой extern uint8_t RusFont[]; и выбирается в нужном месте вызовом display.setFont(RusFont).

Особенность в том, что русские слова в скетче набираются не кириллицей, а латинскими символами в английской раскладке клавиатуры, то есть нажимаются те же клавиши, что и при русском наборе. Так, слово «Обзор» записывается как J,pjh, а фраза «Русский шрифт» как Heccrbq ihban. В вызове print после текста указывают выравнивание (например, CENTER) и вертикальную координату строки. Демонстрационный скетч очищает экран, выводит пять строк по центру с шагом 10 пикселей, держит их 5 секунд, затем стирает и через 2 секунды повторяет.

Пример: часы на OLED-дисплее

Практическое применение — экран часов. Время берётся с микросхемы DS3231, для чего в скетч добавлены библиотеки Wire, Time и DS1307RTC. Раз в секунду программа читает время, приводит часы, минуты и секунды к двузначному виду и выводит три строки: время, дату через косую черту и день недели. Для времени и даты используется шрифт SmallFont, для дня недели RusFont; названия дней заранее записаны в массив тем же способом, в английской раскладке.

← Все статьи