TTP223: подключение к ESP32 и Arduino

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

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

Как работает

Микросхема TTP223 измеряет ёмкость площадки. Палец увеличивает её, и микросхема выставляет уровень на выходе OUT. Поскольку касание не требует механического хода, кнопку можно спрятать за пластиковой панелью.

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

Выводы

ВыводНазначение
OUTцифровой выход: высокий уровень при касании
VCCпитание, 3,3 или 5 В
GNDобщий провод

Подключение к ESP32

TTP223ESP32
OUTGPIO27
VCC3V3
GNDGND

Схема из примера «Сенсорная кнопка TTP223: коснулся — переключил».

Сенсорная кнопка TTP223: коснулся — переключил

Открыть пример целиком
Код скетча
// Сенсорная кнопка: одно касание — одно переключение.
//
// Пока палец на площадке, выход TTP223 высокий. Если переключать свет
// по самому уровню, он замигает на всё время касания, поэтому ловим
// момент касания: низкий уровень сменился высоким.
//
// Нажмите и держите площадку на детали.

const int TOUCH_PIN = 27;
const int LED = 2;

bool wasTouched = false;
bool lit = false;

void setup() {
  Serial.begin(115200);
  pinMode(TOUCH_PIN, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  bool touched = digitalRead(TOUCH_PIN) == HIGH;

  if (touched && !wasTouched) {
    lit = !lit;
    digitalWrite(LED, lit);
    Serial.println(lit ? "касание — включено" : "касание — выключено");
  }
  wasTouched = touched;
  delay(10);
}

Подключение к Arduino Uno

TTP223Arduino Uno
OUTD2
VCC5V
GNDGND

Схема из примера «Arduino Uno: сенсорная кнопка TTP223».

Arduino Uno: сенсорная кнопка TTP223

Открыть пример целиком
Код скетча
// Сенсорная кнопка: одно касание — одно переключение.
//
// Если переключать свет по самому уровню, он будет мигать всё время
// касания. Поэтому ловим момент касания: LOW сменился на HIGH.

const int TOUCH_PIN = 2;
const int LED = 8;

bool wasTouched = false;
bool lit = false;

void setup() {
  Serial.begin(9600);
  pinMode(TOUCH_PIN, INPUT);
  pinMode(LED, OUTPUT);
}

void loop() {
  bool touched = digitalRead(TOUCH_PIN) == HIGH;

  if (touched && !wasTouched) {
    lit = !lit;
    digitalWrite(LED, lit);
    Serial.println(lit ? "касание — включено" : "касание — выключено");
  }
  wasTouched = touched;
  delay(10);
}

В железе

Модуль калибруется при включении: во время подачи питания площадки не касайтесь, иначе «нормой» запомнится касание. Выход держит уровень питания модуля, поэтому с ESP32 его питают от 3,3 В.

Частые ошибки

Другие детали