Matrix
Описание
Matrix library for Arduino (Generic/Template) - Универсальная легковесная библиотека для работы с динамическими двумерными массивами (матрицами) на микроконтроллерах.
Языки
- C++100%
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()— Вывод матрицы в Serial порт (работает для базовых типов).m.print(Stream)