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

Пассивный пьезоэлектрический зуммер 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. Подключение зуммера

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#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. Световой терменвокс

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#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);
 
}
 
}

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

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