Вам понадобится
  • - Компьютер;
  • - Arduino;
  • - пьезоизлучатель (пьезопищалка).
Инструкция
1
Пьезоизлучатель, или пьезоэлектрический излучатель, или пьезопищалка - это электроакустическое устройство воспроизведения звука, использующее обратный пьезоэлектрический эффект. Если объяснять по-простому - под действием электрического поля возникает механическое движение мембраны, которое и вызывает слышимые нами звуковые волны. Обычно такие излучатели звука устанавливают в бытовую электронную аппаратуру в качестве звуковых сигнализаторов, в корпуса настольных персональных компьютеров, в телефоны, в игрушки, в громкоговорители и много куда ещё.
Пьезоизлучатель имеет 2 вывода, причём полярность имеет значение. Поэтому чёрный вывод подключаем к земле (GND), а красный - к любому цифровому пину с функцией ШИМ (PWM). В данном примере положительный вывод излучателя подключён к выводу "D3".
2
Пьезопищалку можно задействовать разными способами. Самый простой из них - это использовать функцию analogWrite. Пример скетча - на иллюстрации. Данный скетч попеременно включает и выключает звук с частотой 1 раз в секунду.
Задаём номер пина, определяем его как выход. Функция analogWrite() принимает в качестве аргументов номер вывода и уровень, который может быть от 0 до 255. Это значение будет изменять громкость пьезопищалки в небольших пределах. Посылая в порт значение "0", выключаем пьезопищалку.
К сожалению, изменять тональность звука, используя функцию analogWrite(), нельзя. Пьезоизлучатель всегда будет звучать на частоте примерно 980 Гц, что соответствует частоте работы выводов с широтно-импульсной модуляцией сигнала (ШИМ) на платах Arduino UNO и подобных.
3
Теперь извлечём звук из пьезоизлучателя посредством встроенной функции tone(). Пример простейшего скетча приведён на иллюстрации.
Функция tone принимает в качестве аргументов номер пина и звуковую частоту. Нижний предел частоты - 31 Гц, верхний предел ограничен параметрами пьезоизлучателя и человеческого слуха. Чтобы выключить звук, посылаем в порт команду noTone().
Обратите внимание, что если к Ардуино подключены несколько пьезоизлучателей, единовременно будет работать только один. Чтобы включить излучатель на другом выводе, нужно прервать звук на текущем, вызвав функцию noTone().
Важный момент: функция tone() накладывается на ШИМ сигнал на "3" и "11" выводах Arduino. Имейте это в виду, когда будете проектировать свои устройства, т.к. функция tone(), вызванная, например, для пина "5", может мешать работе выводов "3" и "11".