// Определяем пищ пьезоизлучателя
#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);
}
}