GyverLibs / Looper

Лёгкий псевдо-многопоточный событийно-ориентированный фреймворк для Arduino
MIT License
13 stars 1 forks source link

latest PIO Foo Foo Foo

Foo

logo

Looper

Лёгкий псевдо-многопоточный событийно-ориентированный фреймворк для Arduino

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

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

Документация

Находится в папке docs

Содержание

Для чего нужен Looper

Классический Arduino проект, не основанный на операционных системах типа FreeRTOS, имеет архитектуру однопоточного суперцикла (pool based): есть основной цикл loop, который выполняется по кругу на всём протяжении работы программы и в этом цикле мы опрашиваем кнопки/датчики/связь/прочее. Такие опросные функции в терминологии данной библиотеки называются "тикеры". Для инициализации некоторых сущностей код помещается также в setup для выполнения один раз перед запуском основного цикла.

При разработке крупного многофайлового проекта приходится тащить тикеры различных блоков программы из разных файлов в основной loop, вместе с ними тянутся и функции инициализации для вызова в setup, а также создаются глобальные переменные для взаимодействия между файлами и блоками. Для задач, которые вызываются с неким периодом (например раз в секунду), пишутся программные таймеры и также помещаются в loop на постоянную проверку времени.

void setup() {
    disp_init();
    sensor_init();
    wifi_init();
}

void loop() {
    sensors_tick();
    buttons_tick();
}

Данная библиотека решает все эти проблемы:

Это позволяет разделять программу на полностью независимые потоки, а также писать код в событийно-ориентированном стиле

Минусы:

Версии

Установка

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

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

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