Фотокубики-2012

Программы для пультов дистанционного управления


Продолжаю сериал 2012 года. В предыдущей статье описана схема дополнительного модуля для конструктора Arduino и программа управления моторами на микросхемах L-298 и общения с камерой Casio с помощью последовательного протокола для спуска затвора и изменения фокусного расстояния объектива. В данном материале рассматривается программное обеспечение для устройств, выступающих в роли пультов дистанционного управления установкой для съемки панорам. Чтобы передавать команды, устройство должно либо иметь встроенный передатчик Bluetooth, либо поддерживать возможность его подключить, например, через USB. У меня таковыми оказались ноутбук Dell Vostro, настольный компьютер с внешним USB-Bluetooth и коммуникатор HTC Desire HD. Идеология управления крайне простая. Устройство Bluetooth используется как последовательный порт. Все команды представляют собой символьные переменные, начинающиеся с буквы латинского алфавита передаваемого числа. Передаваемые установке данные начинаются с маленькой буквы, а принимаемые — с большой. Перед символьной переменной передается служебный символ ASCII с десятеричным кодом 27, а после — с кодом 19. Этот способ записи команд взят из проекта Amarino и сохранен для преемственности с программой, описанной в статье «Управление съемкой с помощью телефона». Все мои программы, описанные в этой статье, распространяются под лицензией, совпадающей с русским переводом General Public License GNU (о причинах подобного лицензирования я подробно писал здесь).

Программы для устройств под управлением ОС Android

Первая программа является модернизацией старой программы. Изменения коснулись практически только внешнего вида. Как и ранее, программирование велось в среде разработки Eclipse с установленным пакетом Android SDK Tools. Причем именно в той среде, что была и два года назад. Оболочка Eclipse и ее модуль Android SDK Tools за последнее время обновились, а используемая библиотека AmarinoLibrary_v0_55.jar нет. В результате для модернизации программы мне пришлось искусственным образом откатиться с 20 версии на 14 для Android SDK Tools.

SDK

В результате получилась следующая программа PanAm_0.6. Архив с исходным кодом проекта можно скачать здесь.

Android
Так она выглядит на виртуальном устройстве

Android
А так — на коммуникаторе

Кнопка «Круг» запускает съемку круговой панорамы камерой Sony NEX-5. Если галочка в графе «Конвертер» отсутствует, то предполагается, что установлен объектив с фокусным расстоянием 16 мм, и при нажатии кнопки телефон передает команду: начать съемку панорамы в 3 ряда по 10 кадров в каждом. При наличии галочки производится съемка объективом с конвертером в два ряда по пять кадров в каждом. В процессе съемки установка передает телефону информацию о положении камеры, которое отображается телефоном. Слева горизонтальный угол в градусах, справа — вертикальный. Кнопки «Лево» и «Право» передают команду повернуть камеру на угол, указанный в текстовом поле, расположенном между ними. Аналогичные функции и у кнопок «Верх» и «Низ». Текстовые поля «Число шагов» задают, сколько раз камера будет повернута при съемке частичной панорамы, запускаемой кнопкой «Панорама» в правом верхнем углу. Левое поле задает число шагов по горизонтали, а правое — по вертикали.

В вертикальной плоскости возможны следующие значения для числа шагов:

  • 0 — происходит съемка одного ряда, камера не поворачивается по вертикали.
  • 1 — камера поворачивается на пол заданного угла вниз, и происходит съемка первого ряда, затем камера поворачивается на заданный угол и происходит съемка ряда в обратном направлении. По завершении камера возвращается в исходное положение.
  • 3 — камера поворачивается вниз на полтора заданных угла и снимает первый ряд, поворачивается вверх и снимает второй ряд в обратном направлении. Поворачивается вверх и снимает третий ряд в прямом направлении. Поворачивается еще раз вверх и снимает четвертый ряд в обратном направлении.

Поле «Задержка» задает временной промежуток между окончанием движения и спуском затвора. Поле «Пауза» задает время после спуска затвора до начала движения. Кнопка «Затвор» передает команду на съемку с заданной задержкой и паузой. Кнопки «W» и «T» управляют изменением фокусного расстояния камеры Casio QV-4000.

Программа очень простая, и основные сложности не в ее написании, а в установке среды разработки. Поэтому я предпринял попытку реализации управления минимальными средствами. Следующая программа может быть написана прямо на телефоне. Для этого необходимо только установить на него De Re Basic!, являющийся диалектом Darmouth Basic образца 1963 года. Эту программу, распространяемую под лицензией GNU GPL v3, написал Paul Laughton. Далее набираем текст программы и запускаем его на исполнение. Кодировка комментариев в программе — UTF-8. Процесс написания можно ускорить, если воспользоваться примером f35_bluetooth.bas, поставляемым в комплекте. Готовой программе можно присвоить значок на рабочем столе, что позволит запускать ее одним движением.

BASIC!
BASIC!
Пишем программу
Запускаем и нажимаем на строку Connect to listener
BASIC!
фото
Выбираем устройство
Управляем камерой

Программа на Бейсике выглядит более аскетично, но чувствительные к нажатию строки позволяют управлять установкой не менее эффективно, чем графический интерфейс. Можно написать и более красивую программу, используя графический режим в Basic, но комфортной подобную работу уже назвать будет трудно :-)

Работоспособность программ проверена на коммуникаторе HTC Desire HD под управлением ОС Android 2.3.5 LeeDrOiD_HD_V5.1.1_GB.

Программа для компьютеров под управлением ОС Linux

Персональные компьютеры поддерживают программирование на множестве языков, и столь простую программу, как нам нужна, можно написать на многих из них. Нижеприведенный пример написан на языке Gambas, который похож на Visual Basic, но не является его клоном. Тем не менее, любители Windows, полагаю, смогут без особых проблем написать по аналогии программу на Visual Basic. Архив с исходным кодом проекта можно скачать здесь.

Gambas

Интерфейс программы очень близок к тому, что был реализован на Android SDK Tools. Однако поскольку места на экране компьютера много и мышью попасть на маленькие кнопки легче, чем пальцем, то он был немного дополнен. Добавлена строка ввода команд. Это сделано на случай, если программа для Arduino будет изменена и возникнет необходимость отдавать редко используемые команды, не создавая для них кнопок. Для этих же целей, а также для удобства отладки выводятся и ответы Arduino, передаваемые компьютеру. Кроме того, добавлена возможность изменять временной интервал, на который включаются моторы, управляющие изменением фокусного расстояния камеры Casio. При 100 мс весь диапазон фокусных расстояний от 7 до 21 мм может быть пройден за 15 нажатий кнопки изменения фокусного расстояния.

Работоспособность программы проверена на настольном компьютере под управлением ОС Slackware 13.37 и на ноутбуке под управлением ОС Slackware 14.




Дополнительно

ВИКТОРИНА TT

Материнские платы какого форм-фактора можно устанавливать в корпус Thermaltake Versa C22 RGB Snow Edition?

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.