Параллельный доступ к серводвигателям в Arduino

Я быстро взглянул на библиотеку Arduino Servo, и это довольно сложно. Ясно, что он ждет, когда выдается команда записи. Тот факт, что он блокирует, очень замедляет объединение команды серводвигателя с другим кодом или управление несколькими сервоприводами (например, рукой с 5 пальцами).

Одним из подходов было бы наличие многопоточной библиотеки на Arduino, но я не видел библиотеки с несколькими потоками на Arduino. Но для управления несколькими сервоприводами было бы так же хорошо иметь асинхронный API, который позволяет нам устанавливать n запросов сервоприводов, а затем говорить «вперед», и все они отправляются одновременно. Есть ли такой API? Есть ли аппаратная причина, по которой это невозможно сделать?


person Dov    schedule 25.09.2013    source источник


Ответы (1)


Многопоточность на Arduino невозможна, потому что он не использует тот же тип процессора, который вы найдете в своем компьютере.

Поэтому заниматься несколькими делами одновременно невозможно. Вы можете попытаться имитировать то, как операционная система работает с процессами, но это будет непросто.

Если вам нужно больше мощности и больше «интеллектуальности», почему бы не попробовать Raspberry Pi?

person ladislas    schedule 26.09.2013
comment
Это просто глупо. Это процессор 16 МГц, хотя и с очень маленькой оперативной памятью. Многопоточность возможна, только медленная и с крошечным кадром стека. Тем не менее, я все равно хотел другого решения. - person Dov; 26.09.2013
comment
Вы можете быть немного более точным в том, что вы называете многопоточностью? - person ladislas; 27.09.2013