View Categories

Дисплей OLED

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() {
}

Остальные возможности смотри в документации и встроенных примерах.

Рекомендуется изучить урок по написанию программ с дисплеями, чтобы всё работало быстро и без зависаний

Полезные страницы #

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Прокрутить вверх