Рейтинг@Mail.ru
Пьезоизлучатель
Пьезоизлучатель

Как подключить пьезоизлучатель (пьезопищалку) к Arduino

Генерировать звуки с помощью Ардуино можно разными способами. Самый простой из них – подключить к плате пьезоизлучатель (или, как его ещё называют, «пьезопищалку»). Но как всегда, есть тут свои нюансы. В общем, давайте подключим к Arduino пьезопищалку и будем разбираться.

Инструкция по подключению пьезоизлучателя к Arduino

Вам понадобится

  • Компьютер;
  • Arduino;
  • пьезоизлучатель (пьезопищалка).

1 Схема подключения пьезоизлучателяк Arduino

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

Пьезоизлучатель имеет 2 вывода, причём полярность имеет значение. Поэтому чёрный вывод подключаем к земле (GND), а красный – к любому цифровому пину с функцией ШИМ (PWM). В данном примере положительный вывод излучателя подключён к выводу "D3".

Схема подключения пьезоизлучателя к Arduino
Схема подключения пьезоизлучателя к Arduino и схема, собранная на макетной плате

2 Извлекаем звук из пьезоизлучателяс помощью функции analogWrite()

Пьезопищалку можно задействовать разными способами. Самый простой из них – это использовать функцию analogWrite(). Пример скетча – во врезке. Данный скетч попеременно включает и выключает звук с частотой 1 раз в 2 секунды.

/* Объявляем переменную с номером вывода, 
к которому подключён пьезоэлемент: */
int soundPin = 3; 

void setup() {
  // ставим пин "3" в режим работы "Выход":
  pinMode(soundPin, OUTPUT);
}

void loop() {
    analogWrite(soundPin, 50); // включаем пьезоизлучатель
    delay(1000);  // на 1000 мс (1 сек),
    analogWrite(soundPin, 0); // выключаем звук
    delay(1000); // на 1 сек.
}

Задаём номер пина, определяем его как выход. Функция analogWrite() принимает в качестве аргументов номер вывода и уровень, который может быть от 0 до 255, т.к. ШИМ-выводы Ардуино имеют 8-битный ЦАП. Это значение будет изменять громкость пьезопищалки в небольших пределах. Чтобы выключить пьезопищалку, нужно послать в порт значение "0".

Используя функцию analogWrite(), нельзя изменять тональность звука, к сожалению. Пьезоизлучатель всегда будет звучать на частоте примерно 980 Гц, что соответствует частоте работы выводов с широтно-импульсной модуляцией сигнала (ШИМ) на платах Arduino UNO и подобных.

3 Извлекаем звук из пьезоизлучателяс помощью функции tone()

Но частоту звучания можно менять по-другому. Для этого извлечём звук из пьезоизлучателя посредством встроенной функции tone(). Пример простейшего скетча приведён на врезке.

int soundPin = 3; /* объявляем переменную с номером пина, 
  на который мы подключили пьезоэлемент */
void setup() {
    pinMode(soundPin, OUTPUT); //объявляем пин 3 как выход.
}

void loop() {
    tone(soundPin, 500); // включаем звук частотой 500 Гц 
    delay(1000); // на 1000 мс (1 сек)
    tone(soundPin, 1000); // включаем звук 1000 Гц
    delay(1000); // на 1 сек,
    noTone(soundPin); // выключаем звук
    delay(1000); // ждём 1 сек.
}

Функция tone() принимает в качестве аргументов номер вывода Arduino и звуковую частоту. Нижний предел частоты – 31 Гц, верхний предел ограничен параметрами пьезоизлучателя и человеческого слуха. Чтобы выключить звук, посылаем в порт команду noTone().

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

Обратите внимание, что если к Ардуино подключены несколько пьезоизлучателей, то единовременно будет работать только один. Чтобы включить излучатель на другом выводе, нужно прервать звук на текущем, вызвав функцию noTone().

Важный момент: функция tone() накладывается на ШИМ сигнал на "3" и "11" выводах Arduino. Т.е., вызванная, например, для пина "5", функция tone() может мешать работе выводов "3" и "11". Имейте это в виду, когда будете проектировать свои устройства.

Последнее изменениеВторник, 05 Январь 2016 16:41
(5 голосов)
Прочитано 12173 раз

Поделиться

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены