Проигрывание мелодии на Arduino с помощью пищалки (обучение работе с Proteus)

Данная статья написана специально для обучения работе с симулятором Proteus и показывает, как использовать Arduino для генерации звуковых сигналов и мелодий без подключения реального оборудования.
В качестве примера используется пьезоизлучатель (пищалка), подключённый к цифровому пину 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 — мигание светодиода

📁 Скачать примеры