Answer the question
In order to leave comments, you need to log in
Running parallel streams from setup, not from loop?
Работаю с внешними устройствами. Мне нужно одновременно выполнить несколько команд. Я решил воспользоваться библиотекой ArduinoThread
. Делаю всё как в примере, но если я хочу запустить только один раз, из setup() - ничего не происходит.
В примере перемещение controll.run();
в setup() не помешало работе, а в случае вызова функции из другой библиотеки - ничего не происходит. Если в loop - то всё нормально.
Что делать? Приму любые советы.
Answer the question
In order to leave comments, you need to log in
Once upon a time, I also made a library for pseudo-threads.
controll.run(); должен быть в loop.
вы же понимаете что никакой многопоточности в ардуино быть не может. controll.run в каждой итерации loop проверяет все подключенные обработчики/thread и если пришло их время запускает эти функции. никакого волшебства, ровно как и никаких реальных потоков.
если вы не вызываете controll.run в loop то эти обработчики никогда не будут запущены.
также учтите что код в обработчиках не выполняется параллельно!!!
то есть если 2 функции(thread) которые там добавлены выполняются каждая по 1 секунде (например они содержат sleep внутри себя) то они будут выполнены ровно по очереди и вместе будут выполняться 2 секунды, а не 1 секунду как было бы при честной многопоточности.
or another option to do their launch by condition
initTime = millis() + 5000;
loop() {
if (millis() < initTime) {
controll.run();
}
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question