Эксперименты с Android. Приложение 6

Читать все новости

В предыдущих статьях цикла рассказывалось о том, как организовать связь через канал Bluetooth между двумя удаленными планшетами. Один из планшетов можно заменить устройством, содержа­щим МК и Bluetooth-модуль. Передача в МК управ­ляющих команд от планшета предъявляет специфи­ческие требования к интерфейсу управления. Базой для этого служит сенсорный экран и датчики ориен­тации. Про их особенности пойдет речь дальше.

Сенсорный экран и датчики ориентации

Сенсорное управление в бытовой технике из­вестно давно. К примеру, в цветные телевизоры семейства УЛПЦТ моделей 712, 718 были встрое­ны блоки СВП-3, которые имели сенсорные кнопки, реагирующие на прикосновение пальца человека. Подобный принцип управления реализовывался и в некоторых регуляторах яркости для сетевых ламп накаливания 220 В.

Однако эти и другие устройства не получили широкого распространения, ввиду низкой помехо­устойчивости, сложности подбора порогов чувстви­тельности и отсутствия тактильной обратной связи.

Следующим этапом стал «шаг назад» — вме­сто сенсорного стали применять псевдосенсорное управление на основе легко нажимающихся кнопок и гибких пленочных клавиатур. Но затем последова­ли «два шага вперед» — технология достигла такого уровня, который позволил массово создавать де­шевые сенсорные экраны.

С точки зрения теории управления, сенсорный экран можно представить в виде матрицы еди­ничных датчиков. Имеется в виду прямоугольник с Х-датчиками по длине и Y-датчиками по ширине. Итого, каждая точка на экране может быть описана двумя координатами X и Y. Аналогия — игра «мор­ской бой» или шахматная нотация.

Датчики пространственной ориентации, встроен­ные в планшеты и мобильные телефоны, позволяют к двум координатам X, Y добавить еще и значение условной высоты Z. Итого, управление из плоскости переходит в объем.

Постановка задачи

Предположим, имеется планшет и удаленное устройство, содержащее МК с Bluetooth-модулем. Требуется передать управляющие команды (числа) из планшета в МК для последующего выполнения определенных действий. Числа могут быть одинар­ные, двойные или тройные в зависимости от задан­ного закона управления, соответственно, линейно­го, на плоскости или в трехмерном пространстве.

Команды будут формироваться по принципу джойстика. Владельцы игровых приставок хорошо знакомы с механическими и оптико-механическими джойстиками («joy» — радость, «stick» — палка).

Здесь же будут рассматриваться сенсорные, про­странственные и голосовые джойстики, причем в исполнении от 1D до 3D.

Программа в планшете должна перевести дви­жения джойстика в числовую форму. Полученные числа координат передаются на удаленную сторо­ну через канал Bluetooth и используются в МК для реализации поставленных задач — от включения на­стольной лампы до управления роботом.

1D-джойстики

«1D» расшифровывается, как «одно направле­ние» (1-Dimension). В простейшем случае это ли­нейный ползунок, каждому положению которого соответствует определенное число, монотонно уве­личивающееся от значения MIN до значения МАХ.

В андроидных приложениях существует стан­дартный компонент «слайдер» (Slider). На экране планшета он выглядит длинной полоской с марке­ром положения. Передвигается маркер пальцем, то есть получается управление как в ползунковом регуляторе громкости или в эквалайзере тембра. Каждое положение слайдера в пространстве харак­теризуется одним единственным числом.

Аналоговый слайдер легко превратить в дискрет­ный. Например, длинную полоску разбить на мно­жество отдельных сенсоров и разместить их на по­верхности слева направо или сверху вниз. Теперь, последовательно прикасаясь к каждому единичному сенсору, можно получить монотонно изменяющийся ряд чисел. Классический пример дискретного слай­дера — клавиатура электронного пианино.

Но можно пойти еще дальше и вместо располо­жения датчиков «в одну шеренгу» выбрать конфи­гурацию «крестовина» по образцу механического джойстика с 5 кнопками (рис.38): «Вверх—Вниз—Вправо—Влево—Пуск». Каждой кнопке присваива­ется свое число, например, от 1 до 5. При замыкании контактов это число передается на противополож­ную сторону в виде команды.

Рис. 38

Рис. 38

Не суть важно, что физически кнопки размеща­ются не по прямой линии. Главное, чтобы соблю­дался принцип: «Одно положение (команда, состо­яние, режим) — одно передаваемое число».

К категории 1 D-джойстиков можно также отне­сти так называемые «голосовые джойстики». Чело­век говорит в микрофон планшета числительное, программа отправляет интернет-запрос в службу «Google Speech recognizer» и мгновенно получает расшифровку ответа в виде конкретного числа.

В программе «JoystickID» (рис.38, 39) пред­ставлены все три модификации 1 D-управления: в верхней части — сенсорные кнопки крестовины, посередине — ползунковый регулятор слайдера (Sliderl, MinValue«6», MaxValue«106»), внизу —го­лосовой джойстик SpeechRecognizerl.

Рис. 39

Рис. 39

Искомые числа высвечиваются вверху экрана в титуле приложения: 1 — нажатие кнопки «Вверх», 2 — кнопки «Влево», 3 — «Вправо», 4 — «Вниз», 5 — «Пуск», 6... 106 — движение ползунка слева на­право, любое число — голосом.

Полученные числа могут быть отправлены в МК через канал Bluetooth по рассмотренным ранее методикам (РА2-4, 9/2015). Это предлагается сде­лать самостоятельно, на свой вкус, поскольку зна­ний уже накоплено достаточно.

1,5D-джойстики

Судя из названия, к таким джойстикам долж­ны относиться устройства, совмещающие в себе свойства 1D- и 20-джойстиков, то есть уметь ге­нерировать линейный ряд одиночных чисел, но ис­пользовать пространственную технологию пере­мещения по плоскости.

40

Рис. 40

В программе «Joystick 1_5D» (рис.40) показан вариант управления при помощи сенсорных же­стов. Для нажатия кнопок условного джойстика ис­пользуются короткие «мазки» пальцем по экрану на расстояние примерно 1...2 см. Здесь можно про­вести аналогию с пролистыванием фотографий в альбоме планшета.

Отвечает за пролистывание компонент Canvasl, он же «Холст». В его свойствах можно указать путь к файлу фоновой картинки Backgroundlmage с мас­штабированием Height/Width «Fill parent».

Холст в программе размещается вверху экра­на, там где изображается фоновый рисунок в виде кнопки «Пуск». Если коротко махнуть пальцем по холсту сверху вниз, то в титуле приложения вы­светится слово «Вниз» (может быть любое другое слово или цифра, что задается в программе). Если провести пальцем снизу вверх, то появится слово «Вверх», слева направо — «Вправо», справа нале­во — «Влево», одиночный удар — «Пуск». Примеча­тельно, что делать указанные действия можно под разными углами, включая диагональ, и в любой ча­сти экрана.

2D-джойстики

Управление в двух плоскостях хорошо известно владельцам ноутбуков, имеющих сенсорный тач­пад. Пальцем на тачпаде можно нарисовать любую по сложности геометрическую фигуру. Каждой точ­ке рисунка будет соответствовать не одно число, а пара из двух чисел — координата по оси X и коор­дината по оси Y. Чем не сенсорный 20-джойстик с управлением по поверхности?

Задача программиста сводится к оцифровке по­лучающегося рисунка, для чего в среде AI2 имеются готовые компоненты. В частности, «DrawingCanvas. Dragged» автоматически вычисляет координаты текущей и предыдущей точки рисуемой линии, а компонент «DrawingCanvas.Touched» возвращает координаты точки удара по экрану.

В программе «Joystick2D» (рис.41) результат работы высвечивается в верхней строке контейне­ра отдельно для X и для Y. Нажатие на кнопку «Пуск» имитируется коротким ударом по сенсорному полю (touch-событие), при этом появляются сверхболь­шие координаты Х=999 и Y=999.

Рис. 41

Рис. 41

Цветфона и рисунка компонента «DravingCanvas» специально выбраны одинаковыми, поэтому следов от вождения пальцем по экрану видно не будет. Из замеченных особенностей компонента — оцифров­ка координат начинается не в точке прикосновения, а через расстояние при мерно 1... 2 см. Дальше .пока палец прижат к экрану, задержек не наблюдается.

3D-джойстики

В реальном мире человек постоянно сталкива­ется с трехмерными событиями. Каждая точка в объеме характеризуется вычислением трех чисел, отвечающих за положение объекта по осям X, Y, Z.

Сенсорный экран планшета здесь не поможет, нужны датчики ориентации. Наиболее известные из них — гироскоп, акселерометр и цифровой компас. Вереде AI2 поддерживаются первые два из них. Эти датчики иногда путают друг с другом за схожесть.

Акселерометр, он же G-сенсор, — это прибор для измерения ускорения (перегрузки). В планше­те применяется трехосевой акселерометр, который вычисляет три вектора силы гравитации: Ах, Ay, Az. С его помощью можно узнать, какая часть корпуса планшета, образно говоря, больше всего «смотрит вниз», к Земле. К примеру, на горизонтальной по­верхности в режиме покоя: Ах=Ау=0, Az=9,8g.

Гироскоп, он же гиродатчик, измеряет угловую скорость по азимуту, тангажу и крену. В отличие от акселерометра, он служит не только для опреде­ления ориентации устройства в пространстве, но и отслеживает его перемещение. Например, при по­вороте планшета на какой-либо угол на ровной по­верхности акселерометр не изменит своих показа­ний, а в гироскопе станет другим азимут.

Считается, что гироскоп и акселерометр допол­няют друг друга. Теоретически это должно повы­сить точность вычисления координат. Правда, если обратиться к программе «Joystick3D» (рис.42), то видно, что совместная работа гироскопа и акселерометра немного замедляет скорость смены пока заний на экране. Поэтому придется выбирать меж ду высокой скоростью или высокой точностью.

Рис. 42

Рис. 42

В программе отображаются 8 строк Label 1...8 с числами на месте комментариев. Три верхние строки относятся к гироскопу, три нижние — к ак­селерометру. Посередине размещаются строки «Magnitude» (это не магнитный компас!) и «Angle», которые являются производными от показаний ги­роскопа. Использовать для работы лучше те группы цифр, которые более стабильные во времени.

В глобальных свойствах приложения «Joystick3D» жестко задан портретный (вертикальный) режим ориентации экрана, иначе при повороте планшета на 90 градусов происходит смена изображения, и показания датчиков сбиваются.

Точность составляет 5 знаков после запятой. Но, как говорил Козьма Прутков: «Не верь глазам сво­им!» — последние цифры непредсказуемо «гуляют» во времени, даже при неподвижном планшете.

Вывод — для получения точного позиционирова­ния нужна математическая обработка результатов.

Автор: Сергей Рюмик, г. Чернигов
Источник: журнал Радиоаматор №10, 2015

Возможно, Вам это будет интересно:

Постоянная ссылка на это сообщение: http://meandr.org/archives/29173

Добавить комментарий