Освой Arduino играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

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

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

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

Существует различные варианты сенсорных кнопок от разных производителей.

TTP223B Arduino Digital Touch Sensor

TTP223B

Кнопка имеет три вывода. Один подключаем к цифровому пину платы, остальные к питанию и земле.


TTP223B | Arduino 
-----------------
    SIG | D 
    VCC | 5V 
    GND | GND

Скетч стандартный как для обычных кнопок.


const int buttonPin = 2; // порта платы для сигнал-порта кнопки

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); // встроенный светодиод на плате
  pinMode(buttonPin, INPUT); // открываем порт для считывания прикосновений кнопки
}

void loop() {
  int buttonState = digitalRead(buttonPin); // считываем статус кнопки (нажата/не нажата)
  if (buttonState) { // Если кнопка нажата...
    digitalWrite(LED_BUILTIN, HIGH); // включаем встроенный светодиод
  } else { // Иначе...
    digitalWrite(LED_BUILTIN, LOW); // выключаем светодиод
  }
}

Купить сенсорную кнопку TTP223B на AliExpress

Реклама