Многие из любителей Arduino знакомы с матричным ЖК-дисплеем с разрешением 16 × 2 точек, который используется в большинстве проектов для отображения некоторой информации для пользователя. Но эти ЖК-дисплеи имеют много ограничений в плане того, что они могут делать.

В этом уроке мы узнаем о OLED дисплеях и о том, как их использовать с Arduino. Есть много типов OLED дисплеев, доступных на рынке, и есть много способов заставить их работать. В данном материале мы будем работать с SSD1306.
Термин OLED обозначает «органический светоизлучающий диод». Дисплеи вроде SSD1306 применяют эту технологию, которая также используется в большинстве наших телевизоров, но дисплей имеет меньше пикселей по сравнению с ними. Очень хорошо, что эти классно выглядящие дисплейные модули очень просто взаимодействуют с Arduino, что позволит усовершенствовать визуальную составляющую многих проектов.

Дисплей SSD1306 является небольшим (0.96 дюймов) и монохромным с 7-ю выводами. Причина выбора этого дисплея заключается в том, что он может работать с тремя различными протоколами связи, такими как режим 3-проводного SPI, четырехпроводный режим SPI и режим I2C. В этом проекте будет показано, как использовать модуль в 4-проводном режиме SPI, так как это самый быстрый и стандартный режим связи. Выводы и их функции описаны в таблице ниже.

Сообщество Arduino уже предоставило нам много библиотек, которые можно напрямую использовать, чтобы намного проще работать с SSD1306. Опробовав несколько библиотек, можно обнаруть, что библиотека Adafruit_SSD1306 очень проста в использовании и имеет несколько графических опций, поэтому мы будем использовать ее в этом руководстве. Но если у вашего проекта есть ограничение по памяти или скорости, попробуйте использовать библиотеку U8g, так как она работает быстрее и занимает меньше памяти программ.
Принципиальная схема подключения OLED SSD1306 с Arduino очень проста и показана ниже.

Мы просто установили связь SPI между модулем OLED и Arduino. Поскольку OLED работает с напряжением от 3В до 5В и потребляет очень мало энергии, ему не требуется внешний источник питания. Вы можете просто использовать провода, чтобы установить соединение, или использовать макетную плату, чтобы было легко экспериментировать. В таблице ниже указано соединение выводов Arduino и SSD1306.

Как только подключение будет завершено, вы можете начать программировать Arduino. Как было сказано ранее, мы будем использовать библиотеку Adafruit и библиотеку GFX для работы с этим модулем OLED. Сначала с Github загрузите библиотеку Adafruit (https://github.com/adafruit/Adafruit_SSD1306) и библиотеку GFX (https://github.com/adafruit/Adafruit-GFX-Library).
Вы должны были загрузить два файла Zip. Теперь добавьте их в Arduino IDE, выполнив Sketch - Include Library - Add Zip library, как показано ниже. Затем выберите библиотеку, которую мы только что скачали. Вы можете выбрать только одну библиотеку за раз, поэтому вы должны повторить этот шаг снова.

Запустите пример программы, выбрав File – Examples - Adafruit SSD1306 - SSD1306_128*64_SPI.ino, как показано на изображении ниже.

Внутри примера программы выше строки 64 добавьте строку «#define SSD1306_LCDHEIGHT 64», как показано на изображении ниже.

Теперь загрузите программу, и вы увидите, что OLED-дисплей включается с примером Adafruit по умолчанию. В этом примере программы показаны все возможные графические элементы, которые могут отображаться на экране OLED. Этого кода должно быть достаточно для создания растровых изображений, рисования линий / кругов / прямоугольников, игры с пикселями, отображения символов и строк с различными шрифтами, размерами и т.д.
Это может показаться сложным, но с помощью веб-инструмента (http://javl.github.io/image2cpp/) очень легко преобразовать изображение в битовые значения и загрузить их в массив кода. Просто загрузите изображение и отрегулируйте настройки, чтобы получить предпочтительный предварительный просмотр изображения. Затем нажмите «Generate Code», скопируйте код и вставьте его в свой массив. Загрузите программу, и все готово. Ниже показан логотип Бэтмена на SSD1306, и как это получилось.


© digitrode.ru