2 заметки с тегом

элементы управления

Обретение формы

27 июня 2013, 1:02

Пока разные детали приходили из интернет-магазинов проект жил в виде зародыша на картонке: двухсторонний скотч, картонка, простейшая макетная плата. На макетной плате сменяя друг-друга отлаживались компоненты и блоки кода:

  • Сегментный дисплей
  • Звук
  • Кнопки
  • Энкодер
  • Символьный дисплей в связке с конвертером I2C-сигнала в параллельный

Теперь пришел черед объединить эти наработки под одной оболочкой. Для этого сначала надо разработать интерфейс прототипа, расположение и назначение элементов. При разработке интерфейса я учел тот факт, что у устройства могут быть пользователи у которых основная рука — левая, или, скажем, он просто расположен слева или справа на рабочем месте печатника. Исходя из этого образовалось симметричное расположение элементов управления, назначение которых можно варьировать исходя из собственных вкусов.

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

Устранение дребезжания энкодера

19 июня 2013, 5:03

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

Мои требования были лаконичными:

  • Никаких ложных срабатываний, полная предсказуемость поведения
  • Обновлять состояние по внешним прерываниям, не использовать для этого таймеры
  • Не использовать никакие временные задержки и усреднения (за исключением схемотехнических)

Внимательно изучив спецификацию по энкодеру, принцип его работы — я придумал способ, которого пока не встетил: считывание паттерна. Вкратце, для того чтобы защитать вращение энкодера в ту или иную сторону — необходимо получить строго определенную последовательность сигналов. Причем алгоритм, получая одну из комбинаций, сразу определяет направление и предполагает появление последующих элементов паттерна. И это работает железобетонно: пользователь может натренировав руку попадать в нужное ему значение отточенным движением руки. Profit!