Код
код Arduino
/ * * ===============================================================* Программа управления MobBob - программная последовательная версия Bluetooth * Кевин Чан (он же Cevinius) * =============================================================* * Эта программа позволяет управлять MobBob с помощью последовательных команд. В этой версии кода команды * принимаются через программный последовательный порт, а контакты определены в #define вверху. * Это означает, что вы можете использовать любую совместимую с Arduino плату и подключить карту Bluetooth к контактам, установленным для * программного последовательного порта. (В отличие от другой версии, разработанной для платы Bluno от DFRobot.) * * Эта программа длинная и содержит 2 основных компонента - программу плавной сервоанимации и программу синтаксического анализатора последовательных * команд. * * Система анимации * ================* Программа анимации предназначена для плавной анимации массивов серво ключевых кадров. Код пытается * сделать все возможное, чтобы его было легко использовать. * * Система анимации ставит в очередь только 1 команду. т.е. одна команда может быть запущена * и одна команда может быть поставлена в очередь. Если вы отправите больше команд, они перезапишут команду в очереди. * * Система анимации по умолчанию ожидает завершения текущей анимации перед запуском следующей. Это * означает, что если данные анимации заканчиваются тем, что робот находится в его базовой позе, все будет плавно соединяться. Чтобы * поддержать это, система анимации также имеет функцию, при которой анимация может иметь «завершающую последовательность» *, чтобы вернуть робота в базовую позу. Эта функция используется для анимации ходьбы вперед / назад. * Эти анимации имеют финальную последовательность, которая возвращает робота в базовую позу. * * По окончании воспроизведения анимации система анимации выведет строку ответа на последовательный порт. * Это позволяет вызывающим абонентам узнать, когда анимация, которую они запросили, закончила воспроизведение. Это полезно * для пользователей, чтобы упорядочить анимацию - дождаться завершения одной перед запуском другой. * * В коде анимации есть много переменных, позволяющих изменять настройки. Например. Частота обновления, контакты Arduino и т. Д. * * Формат массива данных анимации также разработан таким образом, чтобы его можно было легко редактировать вручную. * * Командный синтаксический анализатор * ==============* Эта система анализирует команды, полученные через последовательный порт, и обрабатывает их. Команды включают в себя команду для прямой * установки положений сервоприводов, а также команды для запуска заранее определенных анимаций и прогулок. * * Таким образом, пользователи, которые не хотят беспокоиться о деталях ходьбы, могут просто использовать заранее определенные прогулки / анимации. * И пользователи, которым нужен полный контроль над сервоприводами (для создания новой анимации на лету), тоже могут это сделать. * * Как упоминалось выше, эти команды можно использовать в интерактивном режиме из последовательного монитора Arduino. Их также можно * отправить с помощью Bluetooth LE (если используется Bluno). Приложение для телефона отправит команды через Bluetooth LE на * Bluno. * * Общие команды:* ----------------- * Готов / ОК Проверка: * Проверка состояния. Ответ возвращается немедленно, чтобы проверить, работает ли контроллер. * * Set Servo: * time - время перехода к заданным углам, 0 будет немедленно переходить к углам * leftHip - микросекунды от центра. -ve бедро внутрь, + ve бедро наружу * leftFoot - микросекунды от плоскости. -ve - стопа вниз, + ve - ступня вверх * rightHip - микросекунды от центра. -ve бедро внутрь, + ve бедро наружу * rightFoot - микросекунды от плоскости. -ve - стопа вниз, + ve - стопа вверх * Эта команда используется для получения полного контроля над сервоприводами. Вы можете перемещать робота из его * текущей позы в заданную в течение указанного времени. * * Стоп / Сброс: * Останавливает робота после текущей анимации. Может использоваться для остановки анимации, установленной в цикл * на неопределенный срок. Это также можно использовать для установки робота в его базовую позу (стоя прямо) * * Немедленная остановка: * Немедленно останавливает робота, не дожидаясь завершения текущей анимации. Это * прерывает текущую анимацию робота. Потенциально робот может находиться в середине анимации * и в нестабильной позе, поэтому будьте осторожны при использовании этого. * * Стандартные команды ходьбы:* ----------------------- * Вперед:, -1 означает непрерывно, 0 или нет параметров. так же, как 1 раз. * Назад:, -1 означает непрерывно, 0 или отсутствие параметров равно 1 разу. * Поверните налево:, -1 означает непрерывно, 0 или отсутствие параметров совпадает с 1 разом. * Поверните направо: