Сенсорная кнопка TTP223 на Arduino: подключение и управление светодиодным кольцом

Сенсорная кнопка TTP223 на Arduino: управление светодиодным кольцом касанием

📅 Дата публикации: 13 мая 2026 ⏱️ Время чтения: ~7 минут

Это третья часть проверки сборки схемы на макетной плате. В данном случае рассмотрим прошивку сенсорной кнопки TTP223, а также совместим работу данной кнопки со светодиодным кольцом из второй части.

📌 Первая часть (телеметрические датчики): Датчики CJMCU BME680 и AHT20+BMP280 на Arduino

📌 Вторая часть (светодиодное кольцо): Светодиодное кольцо CJMCU-2812B на Arduino

1. Обзор сенсорной кнопки TTP223

Распиновка модуля TTP223
Распиновка модуля TTP223
Внешний вид сенсорной кнопки TTP223
Модуль сенсорной кнопки TTP223

Модуль выполнен на микросхеме TTP223-BA6.

Принцип работы: Модуль сенсорной кнопки отслеживает изменение частоты генератора, зависящей от величины емкости внешнего открытого колебательного контура. При этом предусмотрена регулировка чувствительности сенсора за счет дополнительно подключаемого конденсатора, емкостью от 0 пФ до 50 пФ.

📊 Характеристики TTP223

ПараметрЗначение
Напряжение питания2 В — 5,5 В
Максимальное время отклика220 мс
Время готовности после подачи питания0,5 с
Расстояние срабатывания0 — 5 мм
Выход «Q»КМОП, настраивается перемычками
⚙️ Настройка перемычек:
  • Перемычка «A» — устанавливает начальный уровень на выходе (логические 0 или 1)
  • Перемычка «B» — включает/выключает режим фиксации (latch mode)

2. Подключение TTP223 к ESP32-C3

🔌 Таблица подключения

TTP223ESP32-C3 (Zero)
VCC3.3V
GNDGND
I/OGPIO21

3. Пример кода: чтение нажатий

#define TOUCH_PIN 21 bool lastState = false; void setup() { Serial.begin(115200); pinMode(TOUCH_PIN, INPUT); Serial.println("TTP223 тест на ESP32-C3"); } void loop() { // Читаем значение с кнопки int buttonState = digitalRead(TOUCH_PIN); // TTP223 в режиме HIGH (H) -> при касании = HIGH // TTP223 в режиме LOW (L) -> при касании = LOW bool isTouched = (buttonState == HIGH); // Для режима HIGH if (isTouched != lastState) { if (isTouched) { Serial.println("Кнопка НАЖАТА!"); } else { Serial.println("Кнопка ОТПУЩЕНА!"); } lastState = isTouched; } // Выводим текущее значение каждые 500 мс static unsigned long lastPrint = 0; if (millis() - lastPrint > 500) { Serial.print("Значение: "); Serial.println(buttonState); lastPrint = millis(); } delay(50); }
Видео: работа сенсорной кнопки TTP223

4. Совместная работа TTP223 и WS2812B

🔌 Таблица подключения

TTP223ESP32-C3 (Zero)CJMCU-WS2812B-12
VCC3.3V
GNDGNDGND
I/OGPIO21
GPIO2 (через резистор 470 Ом)DI
5VVCC
⚠️ Важно: Светодиодное кольцо питается от 5В, а сенсорная кнопка — от 3.3В. Подключайте их к соответствующим выходам ESP32-C3. Земля (GND) должна быть общей для всех устройств.
Схема подключения TTP223 и светодиодного кольца на макетной плате
Схема подключения TTP223 и светодиодного кольца к ESP32-C3

Установка библиотеки:

  1. Откройте Arduino IDE
  2. Перейдите в меню Скетч → Включить библиотеку → Управление библиотеками
  3. В строке поиска введите Adafruit NeoPixel
  4. Найдите библиотеку Adafruit NeoPixel (автором Adafruit) и нажмите Установить

5. Пример кода: управление светодиодным кольцом касанием

При нажатии на сенсорную кнопку включается бегущая дуга на светодиодном кольце. Повторное нажатие выключает подсветку.

#include <Adafruit_NeoPixel.h> #define LED_PIN 2 #define LED_COUNT 12 #define TOUCH_PIN 21 #define BRIGHTNESS 80 Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); bool effectEnabled = false; bool lastButtonState = false; int position = 0; void setup() { Serial.begin(115200); strip.begin(); strip.setBrightness(BRIGHTNESS); strip.show(); pinMode(TOUCH_PIN, INPUT); } void updateEffect() { strip.clear(); // Дуга из 3 светодиодов for (int i = 0; i < 3; i++) { int ledIndex = (position - i + LED_COUNT) % LED_COUNT; int brightness = BRIGHTNESS * (3 - i) / 3; uint32_t color = strip.ColorHSV((position * 65536 / LED_COUNT + i * 5000) % 65536, 255, brightness); strip.setPixelColor(ledIndex, color); } strip.show(); position = (position + 1) % LED_COUNT; } void turnOffLights() { for (int i = 0; i < LED_COUNT; i++) { strip.setPixelColor(i, strip.Color(0, 0, 0)); } strip.show(); } void loop() { // Читаем кнопку (для режима HIGH) bool buttonPressed = (digitalRead(TOUCH_PIN) == HIGH); // Определяем нажатие (переключение по фронту) if (buttonPressed && !lastButtonState) { effectEnabled = !effectEnabled; if (effectEnabled) { position = 0; // Сбрасываем позицию для плавного старта } else { turnOffLights(); } delay(200); // Антидребезг } lastButtonState = buttonPressed; // Запускаем эффект только если включен if (effectEnabled) { updateEffect(); delay(50); } }
Видео: управление светодиодным кольцом через сенсорную кнопку
✅ Готово! Теперь вы можете управлять светодиодным кольцом с помощью сенсорной кнопки. Нажатие — включение эффекта, повторное нажатие — выключение.
Мы используем cookie-файлы. Это нужно для лучшей работы сайта. Продолжая пользоваться сайтом, вы соглашаетесь с этим.