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

1185
1185

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


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

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

1018
1018

Первая программа является модернизацией старой программы. Изменения коснулись практически только внешнего вида. Как и ранее, программирование велось в среде разработки 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

195

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

Gambas

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

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




1235
1235

14 декабря 2012 Г.

194
1163
1163

iXBT TV

  • Обзор продвинутых сетевых накопителей QNAP D2 Pro и D4 Pro

  • Обзор воздухоочистителя и тепловентилятора Dyson Pure Hot+Cool

  • Обзор корпуса Thermaltake View 71 TG RGB со стеклянными стенками

  • Обзор роликового массажера Gochu HPM-600 с инфракрасным прогревом

  • Обзор робота-пылесоса iBoto Easy Home X410

  • Настоящий титан, машинное обучение для камеры, «игровой Оскар» 2017

  • Обзор струйного МФУ Canon Maxify MB5440 с широкими возможностями для небольшого офиса

  • Обзор рожковой кофеварки Kitfort KT-703 с полуавтоматическим приготовлением капучино и латте

  • Обзор видеорегистратора с радар-детектором и GPS-модулем Slimtec Phantom A7

  • Взлом macOS, покемоны-вредители, сверхскоростной стандарт HDMI 2.1

  • Выбор системы хранения данных бюджетного игрового компьютера: HDD/SSD/Optane Memory

  • Обзор беззеркальной камеры Sony α6500 премиального класса с сенсором APS-C

1359
1359
997