# 🔊 Активный бузер

Активный бузер — это звуковой излучатель со встроенным электронным генератором:
чтобы он запищал, достаточно подать на управляющий вывод логическую единицу или ноль
(в зависимости от схемы) — самому городить переменный сигнал не нужно. Этим он
отличается от *пассивного* бузера, которому для звука требуется PWM-сигнал (`tone()`);
подробнее — в [THEORY.md](THEORY.md).

Этот модуль реализует неблокирующие звуковые сигналы (одиночный писк и два готовых
паттерна) через машину состояний — программа не "зависает" на время сигнала.

## 📋 Навигация

| Файл | Что внутри |
| :--- | :--- |
| [WIRING.md](WIRING.md) | Схема подключения через транзистор, полярность (Active Low/High) |
| [THEORY.md](THEORY.md) | Физика активного излучателя, сравнение с пассивным, разбор паттернов |
| [PREZ.md](PREZ.md) | Презентация модуля — 5 тезисов для урока |

## 🛠 Состав компонента

- [`include/ActiveBuzzer.h`](include/ActiveBuzzer.h) — интерфейс класса драйвера.
- [`src/ActiveBuzzer.cpp`](src/ActiveBuzzer.cpp) — машина состояний неблокирующих сигналов.
- [`src/main.cpp`](src/main.cpp) — тестовый стенд с управлением по Serial.

## 🚀 Сборка и прошивка (PlatformIO)

```bash
cd Components/ActiveBuzzer
pio run -t upload && pio device monitor
```

По умолчанию используется `GPIO 15` (см. `BUZZER_PIN` в [main.cpp](src/main.cpp)) —
поменяйте на свой пин при необходимости.

### Команды тестового стенда
- `1` — короткий писк (100 мс)
- `2` — длинный писк (1000 мс)
- `3` — паттерн `Alert` (прерывистая тревога)
- `4` — паттерн `Confirm` (два коротких писка)
- `0` — выключить всё


## Связанные материалы

- [PassiveBuzzer](/docs/components/passivebuzzer/) — тот же разъём, другая физика:
  генератора внутри нет, частоту задаёт программа.
- [Резистор](/docs/circuit_design/electrical-engineering/0.-components/rezistor/) —
  расчёт токоограничения и мощности для обвязки.
- [FoxHunter](/docs/projects/foxhunter/) — зуммер как измерительный прибор: громкость
  и частота писка кодируют расстояние до цели.
