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