Skip to contentSkip to main navigation Skip to footer

Arduino и OLED дисплей

Описание


Набор GyverKIT комплектуется графическим OLED дисплеем:

Характеристики:

  • Разрешение: 128×64 пикселя
  • Диагональ: 0.96″
  • Контроллер: SSD1306
  • Подключение: I2C

Подключение


Модуль подключается на шину I2C и питание, как и любой другой модуль такого типа:

  • Arduino: SDA – A4, SCL – A5
  • Wemos: SDA – D2, SCL – D1

Библиотеки


Для данного дисплея существует несколько библиотек:

  • u8glib – мощная, но очень тяжёлая библиотека от olikraus
  • Adafruit_SSD1306 – библиотека от adafruit
  • GyverOLED – наша библиотека. Очень лёгкая и быстрая, поддерживает русский шрифт

В примерах на этом сайте мы будем использовать GyverOLED. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию 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() {
}

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

Домашнее задание


  • Изучить документацию на GyverOLED
  • Загрузить примеры

Полезный пример?

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