Проигрывание мелодии на Arduino с помощью пищалки (обучение работе с Proteus)
Данная статья написана специально для обучения работе с симулятором Proteus и показывает, как использовать Arduino для генерации звуковых сигналов и мелодий без подключения реального оборудования.
В качестве примера используется пьезоизлучатель (пищалка), подключённый к цифровому пину Arduino.
Проект основан на стандартном примере Arduino Melody и отлично подходит для начинающих, так как демонстрирует сразу несколько важных понятий:
- генерацию звука с помощью функции tone();
- использование массивов для хранения нот и длительностей;
- работу с временными задержками;
- запуск и тестирование звуковых проектов в Proteus.
Назначение проекта
Цель проекта — научиться проигрывать простую мелодию на Arduino, используя цифровой выход и пьезоизлучатель. Arduino последовательно воспроизводит набор нот с разной длительностью, формируя узнаваемую музыкальную последовательность.
Подобный подход применяется в реальных устройствах:
- звуковые оповещения и сигнализация;
- индикация ошибок и событий;
- игрушки и обучающие проекты;
- прототипы музыкальных устройств.
Необходимые компоненты
- Arduino UNO;
- Пьезоизлучатель (buzzer, speaker);
- Proteus 8 или 9 с установленной Arduino-библиотекой;
- Файл pitches.h (таблица частот нот).
Подключение пищалки
Подключение максимально простое:
- положительный вывод пищалки → цифровой пин 8 Arduino;
- отрицательный вывод → GND.
В Proteus можно использовать компонент BUZZER или SPEAKER. Реальная полярность для пьезоэлемента не критична, но рекомендуется соблюдать стандартное подключение.
Принцип работы программы
В начале скетча подключается файл pitches.h. В нём содержатся определения частот музыкальных нот (NOTE_C4, NOTE_G3 и т.д.). Это позволяет работать с нотами в удобном и наглядном виде, а не с числовыми значениями частот.
Далее создаются два массива:
- melody[] — содержит последовательность нот;
- noteDurations[] — задаёт длительность каждой ноты.
В функции setup() используется цикл for, который поочерёдно:
- вычисляет длительность ноты;
- воспроизводит звук с помощью tone();
- делает паузу между нотами;
- останавливает звук функцией noTone().
Функция loop() в данном примере не используется для логики мелодии — мелодия проигрывается один раз при запуске. Небольшое переключение пина оставлено как формальность и не влияет на звук.
Arduino-скетч
// Пример проигрывания мелодии на Arduino
// Используется пьезоизлучатель на цифровом пине 8
#include "pitches.h"
// Ноты мелодии
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3,
NOTE_G3, 0, NOTE_B3, NOTE_C4
};
// Длительности нот
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4
};
void setup() {
// Проигрываем мелодию
for (int thisNote = 0; thisNote < 8; thisNote++) {
// Расчёт длительности ноты
int noteDuration = 1000 / noteDurations[thisNote];
tone(8, melody[thisNote], noteDuration);
// Пауза между нотами
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// Останавливаем звук
noTone(8);
}
}
void loop() {
// Основной цикл не используется
}
Запуск проекта в Proteus
Чтобы протестировать проект в Proteus:
- откройте файл проекта .pdsprj;
- убедитесь, что в свойствах Arduino указан путь к файлу .hex;
- подключите пищалку к пину 8;
- нажмите Run Simulation;
- после старта вы услышите проигрывание мелодии.
Важно: Arduino к компьютеру подключать не нужно — звук генерируется полностью в симуляции Proteus.
Если что-то не работает
Если у вас возникают сложности с запуском проекта или вы не уверены в базовых шагах, рекомендуется сначала пройти вводный урок.
Подробно разобран первый проект в Proteus:
Первый проект в Proteus — мигание светодиода