Несколько простых способов создать многопоток в Arduino:
- Использовать библиотеку ArduinoThread. github.com Она позволяет планировать, управлять и упрощать параллельные и периодические задачи, определять фиксированное или переменное время между запусками. github.com
- Применить функцию yield(). alexgyver.ru Она позволяет выполнять код внутри задержек delay() и таким образом реализовать параллельное выполнение двух задач: одной по задержке, а второй — постоянно. alexgyver.ru
- Использовать программный таймер. alexgyver.ru При помощи функций времени millis() или micros() можно организовать программный таймер, по которому и выполнять нужные действия. alexgyver.ru
Также можно создать менеджер заданий и легковесные функции-обработчики, которые менеджер будет вызывать постоянно по чуть-чуть, а функция будет проверять, есть ли то, что ей нужно сделать, и если нет — возвращать управление менеджеру. yandex.ru