OLED 128x64 - самый популярный графический дисплей для Arduino, позволяет выводить любую пиксельную графику (фигуры, текст, изображения). Очень яркий и контрастный в любую погоду, а за счёт небольшого размера имеет высокую плотность пикселей и отлично смотрится.
| В наборе GyverKIT | Aliexpress | |
|---|---|---|
![]() |
EXTRA |
Купить |
Характеристики:
- Разрешение: 128×64 пикселя
- Диагональ: 0.96"
- Контроллер: SSD1306
- Интерфейс: I2C
Подключение к Arduino #
Модуль подключается на шину I2C и питание, как и любой другой модуль такого типа:
- Arduino: SDA – A4, SCL – A5
- Wemos: SDA – D2, SCL – D1
Библиотеки #
Для данного дисплея существует несколько библиотек:
- u8glib – мощная, но очень тяжёлая библиотека
- Adafruit_SSD1306 – библиотека от adafruit
- GyverOLED – моя библиотека. Лёгкая и быстрая, поддерживает русский шрифт
В примерах на этом сайте будем использовать GyverOLED, её можно установить/обновить из встроенного менеджера библиотек Arduino по названию GyverOLED. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
GyverOLED #
Библиотека имеет два режима работы: с буфером и без буфера:
- С буфером: занимает больше оперативной памяти, но позволяет выводить новые данные с наложением на старые. Требует вызова
update()для применения изменений. Инициализация:GyverOLED<SSD1306_128x32, OLED_BUFFER> oled; - Без буфера: на дисплей сразу выводится указанная графика, заменяя текущее отображение. Инициализация:
GyverOLED<SSD1306_128x32, OLED_NO_BUFFER> oled;
Библиотека умеет делать print() любых типов данных и текста. Позицию вывода можно установить двумя способами:
setCursor(x, y)– пиксель по горизонтали (0.. 127), строка по вертикали (0.. 7). Одна строка – 8 пикселейsetCursorXY(x, y)– пиксель по горизонтали (0.. 127), пиксель по вертикали (0.. 63)
Пример
#include <GyverOLED.h>
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
void setup() {
oled.init(); // инициализация
oled.clear(); // очистка
oled.setScale(3); // масштаб текста (1..4)
oled.home(); // курсор в 0,0
oled.print("Привет!");
delay(1000);
oled.setScale(1);
// курсор на начало 3 строки
oled.setCursor(0, 3);
oled.print("GyverOLED v1.3.2");
// курсор на (20, 50)
oled.setCursorXY(20, 50);
float pi = 3.14;
oled.print("PI = ");
oled.print(pi);
}
void loop() {
}
Можно выводить простую графику:
dot(int x, int y, byte fill)– точка (заливка 1/0)line(int x0, int y0, int x1, int y1, byte fill)– линия (x0, y0, x1, y1)rect(int x0, int y0, int x1, int y1, byte fill)– прямоугольник (лев. верхн, прав. нижн)roundRect(int x0, int y0, int x1, int y1, byte fill)– прямоугольник скруглённый (лев. верхн, прав. нижн)circle(int x, int y, int radius, byte fill)– окружность (центр х, центр у, радиус, заливка)bezier(int* arr, uint8_t size, uint8_t dense, uint8_t fill)– кривая Безье
Пример
#include <GyverOLED.h>
GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
void setup() {
oled.init(); // инициализация
oled.clear(); // очистка
// прямоугольник, углы (0, 0) и (30, 50), обводка
oled.rect(0, 0, 30, 50, OLED_STROKE);
// окружность, центр (80, 30), радиус 10, заливка
oled.circle(80, 30, 10, OLED_FILL);
}
void loop() {
}
Остальные возможности смотри в документации и встроенных примерах.
Меню на OLED дисплее #
Самый простой способ создать меню - готовые библиотеки, например моя GyverMenu. Это не самая "лёгкая" библиотека, но она позволяет в пару строк простого кода описать сложное динамическое меню, которое оптимально выводится на любые символьные дисплеи и управляется любым количеством кнопок или другим способом. Примеры с GyverOLED есть в самой библиотеке, подробное описание по ссылке выше. Более подробная работа с меню будет рассмотрена в других уроках.
Важная информация по дисплеям #
- Вывод данных на дисплей занимает время, поэтому выводить нужно либо по таймеру, либо по факту изменения данных
- Очищать дисплей полностью не всегда целесообразно, иногда достаточно вывести новые значения поверх старых, либо частично очистить "пробелами"
- Вот урок по этой теме
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту (alex@alexgyver.ru)
- Поддержать автора за работу над уроками


