Мы продолжаем нашу амбициозную программу «Hello, World!» на плате разработки Atmel SAMD21 Xplained, начатой в первая часть , в котором описана работа с Wi-Fi модулем WINC1500. Сегодня мы продемонстрируем пример обработки сенсорных кнопок и слайдера с помощью библиотеки Q-touch. В третьей части серии, как и было обещано, данные с этих датчиков будут «упакованы» в пакет ModBus TCP и переданы по Wi-Fi в систему управления освещением нашего офиса.
Для начала давайте разберемся, что это за Q-touch. Это реализация Atmel технологии обработки сенсорных резистивных кнопок и ползунков, сопровождаемая библиотекой для упрощения работы с ними.
Более того, все микроконтроллеры SAMD реализуют аппаратный контроллер Q-touch (так называемый периферийный сенсорный контроллер (PTC)).
Это позволяет как минимизировать количество используемых выводов микроконтроллера, так и нагрузку на вычислительное ядро.
В качестве датчиков будем использовать модуль расширения ATQT1-XPRO , который, как говорилось в предыдущей статье, можно установить на любую макетную плату из серии Xplained Pro. Технология Qtouch поддерживает следующие типы датчиков: кнопки, ползунки, роторы и датчики приближения.
Технологии Qtouch и QMatrix
QTouch основан на измерении собственной емкости, а QMatrix — на измерении совместной.Измерение собственной емкости включает зарядку чувствительного электрода неизвестной емкости до известного потенциала.
Полученный заряд передается в измерительную цепь.
Используя циклы зарядки и передачи, можно измерить емкость чувствительной пластины.
Измерение с использованием совместной емкости проводится с помощью двух электродов.
Один из электродов выполняет роль эмиттера, на который поступает заряд, который передается логическими импульсами в последовательном (пакетном) режиме.
Второй электрод выполняет роль приемника, который сообщается с излучателем через диэлектрик, из которого изготовлена сенсорная панель.
Когда палец касается панели, поле сустава уменьшается и прикосновение распознается.
Qtouch | QMatrix |
---|---|
Собственные мощности | Общая емкость |
Надежная и простая конструкция электродов | Четко определенная зона обнаружения давления |
Идеально подходит для небольшого количества датчиков | Идеально подходит для большого количества датчиков (более 10) |
Хорошее обнаружение близости на больших расстояниях | Хорошо адаптирован к влажности и окружающей среде.
|
Теоретически возможна любая форма электрода.
|
Пассивное отслеживание – возможны более длинные пути |
Легко настроить чувствительность | Хорошо адаптирован к шуму и шуму земли.
|
Схема работы всей системы представлена на рисунке ниже.
Создать проект
Для освоения новой периферии очень удобно использовать примеры проектов.А для QTouch есть еще специальный плагин QTouch Composer, который делает разработку визуальной.
Но если вам нужно интегрировать сенсорные кнопки в существующий проект, вам необходимо понимать всю последовательность действий и настроек.
Теперь давайте сделаем это.
Общая схема работы библиотеки представлена на структурной схеме:
Добавляем его в проект с помощью мастера PTC и RTC.
Конфигурация настраивается в файле touch_config_samd.h. Пройдемся по основным параметрам.
Для начала нужно выбрать способ обнаружения касаний: своя емкость или общая.
Выбор осуществляется установкой значений соответствующих констант.
Приоритет прерываний от ПТК-контроллера о завершении преобразования может иметь значения от 0 до 3 (0 — высший приоритет).#define DEF_TOUCH_MUTLCAP (1u) #define DEF_TOUCH_SELFCAP (0u)
И установил с помощью define: #define DEF_TOUCH_PTC_ISR_LVL (1u)
Как уже говорилось выше, для обнаружения касания по общей емкости необходимы две линии: X и Y. У samd21 имеется 16 линий X и Y. В этом случае (при помощи отладки с платой расширения) у нас нет выбора, какая из них пара линий идет к тому, какая кнопка/ползунок/запускает ротор.
Порядок указания пар контактов определяет номера каналов.
Для ротора/слайдера обязательно используйте одну и ту же линию Y для всех каналов.
Линии задаются с использованием соответствующего определения: #define DEF_MUTLCAP_NODES X(8), Y(10), X(9), Y(10), X(2), Y(12), X(3), Y(12), \
Теги: #Atmel #samd21 #cortex-m0 #cortex-m0 #arm #Q-touch #Программирование микроконтроллеров #Разработка для Интернета вещей
-
Конкурс Api Стриминга Вконтакте
19 Oct, 24 -
Российские Инвесторы И Стартапы В Твиттере
19 Oct, 24 -
Система Частиц В Моделировании Толпы (3)
19 Oct, 24 -
Как Произносится Нфс:
19 Oct, 24