Опубликовано

Пассивный пьезоэлектрический зуммер 5 В

По материалам руководства к набору “Умный дом на базе Arduino. Большой набор + КНИГА

С помощью модуля зуммера можно генерировать звуковые сигналы и даже простые мелодии. Принцип действия зуммера основан на пьезоэлектрическом эффекте, согласно которому при подаче электричества на зуммер он начинает деформироваться. При этом производятся удары о металлическую пластинку, которая и издает звук определенной частоты.

Существуют активные и пассивные зуммеры. Главное различие их состоит в том, что активный можно только включить и выключить, подав напряжение на его контакты. Для пассивного зуммера (рис. M1.1) кроме питания требуется источник, который задаст параметры звукового сигнала. В качестве такого источника может выступать плата Ардуино. Для генерации мелодий следует подключать цифровой пин зуммера к пину Arduino, который поддерживает ШИМ (~D5, ~D6, ~D9, ~D10, ~D11).

Внешний вид, назначение контактов

3-01-1-зуммер

Рис. M1.1. Пассивный зуммер

Основные характеристики

Наименование Значение
Напряжение, В 5
Максимальный ток, мА 32
Минимальный уровень звука на расстоянии 10 см, дБ 85
Диапазон частот, Гц 2300 ± 300

Схема подключения

3-01-2-зуммер

Рис. M1.2. Подключение зуммера

Программный код

Листинг M1.1. Подключение зуммера

#define SoundPin 5 // пин пьезоизлучателя

int DelaySound = 1000; //Пауза. 1000 миллисекунд=1 секунда

void setup(){

}

void loop(){

tone(SoundPin, 1915); //Воспроизводим сигнал с частотой тона

//1/(2*1915)=261 Гц (нота До)

delay(DelaySound); //Длительность воспроизведения сигнала 1 с

tone(SoundPin, 1700);

delay(DelaySound);

tone(SoundPin, 1519);

delay(DelaySound);

tone(SoundPin, 1432);

delay(DelaySound);

tone(SoundPin, 1275);

delay(DelaySound);

tone(SoundPin, 1136);

delay(DelaySound);

tone(SoundPin, 1014);

delay(DelaySound);

noTone(7); // Выключаем звук

}

Пояснение

Функция tone() генерирует на порту входа/выхода сигнал — прямоугольную «волну» заданной частоты и с 50%-ным рабочим циклом. Длительность может быть задана параметром delay, в противном случае сигнал генерируется, пока не будет вызвана функция noTone().

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


Примечание

Подробную информацию о соответствии частоты сигнала воспроизводимым музыкальным нотам, а также примеры программ, можно найти на сайте разработчика Arduino: http://www.arduino.cc/en/Tutorial/Melody.


Добавив в схему подключения пьезоэлемента несколько кнопок, можно сделать небольшой электронно-клавишный инструмент, используя несколько пьезоэлементов — собрать целый оркестр, а с помощью фоторезистора — создать «световой терменвокс».

Световой терменвокс

Соберем простейший имитатор музыкального инструмента терменвокса (рис. M1.3). Только играя на нашем терменвоксе, исполнитель будет подносить руки не к антенне (как при игре на классическом терменвоксе), а к фоторезистору.


Примечание

Cопротивление фоторезисторов уменьшается под воздействием света и увеличивается в темноте. Фоторезисторы просты в использовании, но слишком медленно реагируют на изменение уровня освещенности и имеют весьма низкую точность. Как правило, сопротивление фоторезисторов может варьироваться от 50 Ом при дневном освещении до более чем 10 МОм в темноте.


Схема подключения

3-01-3-терменвокс

Рис. M1.3. Световой терменвокс

Программный код

Листинг M1.2. Световой терменвокс

#define buzzerPin 5 //номер пина зуммера

#define photoPin A3 //номер пина фоторезистора

int aVal; //Значение на фоторезисторе

int sMax=1023; //максимальное значение фоторезистора

int buzzerFreq; //частота звука

const long BUZZ_FREQ_MAX = 2500; //задаем макс. частоту излучения

 

void setup(){

// Объявляем пин, к которому подключен зуммер как выход

pinMode(buzzerPin,OUTPUT);

Serial.begin(9600);

}

 

void loop(){

aVal=analogRead(photoPin); //считываем значение с фоторезистора

Serial.print("aVal:");

Serial.println(aVal);

// задаем частоту излучения // пьезоизлучателя

buzzerFreq = (aVal * BUZZ_FREQ_MAX)/sMax;

buzz(buzzerPin, buzzerFreq, 10);

}

//подпрограмма генерации звука buzz

void buzz(int targetPin, long frequency, long length) {

long delayValue = 1000000/frequency/2;

long numCycles = frequency * length/ 1000;

for (long i=0; i < numCycles; i++){

digitalWrite(targetPin,HIGH);

delayMicroseconds(delayValue);

digitalWrite(targetPin,LOW);

delayMicroseconds(delayValue);

}

}

Все — простейший терменвокс готов! Теперь попробуйте, изменяя освещенность фоторезистора, создать звуковую композицию.

Добавить комментарий