/GyverMAX7219

Cамая резкая библиотека для матриц MAX7219 на диком западе

Primary LanguageC++MIT LicenseMIT

latest PIO Foo Foo Foo

Foo

GyverMAX7219

Cамая резкая библиотека для матриц MAX7219 на диком западе

  • Наследует графику из GyverGFX
  • Подключение матриц зигзагом
  • Аппаратный и программный SPI
  • Невероятная оптимизация
  • Работает с дисплеями любой конструкции

Совместимость

Совместима со всеми Arduino платформами (используются Arduino-функции)

Содержание

Установка

  • Для работы нужна GyverGFX
  • Библиотеку можно найти по названию GyverMAX7219 и установить через менеджер библиотек в:
    • Arduino IDE
    • Arduino IDE v2
    • PlatformIO
  • Скачать библиотеку .zip архивом для ручной установки:
    • Распаковать и положить в C:\Program Files (x86)\Arduino\libraries (Windows x64)
    • Распаковать и положить в C:\Program Files\Arduino\libraries (Windows x32)
    • Распаковать и положить в Документы/Arduino/libraries/
    • (Arduino IDE) автоматическая установка из .zip: Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… и указать скачанный архив
  • Читай более подробную инструкцию по установке библиотек здесь

Обновление

  • Рекомендую всегда обновлять библиотеку: в новых версиях исправляются ошибки и баги, а также проводится оптимизация и добавляются новые фичи
  • Через менеджер библиотек IDE: найти библиотеку как при установке и нажать "Обновить"
  • Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!

Инициализация

MAX7219 < W, H, CS > mtrx;            // подключение к аппаратному SPI
// пример: UNO / Nano (CLK - D13, DI - D11, CS - любой пин)

MAX7219 < W, H, CS, DATA, CLK > mtrx; // подключение к любым пинам (софт SPI)
// W и H - количество МАТРИЦ по горизонтали и вертикали
// CS, DATA, CLK - номера пинов

Дисплей

setType setConnection

Использование

// настройка
void begin();                       // запустить
void setBright(byte value);         // установить яркость [0-15]
void setBright(uint8_t* values);    // установить разную яркость
void setPower(bool value);          // переключить питание
void setPower(bool* values);        // переключить питание у выбранных
void clearDisplay();                // очистить дисплей (не буфер)

// ориентация
void setRotation(uint8_t rot);      // поворот МАТРИЦ (8x8): 0, 1, 2, 3 на 90 град по часовой стрелке
void setFlip(bool x, bool y);       // зеркальное отражение МАТРИЦ (8x8) по x и y
void setType(bool type);            // конструкция дисплея (тип строчности)
void setConnection(uint8_t conn);   // точка подключения дисплея

// графика
void fillByte(uint8_t data);        // залить байтом
void fill();                        // залить буфер (включить все)
void clear();                       // очистить буфер
void update();                      // обновить дисплей

void dot(int x, int y, uint8_t fill = 1); // установить точку
bool get(int16_t x, int16_t y);           // получить точку из буфера

// + наследует возможности GyverGFX https://github.com/GyverLibs/GyverGFX

// custom
void beginData();     // начать отправку
void endData();       // закончить отправку
// отправка данных напрямую в матрицу (строка, байт)
void sendByte(uint8_t address, uint8_t value);

Пример

Остальные примеры смотри в examples!

#include <GyverMAX7219.h>
MAX7219 < 1, 1, 5 > mtrx;   // одна матрица (1х1), пин CS на D5

void setup() {
  mtrx.begin();       // запускаем
  mtrx.setBright(5);  // яркость 0..15
  //mtrx.rotate(1);   // можно повернуть 0..3, по 90 град по часовой стрелке

  mtrx.dot(0, 0);     // пиксель на координатах 0,0
  mtrx.update();      // показать
  delay(1000);
  mtrx.clear();

  // линии крест накрест
  mtrx.line(0, 0, 7, 7);  // (x0, y0, x1, y1)
  mtrx.line(7, 0, 0, 7);
  mtrx.update();
  delay(1000);
  mtrx.clear();

  // круг
  mtrx.circle(3, 3, 3, GFX_FILL); // х, у, радиус, заливка
  mtrx.update();
  delay(1000);
  mtrx.clear();

  // окружность
  mtrx.circle(3, 3, 3, GFX_STROKE);
  mtrx.update();
  delay(1000);
  mtrx.clear();

  // остальную геометрию смотри в документации
}

void loop() {
}

Версии

  • v1.0 - релиз
  • v1.1 - оптимизирован SPI
  • v1.2 - переделан FastIO
  • v1.2.1 - исправлен баг в SPI (с 1.2)
  • v1.2.2 - убран FastIO
  • v1.3 - мелкие доработки и оптимизация, добавил поворот матриц
  • v1.4 - добавил поддержку матричных дисплеев любой конфигурации (точка подключения, направление, чередование)
  • v1.5 - добавил раздельное управление яркостью и питанием матриц

Баги и обратная связь

При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!

При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:

  • Версия библиотеки
  • Какой используется МК
  • Версия SDK (для ESP)
  • Версия Arduino IDE
  • Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
  • Какой код загружался, какая работа от него ожидалась и как он работает в реальности
  • В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код