Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Делаем управление поворотной платформой со смартфона.


В прошлом письме было рассказано, как можно управлять сервомотором с экрана смартфона. Ползунками удобно работать, если требуется обеспечить движение вдоль одной оси. А что делать, если осей две, например, в случае управления камерой наблюдения? В этом случае гораздо удобнее становится интерфейс с джойстиком. Чтобы его реализовать на экране смартфона, можно использовать одну из готовых библиотек, например из проекта com.MobileAnarchy.Android.Widgets.Joystick.

Вот что получилось, смотрите видео.

Для начала надо воспользоваться программой IOIO6xServoArm для проверки работы механики платформы. (В этой программе повторен код из предыдущей рассылки, только добавлено отображение текущей ширины импульса и возможность одновременного управления шестью сервомоторами.) Задача – проконтролировать, что при любой ширине импульсов сервомотор работает нормально. В моем случае пришлось ограничить ширину импульсов пределами 800-2100 мкс.

Теперь собственно работа с программным джойстиком. Его реализация подсмотрена в посвященном IOIO проекте mitchtech, пришлось только немного доработать неподдерживаемые в текущей библиотеке IOIO классы и добавить максимальные и минимальные ограничения для сервомоторов.

У джойстика есть событие OnMoved, вызываемое при каждом перемещении, в котором происходит определение переменных tiltDegrees и panDegrees

public void OnMoved(int x, int y) {

if (y >= 0) {

tiltDegrees = y * 50 + 500;

} else {

tiltDegrees = 500 - (Math.abs(y) *50);

}

if (x >= 0) {

panDegrees = x * 50 + 500;

} else {

panDegrees = 500 - (Math.abs(x) *50);

}

}

И в методе loop класса looper происходит управление положением сервомоторов:

public void loop() throws ConnectionLostException {

try {

panPwmOutput.setPulseWidth(check_MinMax(tiltDegrees));

tiltPwmOutput.setPulseWidth(check_MinMax(panDegrees));

Thread.sleep(10);

} catch (InterruptedException e) {

ioio_.disconnect();

} catch (ConnectionLostException e) {

throw e;

}

}

Скомпилированные примеры из сегодняшней рассылки и исходники кода скачать здесь

Установка программ и начало работы с IOIO

Использованное оборудование:

- плата IOIO

- поворотная платформа

Программный джойстик конечно хорошо, но современные телефоны сами могут быть джойстиками ))

Так что в следующем выпуске – используем для управления поворотной платформой встроенный акселерометр.


В избранное