# Презентация: пассивный бузер

## Слайд 1: Звук любой частоты
В отличие от активного, пассивный бузер не пищит сам — на него подают переменный
сигнал через `tone(pin, frequency)`, поэтому можно менять частоту и высоту звука
(физика — [THEORY.md](THEORY.md)).

## Слайд 2: Неблокирующая работа
`turnOn()`, `playSiren()`, `playBeepTriple()` строятся без `delay()` — через машину
состояний в [`update()`](src/PassiveBuzzer.cpp#L51-L79). Звук играет, пока `loop()`
продолжает опрашивать датчики.

## Слайд 3: Одно исключение — `beepBlocking()`
Этот метод намеренно блокирующий (внутри `delay()`) и предназначен только для
короткого сигнала при старте программы, когда ещё нечему мешать — см. тестовый
стенд [main.cpp](src/main.cpp), сигнал "устройство готово".

## Слайд 4: Два готовых паттерна
- `Pattern::Siren` — чередование 1200 Гц / 800 Гц каждые 150 мс, до `turnOff()`.
- `Pattern::BeepTriple` — три коротких писка подтверждения, затем сам выключается.

Проверить оба можно в тестовом стенде — команды `3`/`4` в [main.cpp](src/main.cpp).

## Слайд 5: Что бузер не умеет
У бузера нет обратной связи — программа не может узнать, оборван ли провод или
работает ли сам излучатель. Поэтому в этом драйвере, как и в активном бузере, нет
`isAlive()` — подробнее в [THEORY.md, раздел 6](THEORY.md#6-почему-нет-isalive).
