Как подключить зуммер к Arduino

В этой статье рассмотрим два разных типа пьезоэлектрических зуммеров (активные и пассивные) и как их подключить к Arduino. Пьезоэлектрические зуммеры издают достаточно громкий звук. При подключении к Arduino они могут использоваться в качестве сигнала тревоги или уведомления при нажатии на кнопку или когда датчик достигает определенного значения. Их также можно запрограммировать на воспроизведение музыкальных нот.

Типы пьезоэлектрических излучателей

Существует два типа пьезоэлектрических зуммеров, которые обычно используются в электронных проектах: активные зуммеры и пассивные зуммеры. Активные зуммеры называются активными, потому что для воспроизведения звука им требуется только постоянное напряжение. Пассивным зуммерам для воспроизведения звука требуется электрический сигнал (например, импульсный).

Активные зуммеры и пассивные зуммеры внешне очень похожи:

Активный и пассивный зуммер

Самый простой способ отличить активный зуммер от пассивного — это подключить его к источнику постоянного напряжения, например к 9-вольтовой батарее или 5 вольтам от платы Arduino. Зуммеры имеют полярность, поэтому перед подключением проверьте, какой вывод (+) положительный, а какой (-) отрицательный.

Когда вы подключите источник постоянного напряжения к пассивному зуммеру, он издаст только резкий щелчок. А вот когда вы подключите активный зуммер, то он начнет воспроизводить громкий жужжащий звук.

Как подключить активный зуммер к Arduino

Давайте создадим пример проекта, который будет управлять активным зуммером нажатием кнопки.

Вот детали, которые вам понадобятся:

  • Плата Arduino
  • Макетная плата
  • Перемычки
  • Кнопка
  • Активный зуммер

Один из способов подключить активный зуммер и кнопку к плате Arduino Nano показан на картинке ниже.

Подключение активного зуммера к ардуино нано

Один из выводов кнопки подключается к контакту D2 платы ардуино, другой контакт — к GND. Плюс + зуммера подключается к контакту D9, минус зуммера к GND платы.

Программа для Ардуино и активного зуммера

Как только ваша схема будет собрана, загрузите этот код в Arduino:

int buzPin = 9;
int btnPin = 2;

void setup() {
  pinMode(buzPin, OUTPUT);
  pinMode(btnPin, INPUT_PULLUP);
}

void loop() {
  int btnState = digitalRead(btnPin);

  if (btnState == LOW) {
    digitalWrite(buzPin, HIGH);
  }

  if (btnState == HIGH) {
    digitalWrite(buzPin, LOW);
  }
}

Активные зуммеры управляются таким же образом, как и светодиоды. Чтобы включить зуммер, контакт к которому он подключен переводится в высокое состояние HIGH. Чтобы его выключить, состояние контакта переводится в низкое состояние LOW.

В верхней части программы мы объявляем две переменные. Первая переменная называется buzPin и устанавливается равной 9 контакту Arduino. Другая переменная называется btnPin и устанавливается равной контакту 2.

В функции setup() buzPin устанавливается как выход OUTPUT с помощью функции pinMode(). btnPin устанавливается как вход с внутренним подтягивающим резистором с помощью INPUT_PULLUP в качестве второго аргумента в функции pinMode().

В функции loop() мы выполняем чтение состояние кнопки и сохраняем значение в переменной с именем btnState. Затем у нас есть два оператора if, которые говорят: «Если состояние кнопки LOW (низкий уровень), то на контакте зуммера устанавливается HIGH (высокий уровень), а если состояние кнопки HIGH (высокий уровень), то на контакте зуммера устанавливается LOW (низкий уровень)».

После того, как вы соберете схему и загрузите код в плату, то вы должны услышать, что нажатие кнопки включает зуммер.

Симуляция схемы в программе Proteus

Соберем данную схему в программе Proteus, скомпилируем файл программы и проверим ее работу в симуляторе.

Управление кнопкой включение зуммера на Ардуино

Видео можно посмотреть ниже:

Информация


Если вы будете собирать схему в программе протеус, то вам могут быть полезны следующие статьи:

Как подключить пассивный зуммер к Arduino

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

Для воспроизведения звука пассивным зуммерам требуется прямоугольный сигнал. Изменяя частоту прямоугольной волны, вы можете изменить высоту звука.

В Arduino есть встроенная функция под названием tone (), которая генерирует прямоугольные импульсы с указанной частотой:

tone(pin, frequency, duration);

Функция tone() принимает три параметра: pin — номер вывода, на который вы хотите отправить прямоугольную волну; frequency — частоту тона в герцах; и, при необходимости, duration — длительность сигнала в миллисекундах.

Функцию noTone() можно использовать для отключения функции tone():

noTone();

Давайте соберем проект, который будет циклически повторять набор музыкальных нот от A до G. Для этого нам понадобится только плата Arduino (мы будем использовать Nano) и пассивный зуммер.

Схема подключения пассивного зуммера к плате Arduino

Пассивный зуммер к плате Arduino можно подключить следующим образом:

Подключение пассивного зуммера к Ардуино

Плюсовой контакт зуммера подключается к цифровому контакту D9 платы Ардуино, а минусовой контакт подключается к GND.

Программа для Ардуино и пассивного зуммера

На просторах интерната можно найти код для различных мелодий. Для примера возьмем код мелодии из некогда популярной видеоигры «Супер Марио».

// Номер контакта, к которому подключен зуммер
int buzzerPin=9;

// Частоты для функции tone()
int notes[] = {
 1318, 1318, 1318, 1046, 1318, 1568, 784,
 1046, 784, 659, 880, 987, 932, 880, 784,
 1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987,
 1046, 784, 659, 880, 987, 932, 880,
 784, 1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987,
 1568, 1480, 1396, 1244, 1318, 830, 880, 1046, 880, 1046, 1174,
 0, 1568, 1480, 1396, 1244, 1318, 2093, 2093, 2093,
 1568, 1480, 1396, 1244, 1318, 830, 880, 1046, 880, 1046, 1174, 1244, 1174, 1046, 
};

// Длительности
int times[] = {
 150, 300, 150, 150, 300, 600, 600,
 450, 150, 300, 300, 150, 150, 300, 210,
 210, 150, 300, 150, 150, 300, 150, 150, 450,
 450, 150, 300, 300, 150, 150, 300,
 210, 210, 150, 300, 150, 150, 300, 150, 150, 450,
 150, 150, 150, 300, 150, 150, 150, 150, 150, 150, 150,
 0, 150, 150, 150, 300, 150, 300, 150, 600,
 150, 150, 150, 300, 150, 150, 150, 150, 150, 150, 150, 300, 450, 600,
};

// Задержки между сигналами
int delays[] = {
 150, 300, 300, 150, 300, 600, 600,
 450, 450, 450, 300, 300, 150, 300, 210,
 210, 150, 300, 150, 300, 300, 150, 150, 450,
 450, 450, 450, 300, 300, 150, 300,
 210, 210, 150, 300, 150, 300, 300, 150, 150, 600,
 150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 150,
 300, 150, 150, 150, 300, 300, 300, 150, 600,
 150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 450, 450, 450, 1200,
};

/*
 * 
 * В цикле FOR будет вызвана 75 раз функция tone()
 * с разными частотами (с разными тональностями) 
 * и длительностями, после каждого вызова tone() вызывается 
 * функция delay() с определенной задержкой
 * Массив notes[] - хранит частоты
 * Массив times[] - хранит длительности
 * Массив delays[] - хранит время задержки
 * 
 */
void setup(){
 for (int i = 0; i < 75; i++){
  tone(buzzerPin, notes[i], times[i]);
  delay(delays[i]);
 }
 noTone(buzzerPin);
}
void loop(){}

В массиве notes[] находятся 75 частот для импульсных сигналов. «Подавая» их на зуммер, он будет издавать звук определенной тональности. В массиве times[] находятся длительности для каждой частоты — т.е. продолжительность каждого звука определенной тональности. В массиве delays[] находятся значения для задержки между вызовами функции tone() в миллисекундах.

Перебор значений происходит в цикле for(), который находится в функции setup(). После цикла for вызывается функция noTone(), которая прекращает генерацию на контакте buzzerPin.

Симуляция схемы с пассивным зуммером в программе Proteus

Создадим новый проект в программе Proteus и в качестве отладочной платы выберем Arduino Nano V3. Добавим компонент SOUNDER, который будем использовать в качестве пассивного зуммера. Один его контакт подключим к 9 контакту платы Ардуино, другой — подключим к GND. Во вкладке Source Code добавим код, представленный чуть выше, и скомпилируем проект. После запуска симуляции вы должны услышать мелодию из игры «Супер Марио».

Видео симуляции вы можете найти ниже.

5 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии