Лёгкий универсальный кольцевой буфер для Arduino
- Чтение, запись, очистка
- Статический размер
- Выбор типа данных
Совместима со всеми Arduino платформами (используются Arduino-функции)
- Библиотеку можно найти по названию GyverFIFO и установить через менеджер библиотек в:
- 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: найти библиотеку как при установке и нажать "Обновить"
- Вручную: удалить папку со старой версией, а затем положить на её место новую. "Замену" делать нельзя: иногда в новых версиях удаляются файлы, которые останутся при замене и могут привести к ошибкам!
GyverFIFO<тип данных, размер буфера> buf;
// тип данных: любой. byte/int/float...
// размер буфера в количестве элементов -1
Примечание: реальный размер буфера будет на 1 меньше указанного!
Примечание: запись и чтение выполняется быстрее при размере буфера, равном 2 в степени (размер 2, 4, 8, 16, 32...)
// TYPE - указанный при инициализации тип данных
bool write(TYPE newVal); // запись в буфер. Вернёт true при успешной записи
bool availableForWrite(); // доступность для записи (свободное место)
TYPE read(); // чтение из буфера
TYPE peek(); // возвращает крайнее значение без удаления из буфера
int available(); // вернёт количество непрочитанных элементов
void clear(); // "очистка" буфера
Остальные примеры смотри в examples!
#include <GyverFIFO.h>
GyverFIFO<int, 16> buf;
void setup() {
Serial.begin(9600);
buf.write(12);
buf.write(34);
buf.write(56);
Serial.println(buf.available());
while (buf.available()) {
Serial.println(buf.read());
}
}
void loop() {
}
- v1.0
- v1.1 - исправлено переполнение при >255 элементов
При нахождении багов создавайте Issue, а лучше сразу пишите на почту alex@alexgyver.ru
Библиотека открыта для доработки и ваших Pull Request'ов!
При сообщении о багах или некорректной работе библиотеки нужно обязательно указывать:
- Версия библиотеки
- Какой используется МК
- Версия SDK (для ESP)
- Версия Arduino IDE
- Корректно ли работают ли встроенные примеры, в которых используются функции и конструкции, приводящие к багу в вашем коде
- Какой код загружался, какая работа от него ожидалась и как он работает в реальности
- В идеале приложить минимальный код, в котором наблюдается баг. Не полотно из тысячи строк, а минимальный код