Пьезоизлучатель
Пьезоизлучатель может называться по разному — пищалка, зумер, piezo buzzer или speaker. Суть одна — издать звук.
Обычно в наборах идут два вида пищалок — активный и пассивный. Они похожи и новичка ставят в тупик. Давайте разбираться.
Активный зуммер имеет сверху наклейку с таинственной надписью «Remove seal after washing», которую Гугл-переводчик переводит весьма странно — «снять пломбу после мытья», ещё больше запутывая пользователя. Не обращайте внимания на надпись, это просто технический момент. Во время изготовления детали требуется промывка от флюса, но чтобы не повредить вещь, заклеивают отверстие сверху. Но не торопитесь отклеивать и выбрасывать наклейку, она вам пригодится.

Активный зумер может работать самостоятельно, достаточно просто подать питание. При подключении следут следить за полярностью. На наклейке есть значок плюса (+), но доверять наклейке не стоит, может кто-то не очень аккуратно её наклеил. Лучше посмотрите на ножки. Как правило, одна ножка длиннее другой. Длинная ножка — плюс, короткая — минус. Соедините длинную ножку к питанию 5В, а короткую к земле. Вы сразу услышите противный звук. Именно по этой причине я советовал вам не отклеивать наклейку. Если вы теперь удалите наклейку, то громкость звука станет намного выше. Заклейте немедленно обратно!
Пассивный зумер внешне похож, но всё-таки отличается немного. Сравните их по размерам, а также посмотрите на их снизу. Разница видна. При подключении как из прошлого примера с активным динамиком, вы ничего не услышите. Просто подать питание не достаточно, нужно использовать программные методы, которые есть в составе В Arduino.

Также встречаются в модульном исполнении, например, KY-006 (пассивный) или KY-012 (активный). У модуля три вывода, средний не используется, вывод S соединяется с цифровым выводом платы, а вывод — с GND.

Переходим к программной части. Активный зумер пищит громче и отчётливее, пассивный немного грубовато.
Самый простой способ — подать напряжение на нужный вывод.
int buzzPin = 2; void setup() < pinMode(buzzPin, OUTPUT); // установка вывода 2 в режим вывода >void loop() < digitalWrite(buzzPin, HIGH); // перевод вывода 2 в активное состояние delay(500); // пауза полсекунды digitalWrite(buzzPin, LOW); // перевод вывода 2 в неактивное состояние delay(500); // пауза полсекунды >
При запуске услышим щелчки.
Для более интересных звуков используется функция tone().
const byte piezoPin = 2; void setup() < pinMode(piezoPin, OUTPUT); // настраиваем вывод 2 на выход >void loop() < tone(piezoPin, 100); // генерируем звук с частотой 100 Гц delay(100); // пауза 100 миллисекунд noTone(piezoPin); // выключаем звук delay(900); // снова пауза 900 мс >
Одну ноту играть не интересно. Пусть будет массив из десяти нот.
const byte piezoPin = 2; int numTones = 10; // Ноты C, C#, D, D#, E, F, F#, G, G#, A int tones[10] = ; void setup() < pinMode(piezoPin, OUTPUT); // настраиваем вывод 2 на выход >void loop() < for (int i = 0; i < numTones; i++) < tone(piezoPin, tones[i]); delay(500); >noTone(piezoPin); >
Если управлять не только нотами, но и их продолжительностью, то можно писать мелодии. Говорят, следующая мелодия воспроизводит «Имперский марш» из «Звёздных войн».
const byte piezoPin = 2; const byte COUNT_NOTES = 39; // частоты нот int tones[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(piezoPin, OUTPUT); // настраиваем вывод 2 на выход >void loop() < for (int i = 0; i >
02.Digital: toneMelody (Играем мелодию)
Рассмотрим пример из меню File | Examples | 2.Digital | toneMelody. Обратите внимание, что программа состоит из двух вкладок toneMelody и pitches.h. Файл pitches.h содержит константы для проигрывания звуков различной тональности. Сам файл находится в одной папке с скетчем.
После того, как мы наигрались со светом при помощи светодиодов, пора поиграть со звуком. Для примера нам понадобится пьезоизлучатель, макетная плата и три провода.
Собирается конструкция очень просто — от вывода 8 ведём провод к одному контакту пищалки, а второй контакт присоединяем к GND.

Запустите скетч. Вы услышите мелодию, которая прозвучит один раз. Если вы хотите послушать её ещё раз, то нажмите на кнопку Reset на вашей плате.
#include "pitches.h" // ноты для мелодии int melody[] = < NOTE_C4, NOTE_G3,NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4>; // продолжительность ноты: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = < 4, 8, 8, 4,4,4,4,4 >; void setup() < // проходим через все ноты мелодии: for (int thisNote = 0; thisNote < 8; thisNote++) < // to calculate the note duration, take one second // divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(8, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(8); >> void loop() < // нет необходимости повторять мелодию >
В первой строчке мы подключаем заголовочный файл pitches.h при помощи оператора #include. Далее создаётся массив из нот, а также массив из продолжительности проигрывания ноты. Потом идёт цикл, где для каждой ноты вычисляется его продолжительность и вызывается функция tone(), которая и воспроизводит нужный звук. Обратите внимание, что весь код находится в методе setup(), поэтому программа выполняется один раз.
Вот так мы быстро познакомились с новым устройством — пьезоизлучателем, а также научились извлекать мелодию.
Melody
Нашёл ещё один пример с пищалкой.
Пример использует вывод 8.
int speakerPin = 8; int length = 15; // число нот char notes[] = "ccggaagffeeddc "; // сохраняем ноты как массив символов int beats[] = < 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 2, 4 >; // массив временных промежутков int tempo = 300; void playTone(int tone, int duration) < for (long i = 0; i < duration * 1000L; i += tone * 2) < digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); >> void playNote(char note, int duration) < char names[] = < 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' >; int tones[] = < 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 >; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) < if (names[i] == note) < playTone(tones[i], duration); >> > void setup() < pinMode(speakerPin, OUTPUT); >void loop() < for (int i = 0; i < length; i++) < if (notes[i] == ' ') < delay(beats[i] * tempo); // rest >else < playNote(notes[i], beats[i] * tempo); >// pause between notes delay(tempo / 2); > >
02.Digital: tonePitchFollower
Ещё один простой пример File | Examples | 02.Digital | tonePitchFollower для извлечения звуков, который зависит от освещённости — вы можете проводить рукой над датчиком освещённости, создавая тем самым разные значения, которые передаются на динамик. В примере упоминается 9-омный динамик, но мы можем использовать и свой пьезоизлучатель.

void setup() < Serial.begin(9600); >void loop() < // read the sensor: int sensorReading = analogRead(A0); // print the sensor reading so you know its range Serial.println(sensorReading); // map the analog input range (in this case, 400 - 1000 from the photoresistor) // to the output pitch range (120 - 1500Hz) // change the minimum and maximum input numbers below depending on the range // your sensor's giving: int thisPitch = map(sensorReading, 400, 1000, 120, 1500); // play the pitch: tone(9, thisPitch, 10); delay(1); // delay in between reads for stability >
Пьезодинамик Ардуино (пищалка) подключение

Зуммер Arduino это пьезоэлемент, который преобразует электрическую энергию в вибрацию (звук) с частотой около 400 Гц. Рассмотрим, как подключить buzzer к Ардуино для генерации звуков. Зуммер изготовлен из пьезоэлектрической мембраны, принимает большой диапазон напряжения: от 3 до 20 Вольт. Пьезо пищалка может быть оснащена внутренним генератором с фиксированной частотой (активный зуммер).
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
- buzzer Arduino
- фоторезистор и резистор
- макетная плата
- коннекторы
- Функция tone() и noTone(): мелодии, ноты
- Пианино на Ардуино с кнопками и пищалкой
- Игра со светодиодами «Саймон говорит»
По сравнению с дорогими электромагнитными преобразователями звука (динамиками), пьезокерамические преобразователи имеют простую конструкцию. Пьезоэлемент Ардуино состоит из металлической пластины с нанесенной на нее пьезоэлектрической керамикой с проводящим напылением. Пластина и напыление являются контактами активного или пассивного зуммера, устройство спикера имеет полярность — плюс и минус.
Пьезодинамик 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. Эта информация будет полезна при создании проектов, требующих звукового сигнала при включении устройства на плате Ардуино или в других случаях. Чтобы уменьшить громкость сигнала динамика активного пьезоэлемента, можно использовать резистор различного номинала, подключив его последовательно в электрическую цепь с динамиком.
Урок ESP8266. Подключаем зуммер к NodeMCU.
Цель этого урока — объяснить, как управлять модулем пассивного зуммера с помощью ESP8266. Мы будем программировать ESP8266, используя ядро Arduino. Вы можете посмотреть урок по подключению зуммера к Arduino UNO тут.
Что понадобится для урока управления зуммером с помощью NodeMCU.
В этом уроке ESP8266 будем использовать пассивного зуммера, в виде модуля KY-006, что позволяет нам напрямую управлять им, с помощью вывода GPIOмикроконтроллера.
Важно! Не подключайте цифровой вывод ESP8266 напрямую к зуммеру без использования транзистора или любого другого метода подачи тока на устройство. GPIO ESP8266 могут подавать только 12 мА, а большинство зуммеров потребляет значительно больше, что может повредить микроконтроллер.
Характеристики модуля KY-006:
- Ток: 10мА
- Рабочее напряжение: 1,5 ~ 15 В постоянного тока
- Диапазон генерации тона: 1,5 ~ 2,5 кГц
- Размеры 18,5 x 15 мм
Как видим, ток необходимый для работы модуля KY-006 меньше 12 мА. Поэтому его можно подключить напрямую к контактам NodeMCU.
Итак, подключаем ESP8266 к модулю зуммера, как показано на рисунке ниже. Если вы используете плату NodeMCU, обратите внимание, что номера контактов, указанные на плате, не соответствуют контактам на ESP8266.
Схема подключения модуля зуммера KY-006 к NodeMCU.

Поскольку используем пассивный зуммер, нам нужно сгенерировать прямоугольную волну, чтобы контролировать звук, который он будет издавать. Частота прямоугольной волны, создаваемой на выводе GPIO, будет частотой звука. Таким образом, управление зуммером будет немного сложнее, поскольку он не будет включаться / выключаться, как светодиод, но у нас будет больше возможностей, поскольку мы сможем изменять частоту.
Скетч управления зуммером с помощью NodeMCU. Библиотека Tone.
Код этого урока очень прост, поскольку мы будем использовать функцию tone(), которая выполняет большую часть работы за нас. Убедитесь, что вы используете последнюю версию основных библиотек ESP8266 Arduino, чтобы гарантировать доступность функции tone().
Эта функция принимает 2 аргумента: первый соответствует контакту, на котором будет генерироваться прямоугольная волна, управляющая зуммером, а второй соответствует используемой частоте.
tone(buzzPin, frequency);
Кроме того, можно передать третий аргумент, который указывает, сколько времени мы будем выводить прямоугольную волну. В нашем примере не будем использовать третий параметр, потому что мы будем контролировать продолжительность звука с помощью функции задержки. Итак, если мы не передадим третий аргумент, прямоугольная волна будет сохраняться до тех пор, пока мы не вызовем функцию noTone на том же выводе.
Предположим, что наш зуммер будет воспроизводить частоту 1000 Гц, и он будет гудеть в течение 1 секунды, затем останется выключенным в течение 1 секунды, а затем данный алгоритм повторяется заново.
Чтобы код было легко изменить, мы сначала объявляем 4 глобальные переменные и присваиваем им соответствующие значения.
int frequency = 1000; //частота Hz int buzzPin = 2; int timeOn = 1000; //время работы в milliseconds int timeOff = 1000; //время ожидания в millisecods
В этом простом примере мы можем перейти к функции настройки и поместить в наш цикл, следующий код:
void loop()
Итак, активируем прямоугольную волну 1000 Гц на контакте 2, вызывая функцию тона, и начинает звучать зуммер. Ждем 1 секунду, затем выключаем зуммер функцией noTone. Затем ждем еще 1 секунду и повторяем процесс.
Пример кода (скетч) для генерирования трех разных тонов звучания.
Следующий скетч ESP8266 будет генерировать три разных тона, путем включения и выключения зуммера KY-006 на разных частотах, с использованием функции tone().
Код можно написать так, чтобы звуковой сигнал подавался, когда устройство включилось и готово к работе, для этого код прописываем в блоке setup ().
void setup () < //Настройка вывода платы в режим "Выход" pinMode (PinBuzzer, OUTPUT); tone(PinBuzzer, 1500); // включаем звук частотой 1500 Гц delay(200); tone(PinBuzzer, 1000); // включаем звук частотой 1000 Гц delay(200); tone(PinBuzzer, 500); // включаем звук частотой 500 Гц delay(200); noTone(PinBuzzer); // выключаем звук delay(2000); >
Если нам нужно, чтобы звуковой сигнал воспроизводился постоянно, то добавляем код в основной цикл loop ().
void setup () < //Настройка вывода платы в режим "Выход" pinMode (PinBuzzer, OUTPUT); tone(PinBuzzer, 1500); // включаем звук частотой 1500 Гц delay(200); tone(PinBuzzer, 1000); // включаем звук частотой 1000 Гц delay(200); tone(PinBuzzer, 500); // включаем звук частотой 500 Гц delay(200); noTone(PinBuzzer); // выключаем звук delay(2000); >
Также можно добавить тактовую кнопку, или другой алгоритм, и включать звуковой сигнал в определённый момент. Например, при получении данных с датчика температуры, и при повышении заданного значения подавать звуковой сигнал.

Пассивный звуковой излучатель использовал в проекте, который собирал вместе с сыном: «Часы-будильник на Arduino». Корпус сделан из конструктора LEGO.
Понравился Урок Подключаем зуммер к NodeMCU? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Мелодии для Ардуино. Проекты. Ардуино

Привет! Мы уже знаем как извлечь из Ардуино звук. И даже собрали простое пианино с помощью Ардуино. А сегодня посмотрим как написать готовые мелодии на Ардуино в программе. А также, какие мелодии уже есть на просторах интернета.
В предыдущем уроке мы научились генерировать звук. Посмотрите этот урок, если уже забыли его или пропустили. Сегодня мы будем использовать его опять.
Для выполнения этого урока нам понадобятся
- Ардуино Uno
- Макетная плата
- Перемычки
- 1 резистор номиналом 150 Ом
- Потенциометр 10 кОм
- Динамик 8 Ом
- Кабель USB
Программа и схема
Соберем ту же схему из предыдущего урока. Она довольно проста.

Мы уже знаем, что такое звук, как работает динамик и, в конце концов, знаем как извлечь звук из Ардуино.
Теперь осталось написать программу, которая будет генерировать мелодию на Ардуино и воспроизводить ее на динамике. Например, простая мелодия из книги Джереми Блюма.
#include "pitches.h" const int SPEAKER=9; int notes[] = < NOTE_A4, NOTE_E3, NOTE_A4, 0, NOTE_A4, NOTE_E3, NOTE_A4, 0, NOTE_E4, NOTE_D4, NOTE_C4, NOTE_B4, NOTE_A4, NOTE_B4, NOTE_C4, NOTE_D4, NOTE_E4, NOTE_E3, NOTE_A4, 0 >; int times[] = < 250, 250, 250, 250, 250, 250, 250, 250, 125, 125, 125, 125, 125, 125, 125, 125, 250, 250, 250, 250 >; void setup() < for (int i = 0; i < 20; i++) < tone(SPEAKER, notes[i], times[i]); delay(times[i]); >> void loop()
Динамик подключается к 9 пину через сопротивление. И, к тому же, не забудьте подключить файл с нотами. Он должен находиться рядом с файлом программы в одной папке.
В этом примере ноты и длительность их звучания собраны в массивы. А в главный функции setup() управление мелодией происходит в цикле for(). Такой способ намного удобнее, чем запись мелодии построчно.
Другие мелодии
Посмотрим какие еще мелодии можно сыграть на Ардуино.
Главная тема супер братьев Марио
const int SPEAKER=9; int notes[] = < 1318, 1318, 1318, 1046, 1318, 1568, 784, 1046, 784, 659, 880, 987, 932, 880, 784, 1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987, 1046, 784, 659, 880, 987, 932, 880, 784, 1318, 1568, 1750, 1396, 1568, 1318, 1046, 1174, 987, 1568, 1480, 1396, 1244, 1318, 830, 880, 1046, 880, 1046, 1174, 0, 1568, 1480, 1396, 1244, 1318, 2093, 2093, 2093, 1568, 1480, 1396, 1244, 1318, 830, 880, 1046, 880, 1046, 1174, 1244, 1174, 1046, >; int times[] = < 150, 300, 150, 150, 300, 600, 600, 450, 150, 300, 300, 150, 150, 300, 210, 210, 150, 300, 150, 150, 300, 150, 150, 450, 450, 150, 300, 300, 150, 150, 300, 210, 210, 150, 300, 150, 150, 300, 150, 150, 450, 150, 150, 150, 300, 150, 150, 150, 150, 150, 150, 150, 0, 150, 150, 150, 300, 150, 300, 150, 600, 150, 150, 150, 300, 150, 150, 150, 150, 150, 150, 150, 300, 450, 600, >; int delays[] = < 150, 300, 300, 150, 300, 600, 600, 450, 450, 450, 300, 300, 150, 300, 210, 210, 150, 300, 150, 300, 300, 150, 150, 450, 450, 450, 450, 300, 300, 150, 300, 210, 210, 150, 300, 150, 300, 300, 150, 150, 600, 150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 150, 300, 150, 150, 150, 300, 300, 300, 150, 600, 150, 150, 150, 300, 300, 150, 150, 300, 150, 150, 450, 450, 450, 1200, >; void setup() < for (int i = 0; i < 75; i++)< tone(SPEAKER, notes[i], times[i]); delay(delays[i]); >noTone(SPEAKER); > void loop()<>
Имперский марш из Звездных войн
const int SPEAKER=9; int 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 times[] = < 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() < for (int i = 0; i < 39; i++)< tone(SPEAKER, notes[i], times[i]*2); delay(times[i]*2); noTone(SPEAKER); >> void loop()<>
В лесу родилась елочка
#include "pitches.h" int SPEAKER=9; int notes[] = < NOTE_C4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_F4, NOTE_C4, NOTE_C4, NOTE_C4, NOTE_A4, NOTE_A4, NOTE_AS4, NOTE_G4, NOTE_C5, 0, NOTE_C5, NOTE_D4, NOTE_D4, NOTE_AS4,NOTE_AS4,NOTE_A4, NOTE_G4, NOTE_F4, NOTE_C4, NOTE_A4, NOTE_A4, NOTE_G4, NOTE_A4, NOTE_F4 >; int times[] = < 400,400,400,400, 400,400,400,400, 400,400,400,400, 400,600,20,400,400, 400,400,400,400, 400,400,400,400, 400,400,400,600 >; void setup() < for (int i = 0; i < 29; i++)< tone(SPEAKER, notes[i],times[i]); delay(times[i]); noTone(SPEAKER); >> void loop()<>
int tonePin = 9;// пин пищалки void setup() < tone(tonePin, 174, 249.99975); delay(277.7775); tone(tonePin, 233, 499.9995); delay(555.555); tone(tonePin, 174, 374.999625); delay(416.66625); tone(tonePin, 195, 124.999875); delay(138.88875); tone(tonePin, 220, 499.9995); delay(555.555); tone(tonePin, 146, 249.99975); delay(277.7775); tone(tonePin, 146, 249.99975); delay(277.7775); tone(tonePin, 195, 499.9995); delay(555.555); tone(tonePin, 174, 374.999625); delay(416.66625); tone(tonePin, 155, 124.999875); delay(138.88875); tone(tonePin, 174, 499.9995); delay(555.555); tone(tonePin, 116, 249.99975); delay(277.7775); tone(tonePin, 116, 249.99975); delay(277.7775); tone(tonePin, 130, 499.9995); delay(555.555); tone(tonePin, 130, 374.999625); delay(416.66625); tone(tonePin, 146, 124.999875); delay(138.88875); tone(tonePin, 155, 499.9995); delay(555.555); tone(tonePin, 155, 374.999625); delay(416.66625); tone(tonePin, 174, 124.999875); delay(138.88875); tone(tonePin, 195, 499.9995); delay(555.555); tone(tonePin, 220, 374.999625); delay(416.66625); tone(tonePin, 233, 124.999875); delay(138.88875); tone(tonePin, 261, 749.99925); delay(833.3325); tone(tonePin, 174, 249.99975); delay(277.7775); tone(tonePin, 293, 499.9995); delay(555.555); tone(tonePin, 261, 374.999625); delay(416.66625); tone(tonePin, 233, 124.999875); delay(138.88875); tone(tonePin, 261, 499.9995); delay(555.555); tone(tonePin, 174, 249.99975); delay(277.7775); tone(tonePin, 174, 249.99975); delay(277.7775); tone(tonePin, 233, 499.9995); delay(555.555); tone(tonePin, 220, 374.999625); delay(416.66625); tone(tonePin, 195, 124.999875); delay(138.88875); tone(tonePin, 220, 499.9995); delay(555.555); tone(tonePin, 146, 374.999625); delay(416.66625); tone(tonePin, 146, 124.999875); delay(138.88875); tone(tonePin, 195, 499.9995); delay(555.555); tone(tonePin, 174, 374.999625); delay(416.66625); tone(tonePin, 155, 124.999875); delay(138.88875); tone(tonePin, 174, 499.9995); delay(555.555); tone(tonePin, 116, 374.999625); delay(416.66625); tone(tonePin, 116, 124.999875); delay(138.88875); tone(tonePin, 233, 499.9995); delay(555.555); tone(tonePin, 220, 374.999625); delay(416.66625); tone(tonePin, 195, 124.999875); delay(138.88875); tone(tonePin, 174, 999.999); delay(1111.11); tone(tonePin, 293, 999.999); delay(1111.11); tone(tonePin, 261, 249.99975); delay(277.7775); tone(tonePin, 233, 249.99975); delay(277.7775); tone(tonePin, 220, 249.99975); delay(277.7775); tone(tonePin, 233, 249.99975); delay(277.7775); tone(tonePin, 261, 749.99925); delay(833.3325); tone(tonePin, 174, 249.99975); delay(277.7775); tone(tonePin, 174, 999.999); delay(1111.11); tone(tonePin, 233, 999.999); delay(1111.11); tone(tonePin, 220, 249.99975); delay(277.7775); tone(tonePin, 195, 249.99975); delay(277.7775); tone(tonePin, 174, 249.99975); delay(277.7775); tone(tonePin, 195, 249.99975); delay(277.7775); tone(tonePin, 220, 749.99925); delay(833.3325); tone(tonePin, 146, 249.99975); delay(277.7775); tone(tonePin, 146, 999.999); delay(1111.11); tone(tonePin, 233, 499.9995); delay(555.555); tone(tonePin, 195, 374.999625); delay(416.66625); tone(tonePin, 220, 124.999875); delay(138.88875); tone(tonePin, 233, 499.9995); delay(555.555); tone(tonePin, 195, 374.999625); delay(416.66625); tone(tonePin, 220, 124.999875); delay(138.88875); tone(tonePin, 233, 499.9995); delay(555.555); tone(tonePin, 195, 374.999625); delay(416.66625); tone(tonePin, 233, 124.999875); delay(138.88875); tone(tonePin, 311, 999.999); delay(1111.11); tone(tonePin, 311, 999.999); delay(1111.11); tone(tonePin, 293, 249.99975); delay(277.7775); tone(tonePin, 261, 249.99975); delay(277.7775); tone(tonePin, 233, 249.99975); delay(277.7775); tone(tonePin, 261, 249.99975); delay(277.7775); tone(tonePin, 293, 749.99925); delay(833.3325); tone(tonePin, 233, 249.99975); delay(277.7775); tone(tonePin, 233, 999.999); delay(1111.11); tone(tonePin, 261, 999.999); delay(1111.11); tone(tonePin, 233, 249.99975); delay(277.7775); tone(tonePin, 220, 249.99975); delay(277.7775); tone(tonePin, 195, 249.99975); delay(277.7775); tone(tonePin, 220, 249.99975); delay(277.7775); tone(tonePin, 233, 749.99925); delay(833.3325); tone(tonePin, 195, 249.99975); delay(277.7775); tone(tonePin, 195, 999.999); delay(1111.11); tone(tonePin, 233, 499.9995); delay(555.555); tone(tonePin, 220, 374.999625); delay(416.66625); tone(tonePin, 195, 124.999875); delay(138.88875); tone(tonePin, 174, 499.9995); delay(555.555); tone(tonePin, 116, 374.999625); delay(416.66625); tone(tonePin, 116, 124.999875); delay(138.88875); tone(tonePin, 174, 999.999); delay(1111.11); tone(tonePin, 195, 499.9995); delay(555.555); tone(tonePin, 220, 499.9995); delay(555.555); tone(tonePin, 233, 1999.998); delay(2222.22); >void loop() <>
Заключение
Как видите, на Ардуино можно сыграть почти любую мелодию. Но на этом музыкальные возможности Ардуино не исчерпываются. И если подключить дополнительные модули, то можно проиграть и mp3 аудио файлы. В будущем мы попробуем это сделать.