Микросхема TTP223 измеряет ёмкость площадки. Палец увеличивает её, и микросхема выставляет уровень на выходе OUT. Поскольку касание не требует механического хода, кнопку можно спрятать за пластиковой панелью.
Перемычки на плате меняют режим: выход может оставаться высоким, пока палец на площадке, или переключаться при каждом касании (триггер); уровень может быть активным высоким или низким. По умолчанию — высокий уровень, пока площадка нажата.
// Сенсорная кнопка: одно касание — одно переключение.
//
// Пока палец на площадке, выход 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);
}
// Сенсорная кнопка: одно касание — одно переключение.
//
// Если переключать свет по самому уровню, он будет мигать всё время
// касания. Поэтому ловим момент касания: 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 В.
Частые ошибки
Касание площадки в момент включения: датчик калибруется по нему и потом реагирует вяло или инвертированно.
Не замечена перемычка режима: модуль работает как переключатель, а скетч ждёт удержания (или наоборот).
Питание модуля 5 В на ESP32: выход тоже 5 В, больше допустимого для входа.
Толстая панель или металл над площадкой: чувствительность падает, датчик перестаёт замечать палец.