Загрузка данных


// Определяем пищ пьезоизлучателя
#define BUZZER_PIN 4

// Темп в ударах в минуту (Beats Per Minute)
#define BPM 70

// Длительность звучания ноты в мс. За эталон берём четвертую ноту,
// поэтому умножим минуту на 4, чтобы потом разделить на 4
float note_len = 60000 * 4 / BPM;
int duration = 0;

// Задаём частоты нот
int freqs[] = {440, 523, 0, 523, 440, 0, 587, 523, 587, 523, 587, 523, 587, 523, 587, 659, 0};
int durations[] = {16, 5, 4, 16, 5, 4, 16, 16, 16, 16, 16, 16, 16, 16, 16, 5, 4};

// Определяем количество нот
int melody_size = sizeof(freqs) / sizeof(freqs[0]);

void setup()
{
  // Настраиваем пин пьезоизлучателя как выход
  pinMode(BUZZER_PIN, OUTPUT);
}

void loop()
{
  // Проходимся по каждой ноте в мелодии
  for (int i = 0; i < melody_size; i++)
  {
    duration = note_len / durations[i];
    // Играем частоту freqs[i] длительностью duration
    tone(BUZZER_PIN, freqs[i], duration);
    delay(duration);
  }
}