OLED-дисплей стал популярным выбором для интеграции в проекты Arduino, главным образом потому, что он компактен, имеет низкое энергопотребление и обеспечивает исключительную видимость даже в условиях яркого освещения. Более того, благодаря простоте подключения его использование доступно любому энтузиасту электроники, независимо от его опыта. В этой статье мы подробно рассмотрим, как подключить и запрограммировать 0.96-дюймовый OLED-дисплей с помощью Arduino, подробно описав технические аспекты и предложив практические примеры кода.
Если вы никогда не работали с OLED-дисплеем, вам следует знать несколько ключевых моментов, прежде чем начинать свой проект. OLED (органические светоизлучающие диоды) имеют фундаментальные отличия от других типов экранов, таких как ЖК-дисплеи. Например, OLED не требует подсветки, что существенно снижает энергопотребление. На экранах размером всего 0.96 дюйма это может быть важно, если проект работает от батареи. Теперь давайте углубимся в его особенности.
Что такое OLED-экран?
OLED-экран — это тип дисплея, в котором используется органическое соединение, излучающее свет при подаче электрического тока. Это делает их идеальными для многих проектов в области электроники, поскольку их технология позволяет каждому пикселю светиться самостоятельно, что также улучшает видимость на открытом воздухе. Большинство OLED-экранов, продаваемых для Arduino, имеют контроллер SSD1306, который позволяет управлять отправкой сигналов на экран. На самом деле SSD1306 — один из самых распространенных в проектах Arduino, и мы увидим его на примерах позже.
Одним из главных преимуществ OLED-экранов является их низкое энергопотребление. В среднем небольшой экран с диагональю 0.96 дюйма может потреблять около 20 мА. Почему это важно? Что ж, если вы используете батарею для питания своего проекта Arduino, снижение энергопотребления всегда является значительным плюсом. Кроме того, его разрешение 128x64 пикселей позволяет отображать изображения с довольно хорошей резкостью, учитывая его размер.
С другой стороны, одна из проблем, которая может возникнуть с экраном этого типа, заключается в том, что его размер очень мал. Хотя они обеспечивают хорошую видимость, в некоторых проектах, где требуется отображение большого количества информации, этого размера может быть недостаточно.
Подключение OLED-дисплея к Arduino
OLED-дисплей легко подключается к плате Arduino с помощью шины I2C или SPI, в зависимости от модели. В этом уроке мы сосредоточимся на соединении с использованием I2C, поскольку оно является одним из самых распространенных и простых.
Вы должны соединить контакты OLED-дисплея с соответствующими контактами вашего Arduino следующим образом:
- GND (земля) с помощью контакта GND Arduino.
- VCC с выводом 5 В или 3.3 В Arduino.
- SDA к контакту A4 Arduino
- SCL для контакта A5 Arduino
Как видите, подключение довольно простое: вам понадобится всего четыре кабеля. Далее, независимо от того, используете ли вы шину SPI или I2C, процесс подключения аналогичен, хотя контакты различаются в зависимости от выбранного вами типа связи.
Пример кода для OLED-дисплея
Чтобы OLED-экран работал с Arduino, одним из лучших вариантов является использование библиотек, разработанных Adafruit. Контроллер SSD1306, как мы упоминали ранее, совместим с библиотекой Адафрут SSD1306, что облегчает нам жизнь при создании графики и текста на экране.
Ниже я оставляю вам базовый код, который позволит вам отображать текст на OLED-экране с соединением I2C:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 10);
display.println(F("Hola, Mundo!"));
display.display();
}
void loop() {}
Этот код инициализирует экран, очищает его, а затем пишет «Hello, World!» на OLED-экране. Вы можете использовать различные функции библиотеки Adafruit GFX для создания графиков, рисования линий, кругов или даже отображения изображений на экране.
Другие полезные примеры для экрана OLED
Приведенный выше пример — это лишь базовое введение, но с помощью OLED-дисплеев вы можете сделать гораздо больше. Например, вы можете рисовать разные геометрические фигуры, делать анимацию или даже создавать небольшие графики.
Одна из наиболее интересных функций, предлагаемых библиотеками Adafruit, — это возможность рисовать несколько пикселей, что означает, что вы можете создавать анимацию прокрутки. Дополнительным примером может служить прокрутка текста, что очень полезно, если вы планируете отображать сообщения, которые изменяются динамически.
Еще одно применение этих экранов — отображение данных в реальном времени в интерактивных проектах, таких как датчик температуры или влажности. Экран можно обновлять по мере получения новых показаний датчиков, что делает любой проект более наглядным.
Распространенные проблемы при использовании OLED-экранов
Одной из наиболее распространенных проблем при использовании OLED-дисплеев с Arduino является нехватка памяти. Библиотеки Adafruit, хотя и очень полные, могут занимать значительный объем памяти процессора Arduino, особенно в таких версиях, как Arduino Uno. Если у вас проблемы с пространством, вы можете попробовать оптимизировать свой код, удалить ненужные функции или даже использовать плату большей емкости, например Arduino Mega.
Еще одна распространенная проблема — первоначальная настройка соединения I2C. Если вы используете неправильные контакты SDA и SCL, дисплей может не работать или отображать ошибки подключения. Убедитесь, что вы используете правильные контакты в зависимости от вашей модели Arduino.
Наконец, некоторые пользователи также сообщают о пустом экране или экране, который не отвечает ни на какие команды. Эту проблему можно решить, проверив правильность напряжения питания (3.3 В или 5 В в зависимости от модели дисплея) и правильность подключения кабелей.