
- •1. Обзор
- •1.A. Micro Maestro выводов и компоненты
- •1.B. Мини Маэстро выводов и компоненты
- •1.C. Светодиоды
- •1.D. Поддерживаемые операционные системы
- •2. Обращение Pololu
- •3. Приступая к работе
- •3.A. Установка драйверов и программного обеспечения для Windows
- •3.B. Установка драйверов и программного обеспечения Linux
- •3.C. Использование Maestro без usb
- •4. Использование Центра Maestro управления
- •4.A. Статус и в режиме реального времени контроль
- •4.B. Ошибки
- •4.C. Секвенсор
- •4.D. Ввод Script
- •4.E. Настройки канала
- •4.F. Обновление микропрограммы
- •4.F.1. Жесткий загрузчика Сброс
- •5. Последовательный интерфейс
- •5.A. Параметров последовательного
- •5.B. Ttl Серийный
- •5.C. Команд Протоколы
- •0XAa, номер устройства байт, байт команды с msb очищается, Все необходимые байты данных
- •0XFf, число серво байт, серво целевой байт
- •5.D. Циклического избыточного кода (crc) Обнаружение ошибок
- •5.E. Последовательных команд Servo
- •5.F Вы Последовательные команды Script
- •5.G. Последовательное подключение
- •5.H. Серийный Пример кода
- •5.H.1. Кросс-платформенная c
- •5.H.2. Окна c
- •5.H.4. Bash скрипт
- •6. Маэстро языка сценариев
- •6.A. Маэстро скрипта Основы языка
- •6.B. Справочник команд
- •6.C. Примеры скриптов
- •6.D. Характеристики Script
- •7. Примеры схем подключения
- •7.A. Включение Maestro
- •7.B. Прикрепление сервоприводы и периферийные устройства
- •7.C. Подключение к микроконтроллера
- •8. Написание по для пк для управления Маэстро
- •9. Настройки Maestro Ограничения
- •10. Связанные ресурсы
6. Маэстро языка сценариев
Скрипт представляет собой последовательность команд, которая выполняется на Маэстро. Команды можно установить серво цели, скорости и ускорения, получить входные значения, а также выполнять математические вычисления. Основные управляющие структуры - циклы и условные - доступны для использования в принятии сложные скрипты. Язык скриптов Maestro является простой стек-ориентированный язык очень похож на слово, и скрипты компилировать в компактном байт-код, в котором команды и вызовов подпрограмм друг взять только один байт. Простой редактор / отладчик доступен на вкладке Script приложения Maestro Control Center.
6.A. Маэстро скрипта Основы языка
Команды и стек
Программа на языке сценариев Маэстро состоит из последовательности команд , которые действуют на стек значений. Значения в стеке являются целыми числами от -32768 до +32767. На микро-Maestro 6-канального сервоконтроллера, есть место для до 32 значений в стеке, в то время как на сервопреобразователей Мини Maestro есть зал вместимостью до 126 значений в стеке.Команды всегда действовать на самых верхних значений в стеке и оставить свои результаты на вершине стека. Простейшим видом команд литералы , числовые значения, которые размещаются непосредственно в стек. Например, программа "-10 20 35 0" выводит значения -10, 20, 35 и 0 последовательно в стек, так что это выглядит так:
|
значение |
3 |
0 |
2 |
35 |
1 |
20 |
0 |
-10 |
Более сложный команда является командой PLUS, который добавляет два верхних номера, оставив результат на вершине стека.Пусть числа 1, 2, 4 и 7 последовательно помещается в стек, а команда PLUS выполняется. В следующей таблице показан результат:
|
до |
после |
3 |
7 |
|
2 |
4 |
11 |
1 |
2 |
2 |
0 |
1 |
1 |
Обратите внимание, что команда ПЛЮС всегда уменьшает размер стека на единицу. Это до вас, чтобы убедиться, что у вас достаточно значения в стеке для завершения команды, которые вы хотите запустить!
Рассмотрим более сложный пример: предположим, мы хотим вычислить значение (1 - 3) × 4, с использованием МИНУС и команды размножаться. Способ написать это вычисление как сценарий является "1 3 МИНУС 4 РАЗА".
Комментарии, случай, пробелы, а также переводы строк
Все части скриптового языка Маэстро не чувствительны к регистру, и вы можете использовать любой вид пробелов (пробелы, табуляции и новой строки) для разделения команд. Комментарии обозначаются знаком фунта "#" - все от # до конца линии будут игнорироваться компилятором. Например, указанное вычисление можно записать в виде:
?
1 2 3 |
1 3 минус 4 # это комментарий! раз |
с абсолютно не влияет на составленной программе. Мы вообще используем строчные для команд и два или четыре пространства отступа для обозначения управляющих структур и подпрограммы, но не стесняйтесь устроить свой код, чтобы удовлетворить свой личный стиль.
Управляющие структуры
Язык скриптов Maestro имеет несколько управляющих структур, которые позволяют произвольно сложные программы для записи. В отличие от подпрограмм, нет никаких ограничений на уровне вложенности управляющих структур, поскольку все они в конечном счете на основе команд GOTO (см. ниже) и простой ветвление. До сих пор наиболее полезно структура управления НАЧАТЬ ... ПОВТОР бесконечный цикл, пример которого приведен ниже:
?
1 2 3 4 5 6 7 |
# Переход серво 1 и обратно с периодом 1 секунду начать 8000 1 сервопривода 500 задержки 4000 1 сервопривода 500 задержки повтора |
Это бесконечный цикл будет продолжаться вечно. Если вы хотите петлю, ограниченная в некотором роде, ключевое слово ПОКА, вероятно, будет полезно. ПОКА потребляет верхнюю число в стеке и переходит к концу цикла, если и только если оно является нулевым. Например, предположим, что мы хотим повторить этот цикл ровно 10 раз:
?
1 2 3 4 5 6 7 8 9 10 |
10 # начать с 10 в стеке начать DUP # скопировать номер в стеке - копия будет потребляться WHILE а # перейти в конец, если количество достигает 0 8000 1 сервопривода 500 задержки 4000 1 сервопривода 500 задержки 1 минус # вычесть 1 из числа раз оставшийся повторного |
Обратите внимание, что начинать ... ПОКА ... REPEAT петли похожи на то время петель многих других языках. Но, как и все остальное в скриптового языка Maestro, В ТО ВРЕМЯ КАК приходит после аргумента.
Для условных действий, ЕСЛИ ... ELSE ... ENDIF структура полезна. Предположим, что мы строим систему с датчиком на канале 3, и мы хотим, чтобы установить сервопривод 5 до 6000 (1,5 мс), если входное значение меньше 512 (около 2,5 В). В противном случае, мы установим сервопривод до 7000 (1,75 мс). Следующий код выполняет эту относительно сложную задачу:
?
1 2 3 4 5 6 7 |
3 get_position # получить значение входа 3 в виде числа от 0 до 1023 512 less_than # теста является ли это менее 512 -> 1, если оно истинно, 0, если ложно , если 6000 5 серво # эта часть выполняется при INPUT3 <512 еще 7000 5 серво # эта часть выполняется при вход3> = 512 ENDIF |
Как и в большинстве языков, в разделе ELSE не является обязательным. Отметим еще раз, что это кажется на первый взгляд назад относительно других языках, так как ЕСЛИ приходит после теста.
В ТО ВРЕМЯ КАК и ЕСЛИ структуры достаточно, чтобы создать практически любой вид скрипта. Тем не менее, бывают случаи, когда это просто не удобно думать о том, что вы пытаетесь сделать с точки зрения цикла или филиала. Если вы просто хотите, чтобы перейти непосредственно из одной части кода на другой, вы можете использовать GOTO. Вот как это работает:
?
1 2 3 4 5 |
перейти MyLabel # ... любой код здесь пропускается ... 4000 1 сервопривода MyLabel: # программа продолжается здесь 4000 2 серво |
В этом примере, только серво 2 будет получить набор до 4000, в то время как серво 1 не изменится.
Подпрограммы
Это может быть полезно использовать ту же последовательность команд много раз на протяжении всей программы.Подпрограммы используются, чтобы сделать это проще и пространственно-эффективный. Например, предположим, что вы часто нужно установить сервопривод 1 и сервопривод 2 обратно в свои нейтральных позициях 6000 (1,5 мс), используя последовательность "6000 1 сервопривода 6000 2 серво". Можно инкапсулировать это в подпрограмме следующим образом:
?
1 2 3 4 |
суб нейтральной 6000 1 сервопривода 6000 2 серво возврат |
Тогда, когда вы хотите отправить эти два сервоприводы к нейтральной, а вы можете просто использовать «нейтраль» как команду.Более продвинутые подпрограммы принимать значения из стека. Например, подпрограмма
?
1 2 3 |
суб set_servos 2 серво 1 серво возврат |
установит канал 2 на значение на вершине стека и канал 1 к следующему значению. Так что, если вы пишете "4000 6000 set_servos", ваш сценарий будет установлен канал 1 к 4000 и канал 2 до 6000.
Подпрограммы может вызывать другие подпрограммы, до предела 10 уровней рекурсии. Например, подпрограмма "нейтрального" выше, могут быть реализованы с помощью вызова set_servos:
?
1 2 3 |
суб нейтральной 6000 6000 set_servos возврат |