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
- Загрузить примеры