OLED 128x64 - самый популярный графический дисплей для Arduino, позволяет выводить любую пиксельную графику (фигуры, текст, изображения). Очень яркий и контрастный в любую погоду, а за счёт небольшого размера имеет высокую плотность пикселей и отлично смотрится.
![]() |
В наборе GyverKIT | START | IOT | EXTRA |
---|---|---|---|---|
OLED дисплей | ✔ |
Характеристики:
- Разрешение: 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() {
}
Остальные возможности смотри в документации и встроенных примерах.
Рекомендуется изучить урок по написанию программ с дисплеями, чтобы всё работало быстро и без зависаний
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
- Поддержать автора за работу над уроками