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


