Matrix

0

Описание

Matrix library for Arduino (Generic/Template) - Универсальная легковесная библиотека для работы с динамическими двумерными массивами (матрицами) на микроконтроллерах.

Языки

  • C++100%
README.md

Matrix

Matrix library for Arduino (Generic/Template) - универсальная легковесная библиотека для работы с динамическими двумерными массивами (матрицами) на микроконтроллерах.

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

Matrix — это крошечная, но мощная библиотека для создания двумерных массивов (таблиц) в памяти микроконтроллера (Arduino/ESP8266/ESP32). Она работает с любыми типами данных: от обычных символов до дробных чисел и сложных структур. Внутри библиотека хранит данные в виде линейного массива (одномерный массив). Это делает её максимально быстрой для памяти микроконтроллера, при этом сохраняя удобство работы как с обычной таблицей.

Как работает

Вместо того чтобы создавать массив указателей на другие массивы (что фрагментирует память), библиотека выделяет один цельный блок. Когда вы пишете matrix[1][2], библиотека мгновенно вычисляет адрес по формуле: Индекс = (Номер строки × Количество столбцов) + Номер столбца.

Зачем она нужна?

  • При работе с микроконтроллерами (Arduino/ESP8266/ESP32) создание таблиц, размер которых можно менять во время работы программы, — это головная боль, которая из-за невнимательности может приводить к ошибкам и зависаниям. Эта библиотека берет всё управление памятью на себя.
  • Идеально подходит для: игровых полей (змейка, тетрис), буферов дисплеев, хранения истории датчиков или таблиц настроек.

Особенности

  • Шаблонная (Template): Работает с любым типом данных (
    int
    ,
    float
    ,
    char
    ,
    struct
    и т.д.).
  • Динамическая: Выделяет память в куче (Heap) только во время работы, что экономит RAM.
  • Линейное хранение: Данные хранятся одним сплошным блоком, что обеспечивает высокую скорость доступа.
  • Безопасность: Автоматическое управление памятью через деструкторы (защита от утечек).

Основные функции

  • Matrix<T> m(rows, cols, default)
    — Конструктор. Создает матрицу и заполняет её значением
    default
    .
  • m[row][col]
    — Доступ к элементу (чтение/запись) через привычный синтаксис.
  • m.at(row, col)
    — Альтернативный доступ к элементу.
  • m.fill(value)
    — Заполнить всю матрицу указанным значением.
  • m.clear()
    — Сбросить все ячейки к значению по умолчанию, заданному при создании.
  • m.resize(newRows, newCols, default)
    — Изменить размер матрицы "на лету" с сохранением старых данных.
  • m.getRows()
    ,
    m.getCols()
    — Получить текущие размеры таблицы.
  • m.print(Stream)
    — Вывод матрицы в Serial порт (работает для базовых типов).

Пример использования

Пример файла
MatrixDemo.ino