В настоящее время я пытаюсь выяснить конфигурацию управления сервоприводами, подключенными к Arduinos, с помощью Nodebot johnny-five.io, размещенного на RPi. Моя главная цель - сделать гексапод с нуля; Мне не нравится идея наборов, потому что это весь код и части печенья, которые вы собираете, и это более или менее машина с дистанционным управлением, на которой вы ничего не узнали.
Я только что изучил основы сервоприводов (которые я выбираю сервоприводы вместо шаговых двигателей). И, к сожалению, по умолчанию, серво скорость не может контролироваться через ШИМ, только положение. Таким образом, способ обойти это - создать цикл, который увеличивает сервопривод на 1 градус (или более) за раз с задержкой в X мс в контуре до тех пор, пока сервопривод не достигнет желаемой позиции. Теперь, это хорошо, и все, если вы управляете только одним сервоприводом за раз или количеством сервоприводов за раз для перемещения в одно заданное положение в другое. Но я стреляю для плавного движения здесь; Я хочу, чтобы одна нога начала двигаться раньше, чем другая нога остановилась. Истинная текучесть в движении, для этого мне понадобится бесконечный цикл, который будет проверять входные состояния, установленные управляющими командами, которые получит API.
Проблема здесь в том, что циклы while не асинхронны. Итак, мне нужно найти способ запустить цикл, который устанавливает разные сервоприводы на разных скоростных диапазонах и в разных положениях, а в конце цикла проверяет наличие новых обновлений входного состояния. И мне нужно сделать это без создания утечки памяти.
Одним из способов было бы создать набор сценариев зависимостей, которые работали бы асинхронно для каждого из сервоприводов (3 сервопривода на ногу, 6 ножек, 18 сервоприводов, следовательно, 18 мини-зависимостей), но я не уверен, будет ли это слишком много накладных расходов или нагрузка на RPi.
Я обдумываю это?