🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🎹 Проект: сенсорное пианино на 4 кнопках TTP223

Четыре сенсорные кнопки TTP223 и зуммер

Четыре сенсорные кнопки TTP223 заменяют клавиши обычного пианино — прикосновение к каждой из них воспроизводит свою ноту через пассивный зуммер, без единой механической детали.

Как это работает

TTP223 — это ёмкостный сенсорный модуль: он реагирует не на механическое нажатие, а на изменение ёмкости при прикосновении пальца к контактной площадке, точно так же, как сенсорные кнопки на бытовой технике. Выход модуля цифровой — HIGH при касании, LOW когда палец убран, поэтому его легко читать обычным `digitalRead()` без дополнительной обработки сигнала.

Нотная механика здесь максимально простая: каждому из 4 пинов сопоставлена своя частота звука в массиве `notes`, и пассивный зуммер через функцию `tone()` генерирует именно эту частоту, пока палец касается соответствующей площадки. Пассивный зуммер (в отличие от активного) не имеет собственного генератора — он воспроизводит ровно ту частоту, которую ему подаёт плата, что и позволяет играть разные ноты одним и тем же зуммером.

Пошаговая сборка

Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.

  1. Подключите все 4 модуля TTP223 одинаково: VCC → 5V, GND → GND, сигнальный выход (обычно подписан SIG или I/O) → D2, D3, D4, D5 соответственно.
  2. Подключите пассивный зуммер: сигнал → D8, второй контакт → GND.
  3. Важно использовать именно пассивный зуммер, а не активный — активный зуммер пищит на одной фиксированной частоте независимо от сигнала и не даст сыграть разные ноты.
  4. Если у вашего TTP223 есть перемычка/джампер режима (есть не на всех версиях модуля) — убедитесь, что выбран режим без защёлкивания (чтобы звук играл только во время касания, а не переключался в режим вкл/выкл).

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int touchPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 294, 330, 349}; // до, ре, ми, фа
const int buzzerPin = 8;

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 4; i++) {
    pinMode(touchPins[i], INPUT);
  }
}

void loop() {
  bool anyTouched = false;
  for (int i = 0; i < 4; i++) {
    if (digitalRead(touchPins[i]) == HIGH) {
      tone(buzzerPin, notes[i]);
      anyTouched = true;
      break; // играем только первую найденную ноту, даже если касаются сразу две кнопки
    }
  }
  if (!anyTouched) {
    noTone(buzzerPin);
  }
}

Массив `notes` легко расширить до полной октавы, если добавить ещё сенсорных кнопок и цифровых пинов — принцип остаётся тем же.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🎶 музыкальная шкатулка на кнопке и пассивном…🔆 диммер освещения на энкодере KY-040 и MOSF… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 115 ₽ 104 ₽ (экономия 11 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA