Добрый день. В рунете нашел только один пример организации многопоточности с помощью Thread, пытаюсь его переделать под свои нужды - не получается. Требуется: при срабатывании реле повернуть одновременно две сервы. Вот начало кода #include <Servo.h> #include <Thread.h> const int movPin = 2; const int relPin = 3; Servo servoVerh; Servo servoNiz; Thread verhThread = Thread(); Thread nizThread = Thread(); void setup() { Serial.begin(9600); pinMode(movPin, INPUT); pinMode(relPin, OUTPUT); servoVerh.attach(9); servoNiz.attach(10); verhThread.onRun(servoVerh.write(90)); // назначаем потоку задачу verhThread.setInterval(6000); nizThread.onRun(servoNiz.write(90)); // назначаем потоку задачу nizThread.setInterval(6000); } Уже на этом месте ругается "invalid use of void expression". Каким образом надо задачу назначать?
Видимо так, только зачем Thread если можно просто сервы повернуть. Код (C++): void f_verhThread() { servoVerh.write(90); } void f_nizThread() { servoNiz.write(90); } void setup() { .... verhThread.onRun(f_verhThread); // назначаем потоку задачу verhThread.setInterval(6000); nizThread.onRun(f_nizThread); // назначаем потоку задачу
write только даёт команду повернуться на угол. А серва её исполняет асинхронно. write не ждёт когда поворот произойдёт. у сервы даже нету обратной связи с МК. МК даже не знает повернулась серва или нет.