Вид пакета будет примерно таким тогда
[ cmd | data ] а также просто
[ cmd ] где рамерность
cmd составляет 1 байт.
Также думаю необходимо задать команды инициализации. Далее вид команд приведен для примера и не являеца окончательным
- Включение подачи сигналов
[ 0xFF ]- Соответственно, отключение
[ 0x00 ]- Reset, сброс
[ 0x0F ]- ( Инициализация ) Задача параметров для данного типа серво. К примеру, у HS-311 -45° это 900мкс а +45° это 2100.
[ 0x01 | min_angle | max_angle | min_pulse | max_pulse ] ,где min_angle и max_angle 1 байт, а min_pulse и max_pulse 2 байта. Точнее будет выглядеть так
[ 0x01 | min_angle | max_angle | min_pulse_high | min_pulse_low | max_pulse_high | max_pulse_low ] Также думаю можно будет сохранять первую инициализацию в eeprom, и при следующем включении, если не задана повторно команда то загружать последние значения из eeprom. И допустим можно будет написать загрузчик, который будет ждать команд инициализации в течение 1 сек, далее нельзя будет их применить, только сбросив контроллер или както так.
blindman писал(а):1. Установить длительность импульса i-й сервы
Да, естественно. К примеру можно так
[ cmd | length | servo_num | servo_pulse | ... ], где length( 1 байт ) количество серво для которых меняем длительность, servo_pulse 2 байта
blindman писал(а):5. Установить положение i-й сервы в градусах
[ cmd | length | servo_num | servo_angle | ... ], где servo_angle 1 байт
blindman писал(а):2. Установить длительность импульса для центрального положения i-й сервы
3. Установить длительность импульса для положения i-й сервы -90°
4. Установить длительность импульса для положения i-й сервы +90°
Да, объединяем в одну, соответсвтенно это есть команда инициализации приведенная выше.
blindman писал(а):6. Перейти к определенному положению i-й сервы за N секунд
Можно также предусмотреть команды для одновременного управления несколькими сервами. Например, переместить серву 1 в -65°, серву 2 в 28°, серву 3 в 90°, при этом весь маневр должен занять 1.5 секунды
Тут нада подумать.
И насчет углов, типа servo_angle, как задавать то? Либо мы учитывает -45° +45° либо сразу говорим от 0 до 90