Как подключить бипер к ардуино
Перейти к содержимому

Как подключить бипер к ардуино

  • автор:

Функция tone() и noTone() Arduino: мелодии, ноты

Функция tone и noTone Arduino описание

Функция tone Arduino используется для генерации PWM сигнала с определенной частотой на цифровом выходе микроконтроллера. Для воспроизведения звукового сигнала к пину платы Arduino должен быть подключен активный или пассивный зуммер. Длительность сигнала может быть определена в функции tone() или командой delay(), а генерация звука от пьезодинамика прекращается при вызове функции noTone() Arduino.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • активный или пассивный buzzer
  • макетная плата
  • коннекторы
  1. Подключение пьезодинамика к Ардуино
  2. Пианино на Ардуино с кнопками и пищалкой
  3. Игра на Ардуино «Dino T-Rex» с дисплеем

Одновременно на микроконтроллере Arduino может воспроизводиться только один сигнал. Если пьезодинамик уже подключен к пину, то вызов команды tone() для зуммера с другим номером порта не будет иметь никакого эффекта. Если функция будет вызвана с тем же номером порта, она будет воспроизводить сигнал на новой частоте. То есть, можно генерировать только одну частоту сигнала и на одном выходе микроконтроллера.

Функция tone и noTone в языке Ардуино

Функция tone и noTone Arduino описание

Синтаксис функции tone() Arduino
tone (pin, frequency); delay(duration); noTone(pin);
tone (pin, frequency, duration); noTone(pin);

pin — номер порта, на котором будет генерироваться сигнал
frequency — частота сигнала в герцах
duration — длительность сигнала в миллисекундах

Описание функций tone и noTone в Arduino IDE

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

Частота генерируемого сигнала зависит от встроенного таймера на микроконтроллере Arduino. Для Arduino Uno или Arduino Nano минимальная частота генерируемого звука составляет 31 Гц, а максимальная — 65535 Гц. Диапазон частот, воспринимаемых человеческим ухом, гораздо меньше этих значений. Загрузите в плату Arduino Uno следующий пример программы для включения пьезодинамика на разных частотах.

Скетч с примером использования команды tone

void setup() < pinMode(11, OUTPUT); >void loop()

Скетч для проигрывания мелодий с помощью tone

const byte COUNT_NOTES = 39; int frequences[COUNT_NOTES] = < 392, 392, 392, 311, 466, 392, 311, 466, 392, 587, 587, 587, 622, 466, 369, 311, 466, 392, 784, 392, 392, 784, 739, 698, 659, 622, 659, 415, 554, 523, 493, 466, 440, 466, 311, 369, 311, 466, 392 >; int durations[COUNT_NOTES] = < 350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 350, 350, 250, 100, 350, 250, 100, 700, 350, 250, 100, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 100, 100, 450, 150, 350, 250, 100, 750 >; void setup() < pinMode(11, OUTPUT); >void loop() < for (int i = 0; i >

Заключение. Функции tone() и noTone() используют аппаратный таймер Ардуино, поэтому в скетче следует использовать ШИМ сигнал для включения пьезодинамика (бипера). Использование функции пригодится при создании проектов, где требуется звуковая сигнализация, например, при создании игры Динозаврик с дисплеем 1602.

Пьезодинамик Ардуино (пищалка) подключение

Пьезодинамик Ардуино (пищалка) подключение

Зуммер Arduino это пьезоэлемент, который преобразует электрическую энергию в вибрацию (звук) с частотой около 400 Гц. Рассмотрим, как подключить buzzer к Ардуино для генерации звуков. Зуммер изготовлен из пьезоэлектрической мембраны, принимает большой диапазон напряжения: от 3 до 20 Вольт. Пьезо пищалка может быть оснащена внутренним генератором с фиксированной частотой (активный зуммер).

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • buzzer Arduino
  • фоторезистор и резистор
  • макетная плата
  • коннекторы
  1. Функция tone() и noTone(): мелодии, ноты
  2. Пианино на Ардуино с кнопками и пищалкой
  3. Игра со светодиодами «Саймон говорит»

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

Пьезодинамик Arduino характеристики, распиновка

Пьезодинамик Arduino характеристики, распиновка

Пассивный зуммер характеристики

  • Напряжение питания: 4В — 6В
  • Максимальное потребление тока: 60мА
  • Максимальная сила шума: 85dB
  • Сопротивление катушки: 40 Ом
  • Частота звукового сигнала: 2731Гц

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

Разница между пассивным и активным зуммером Arduino

Многих интересует разница между активным зуммером и пассивным зуммером Arduino? Активный пьезодинамик генерирует звук самостоятельно с помощью встроенного генератора частоты и требует постоянного напряжения. Пассивный пьезодинамик требует ШИМ-сигнала для генерации звука. Чтобы определить активную пищалку Ардуино, подайте на элемент постоянное напряжение, если зуммер пищит, значит он активен.

Как подключить к Ардуино пьезоэлемент (buzzer)

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

Схема подключения Ардуино с зуммером очень проста, подключите длинную ножку пищалки к цифровому контакту (в нашем примере контакт 11) и короткую ножку к GND. Некоторые активные модули buzzer для платы Arduino могут иметь неисправность в проводке. Если звук на пищалке отсутствует, попробуйте поменять местами провода +5В и GND. Иногда контакты питания пьезоэлемента подключены неправильно.

Скетч для пьезоэлемента (пищалки) Ардуино

void setup() < pinMode(11, OUTPUT); >void loop()

Звука сирены на Ардуино, имитация с зуммером

Пьезодинамик Ардуино (пищалка) подключение

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

Скетч плавного включения и выключения пищалки

void setup() < pinMode(11, OUTPUT); >void loop() < for (int x = 0; x < 500 ; x++)< tone (11, x); delay(1); >for (int x = 500; x > 0 ; x--) < tone (11, x); delay(1); >>

Ардуино терменвокс с фоторезистором и зуммером

Ардуино терменвокс с фоторезистором и зуммером

Для регулировки частоты звука используется фоторезистор, но можно также использовать потенциометр или любой другой аналоговый датчик. В следующей программе переменную ton, которая соответствует показаниям аналогового входа A1, мы преобразуем с помощью функции map в диапазон значений частоты звука от 1000 до 5000 Гц. Соберите схему, как на картинке и загрузите в микроконтроллер следующую программу для спикера.

Скетч терменвокса на Ардуино с фоторезистором

void setup () < pinMode(11, OUTPUT); pinMode(A1, INPUT); >void loop ()

Заключение. Мы рассмотрели, как включить пьезодинамик (buzzer) к Arduino. Эта информация будет полезна при создании проектов, требующих звукового сигнала при включении устройства на плате Ардуино или в других случаях. Чтобы уменьшить громкость сигнала динамика активного пьезоэлемента, можно использовать резистор различного номинала, подключив его последовательно в электрическую цепь с динамиком.

Arduino и зуммер

Зуммер, он же баззер (англ. buzzer), он же “пищалка”, он же пьезоэлектрический излучатель в корпусе – простейший источник звука. Очень часто используется в электронике для звуковой индикации: будильники, таймеры, а также практически вся бытовая техника (микроволновки, стиралки, посудомойки и т.д.) издаёт звук при помощи этого компонента. Ну и конечно же его можно найти почти на любой материнской плате компьютера.

Зуммер в таком корпусе может быть как активным, так и пассивным: активный при подключении питания начнёт пищать, т.к. имеет встроенный генератор. Пассивный же тихо щёлкнет и всё. В наборе GyverKIT может быть как активный, так и пассивный зуммер в зависимости от партии, приносим свои извинения.

Подключение

Потребляет зуммер от 10 до 30 мА, поэтому в принципе можно подключать его к цифровому пину Arduino напрямую, но к esp8266 (Wemos mini) нужно подключать через токоограничивающий резистор с сопротивлением ~100 Ом.

Примеры

Пищим активным зуммером

Если зуммер активный – достаточно подать на него высокий сигнал для включения звука. Тут можно даже использовать в качестве примера стандартный “блинк”:

void setup() < pinMode(3, OUTPUT); >void loop()
Пищим пассивным зуммером

Если зуммер пассивный – всё гораздо интереснее, так как можно генерировать звук нужной частоты, то есть тона, самому! Данный код заставит зуммер пищать на частоте 1 кГц. Делать пин выходом не нужно, это встроено в функцию tone()

void setup()

Для нескольких коротких сигналов модифицируем первый пример:

void setup() < >void loop() < tone(3, 1000); // пищать на пине 3, 1 кГц delay(500); noTone(3); // не пищать delay(500); >

Более подробное описание и примеры с tone() можно найти в уроке по ссылке ниже

Домашнее задание

  • Изучить все возможности функции tone()

Связанные уроки

Цифровые пины

В уроке про возможности микроконтроллера мы обсуждали такое понятие, как GPIO – входы-выходы общего назначения, которые позволяют читать и выдавать цифровой сигнал. Давайте посмотрим на распиновке, какие пины умеют так делать.

Нумерация пинов

AVR (Arduino Nano)

blank

  • Нет прямой нумерации GPIO, всё поделено на порты и пины (не указаны на распиновке), о них мы поговорим в отдельном уроке.
  • На плате выведенные GPIO подписаны как Dцифра и Aцифра и в программе мы можем обращаться к ним по этой нумерации:
    • К пинам GPIO, подписанным как D (D0-D13), можно обращаться по номеру: D2 – просто 2 .
    • К пинам GPIO, подписанным как A (A0-A5), можно обращаться по подписи на плате: A2 – A2 . Также нумерация A пинов продолжает нумерацию D пинов по порядку, то есть A0 это 14 , A1 это 15 .. A5 – 19 .

    ESP8266 (Wemos Mini)

    blank

    • Имеется прямая нумерация GPIO (номера подписаны на распиновке зелёным), по этим номерам можно обращаться к пинам в программе как к цифрам: GPIO5 – просто 5 .
    • На плате пины подписаны как Dцифра. Эта нумерация не совпадает с номерами GPIO, но по ней также можно обращаться к пинам в программе: D1 это D1 , и этот же пин – просто 5 , как номер GPIO (см. распиновку выше).

    Режимы работы пинов

    Цифровой пин может находиться в двух состояниях, вход и выход. В режиме входа пин может считывать напряжение от 0 до напряжения питания МК, а в режиме выхода – выдавать такое же напряжение. Режим работы выбирается при помощи функции pinMode(pin, mode) , где pin это номер пина, а mode это режим:

    • INPUT – вход
    • OUTPUT – выход
    • INPUT_PULLUP – подтянутый к питанию вход

    Если со входом/выходом всё понятно, то с подтяжкой давайте разберёмся. В режиме входа пин МК не подключен никуда и ловит из воздуха всякие наводки, получая практически случайное значение. Для задания пину “состояния по умолчанию” используют подтяжку резистором к земле или питанию. Режим INPUT_PULLUP включает встроенную в микроконтроллер подтяжку пина к питанию при помощи внутреннего резистора. Подробнее об этом, со схемами и примерами я рассказывал в начале вот этого видео урока.

    По умолчанию (при запуске программы) все пины сконфигурированы как входы (INPUT)

    Вывод цифрового сигнала

    Цифровой пин в режиме выхода ( OUTPUT ) может генерировать цифровой сигнал, т.е. выдавать напряжение. Так как понятие “цифровой” обычно связано с двумя состояниями, 0 и 1, цифровой пин тоже может выдать 0 или 1, точнее сигнал низкого или высокого уровня:

    • Сигнал низкого уровня это 0V, пин подключается к GND микроконтроллера.
    • Сигнал высокого уровня подключает пин к VCC микроконтроллера, то есть к питанию.

    Если вы вспомните урок по питанию платы, то поймёте, что сигнал высокого уровня на цифровом пине будет варьироваться в зависимости от того, от какого напряжения питается плата. При питании напрямую от источника 5V на пине будет 5V, при питании от USB с потерей на защитном диоде мы получим около 4.7V.

    Самый главный момент касательно цифровых пинов: микроконтроллер – логическое устройство, которое создано для управления другими устройствами при помощи логических сигналов. Логическое – означает не силовое, то есть питать от пина МК нельзя ничего мощнее светодиода или слабой микросхемы:

    • Для AVR Arduino рекомендуемый ток с пина GPIO – не более 20 мА, максимальный ток – 40 мА.
    • Для esp8266 максимальный ток с пина GPIO – не более 12 мА.

    Вернёмся к вопросу подачи цифрового сигнала: для этого у нас есть функция digitalWrite(pin, value) :

    • pin – пин GPIO (нумерацию смотри выше).
    • value – уровень сигнала: HIGH высокий, LOW низкий. Также можно использовать цифры 1 и 0 соответственно.

    Для вывода сигнала пин должен быть переведён в режим OUTPUT при помощи pinMode()

    Пример, в котором пины инициализируются как выходы и на них подаётся сигнал (на примере Arduino Nano):

    void setup() < pinMode(10, OUTPUT); // D10 как выход pinMode(A3, OUTPUT); // A3 как выход pinMode(19, OUTPUT); // A5 как выход (Nano/UNO) digitalWrite(10, HIGH); // высокий сигнал на D10 digitalWrite(A3, 1); // высокий сигнал на A3 digitalWrite(19, 1); // высокий сигнал на A5 >void loop() <>

    Чтение цифрового сигнала

    Цифровой пин может измерять напряжение, но сообщить он может только о его отсутствии (сигнал низкого уровня, LOW ) или наличии (сигнал высокого уровня, HIGH ), причём отсутствием напряжения считается промежуток от 0 до ~VCC/2 Вольт, а от VCC/2 до VCC микроконтроллер считает за наличие сигнала высокого уровня.

    Нельзя подавать на цифровой пин (да и на любой другой пин тоже) напряжение выше напряжения питания микроконтроллера

    Для чтения уровня сигнала на пине используется функция digitalRead(pin) , где пин – номер GPIO (нумерацию смотри выше).

    Для чтения сигнала пин должен быть переведён в режим INPUT при помощи pinMode()

    Следующий код будет выводить в порт сигнал на пине D5. Если подключить его проводом к VCC – получим 1 , если к GND – получим 0 .

    void setup() < Serial.begin(9600); >void loop()

    Видео

    Полезные страницы

    • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
    • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
    • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
    • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
    • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
    • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
    • Поддержать автора за работу над уроками
    • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *