Урок 8: Пассивный Зуммер
1. Цель эксперимента
С помощью Arduino можно создавать множество интерактивных проектов. В этом уроке вы познакомитесь с пассивным пьезо-зуммером — устройством, которое само по себе звучать не будет: ему нужен внешний импульсный сигнал (PWM) с частотой 2–5 кГц. Вы научитесь генерировать разные частоты и даже сыграете небольшой «мелодический» фрагмент.
2. Компоненты
Кол-во |
Деталь |
---|---|
1 |
Плата Arduino UNO |
1 |
Пассивный зуммер (модуль или сам излучатель) |
1 |
Макетная плата (breadboard) |
3 |
Перемычки «папа–папа» |
1 |
USB-кабель A-B |
3. Немного знаний
Пассивный зуммер — интегрированное пьезо-устройство без внутреннего генератора. Чтобы он издал звук, требуется квадратная волна 2–5 кГц (чем выше частота, тем выше тон). Отличить его от активного просто: у пассивного зуммера сверху нет наклейки «REMOVE SEAL» и видна зелёная печатная плата.
4. Схема подключения

VCC → 5 V
GND → GND
I/O (S) → цифровой пин 8
5. Пример кода
Первый вариант — классический for-цикл, который генерирует две частоты:
int buzzer = 8; // цифровой пин №8 — сюда подключаем зуммер
unsigned char i; // счётчик для повторений
void setup() {
pinMode(buzzer, OUTPUT); // объявляем пин выходом
}
void loop() {
// ----- Тон ~500 Гц -----
// 1 мс HIGH + 1 мс LOW = 2 мс период ⇒ 1/0.002 = 500 Гц
for (i = 0; i < 80; i++) { // 80 периодов ≈ 160 мс звучания
digitalWrite(buzzer, HIGH); // включаем звук
delay(1); // 1 мс звучания
digitalWrite(buzzer, LOW); // выключаем
delay(1); // 1 мс пауза
}
// ----- Тон ~250 Гц -----
// 2 мс HIGH + 2 мс LOW = 4 мс период ⇒ 1/0.004 = 250 Гц
for (i = 0; i < 100; i++) { // 100 периодов ≈ 400 мс звучания
digitalWrite(buzzer, HIGH); // звук
delay(2); // держим 2 мс
digitalWrite(buzzer, LOW); // тишина
delay(2); // 2 мс пауза
}
}
Тот же самый алгоритм, но внутри бесконечного while (1):
int buzzer = 8; // тот же пин 8
void setup() {
pinMode(buzzer, OUTPUT); // пин — выход
}
void loop() {
unsigned char i; // локальный счётчик
while (1) { // бесконечный цикл (хотя loop() уже зациклен)
// Тон 500 Гц
for (i = 0; i < 80; i++) {
digitalWrite(buzzer, HIGH); // включаем звук
delay(1); // 1 мс звучания
digitalWrite(buzzer, LOW); // выключаем
delay(1); // 1 мс пауза
}
// Тон 250 Гц
for (i = 0; i < 100; i++) {
digitalWrite(buzzer, HIGH); // звук
delay(2); // держим 2 мс
digitalWrite(buzzer, LOW); // тишина
delay(2); // 2 мс пауза
}
}
}
6. Как работает код
Изменяя длительность задержек delay( ) вы меняете частоту звуковой волны, а значит и высоту тона.
Пассивный зуммер воспроизводит тот сигнал, который вы ему подаёте. Хотите сыграть мелодию — последовательно выводите ноты с разными частотами.
7. Пошаговый запуск
Соберите схему по рисунку выше.
Подключите Arduino, выберите плату UNO и правильный COM-порт.
Загрузите скетч. Зуммер начнёт издавать чередующиеся тоны высокого и низкого звучания.
8. Что может пойти не так
Симптом |
Причина |
Решение |
---|---|---|
Нет звука |
Неправильная полярность, не тот пин |
Проверьте подключение и убедитесь, что пин 8 объявлен OUTPUT |
Очень тихо |
Слишком маленькая амплитуда сигнала |
Используйте 5 V питания и убедитесь, что задержки не слишком велики |
Зуммер пищит без кода |
Используется активный зуммер |
Поменяйте модуль на пассивный или используйте активный вариант урока 7 |
9. Эксперименты
Используйте функцию
tone(pin, freq, duration)
для генерации чистых тонов.Попробуйте сыграть простую мелодию: создайте массив частот (нот) и длительностей.
Прикрутите фоторезистор: чем ярче свет, тем выше тон зуммера.