Сенсорные кнопки в Ардуино

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

Сенсорная кнопка

Сенсорные кнопки в АрдуиноНи для кого не секрет, что прогресс не стоит на месте. Постоянно появляются новые технологии, совершенствуются старые. Сенсорные экраны появились совсем недавно (по меркам человечества), но уже прочно вошли в нашу повседневную жизнь. Телефоны, телевизоры, терминалы и прочие в большинстве своём используют «беcкнопочные» технологии. В кавычках это слово по той причине, что они всё-таки используют кнопки, только сенсорные. О них в данной статье как раз и пойдёт речь, а если точнее, о Touch module для Arduino.

Принцип работы сенсорных кнопок

Модули с сенсорными кнопками в большинстве своём используют проекционно-ёмкостные сенсорные экраны (https://ru.wikipedia.org/wiki/Сенсорный_экран). Если не вдаваться в пространственные объяснения их работы, для регистрации нажатия используется вычисление изменения ёмкости конденсатора (электрической цепи), при этом важной особенностью является возможность выставлять различную начальную ёмкость, в чём мы убедимся далее.

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

Сенсорные или механические кнопки

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

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

+     Стабильное функционирование, которое выражается отсутствием подвижных частей и частой калибровкой (о чём будет сказано ниже). Вам не придется беспокоиться о дребезге кнопок, возникающем при использовании механического собрата, что существенно облегчит жизнь начинающему ардуинщику. Поэтому ещё один плюс, пусть и не для всех – простота при работе.

Из минусов можно отметить следущее:

  • Сенсорные кнопки плохо работают при минусовых температурах, поэтому они непригодны для использования за пределами помещений.
  • Высокое потребление электричества, вызванное необходимостью постоянно поддерживать одинаковую ёмкость.
  • Сенсорная кнопка не работает при нажатии её рукой в перчатке либо плохо проводящим электричество объектом

Сенсорные кнопки в Ардуино

 

Обзор сенсорных кнопок

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

1. Troyka touch sensor

Время отклика: 80мс (в режиме энергопотребления) и 10мс (в высокоскоростном режиме)

Максимальная толщина диэлектрика для нормальной работы: 4 мм

Размер: 25Х25 мм

Напряжение питания: 3–5 В

Цена: 390 рублей

Тройка

 

2. Grove Touch Sensor

Время отклика: 220 мс и 80 мс

Максимальная толщина диэлектрика для нормальной работы: 2 мм

Размер: 20Х20 мм

Напряжение питания: 2–5 В

Цена: 229 рублей

Grove Touch Sensor

 

3. TTP223B Arduino Digital Touch Sensor

Время отклика: 220 мс и 60 мс

Размер: 24Х24 мм

Напряжение питания: 2–5 В

Цена: 150 рублей

TTP223B Arduino Digital Touch Sensor

 

4. Keyestudio touch module

Размер: 30Х20 мм

Напряжение питания: 3.3–5 В

Цена: 270 рублей

Keyestudio touch module

Подключение сенсорной кнопки к Ардуино

Для использования сенсорной кнопки, как, впрочем, и всех остальных модулей и датчиков, её необходимо подключить к какой-либо плате arduino. В большинстве случаев используются стандартные модули с тремя контактами: питание, сигнал и земля. Их расположения от модели к модели меняются,  на схеме они отображены согласно недавнему перечислению (сенсорная кнопка заменена переключателем по причине её отсутствии в Tincercad):

Сенсорные кнопки в Ардуино

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

Сенсорный модуль, по своей сути аналогичен цифровой кнопке. Пока кнопка нажата, датчик отдаёт логическую единицу, а если нет, то логический ноль.

Проекты с использованием сенсорной кнопки

Начнём с простого: при нажатии на кнопку загорается встроенный светодиод.


const int buttonPin = 7; // Выставляем значения порта, подсоединённого с сигнал-портом кнопки

void setup() {

pinMode(LED_BUILTIN, OUTPUT); // Команда для адекватного реагирования светодиода

pinMode(buttonPin, INPUT); // Открываем порт для считывания

}


void loop() {

buttonState = digitalRead(buttonPin); // Считываем статус кнопки (нажата / не нажата)

if (digitalRead(buttonPin)) { // Если кнопка нажата...

digitalWrite(LED_BUILTIN, HIGH); // Подаём напряжение на LED_BUILTIN - значение для встроенного светодиода

} else { // Иначе...

digitalWrite(LED_BUILTIN, LOW); // Не подаём напряжение

}

}

Теперь усложним задачу: Нажатием на кнопку изменяется режим работы светодиода.

const int buttonPin = 7; // Выставляем значения порта, подсоединённого с сигнал-портом кнопки

int count = 0; // Переменная, предназначенная для выбора режима работы


void setup() {

pinMode(LED_BUILTIN, OUTPUT); // Команда для адекватного реагирования светодиода

pinMode(buttonPin, INPUT); // Открываем порт для считывания

}

void loop() {

if(digitalRead(buttonPin)){ // При нажатии кнопки...

count = count + 1; // Изменяем режим кнопки

if(count > 2){ //В случае превышения значения count начинаем отсчет сначала

count = 0;

}

while(digitalRead(buttonPin)){ // Пустой цикл для ожидания, пока пользователь отпустит кнопку

}

}

if(count == 0) { // 3 режима по переключению кнопки:

digitalWrite(LED_BUILTIN, LOW); // 1: Выключенный светодиод

} else if(count == 1) {

digitalWrite(LED_BUILTIN, HIGH); // 2: Включенный

} else {

digitalWrite(LED_BUILTIN, HIGH); // 3: Мигающий

delay(100);

digitalWrite(LED_BUILTIN, LOW);

delay(100);

}

}

Заключение

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

ПОДЕЛИТЬСЯ

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here