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


// Частоты нот
#define NOTE_A4  440
#define NOTE_B4  494
#define NOTE_C5  523
#define NOTE_D5  587
#define NOTE_E5  659
#define NOTE_F5  698
#define NOTE_G5  784
#define NOTE_GS5 831
#define NOTE_A5  880
#define NOTE_B5  988
#define NOTE_C6  1047

const int buzzer = 8;

// Мелодия главной темы Андфайн
int melody[] = {
  NOTE_A4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_A4, NOTE_C5, NOTE_D5, NOTE_E5,
  NOTE_F5, NOTE_E5, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_C5, NOTE_D5, NOTE_E5,
  
  NOTE_A4, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_A4, NOTE_C5, NOTE_D5, NOTE_E5,
  NOTE_G5, NOTE_F5, NOTE_E5, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_A4, NOTE_A4
};

// Длительность каждой ноты (4 = четверть, 8 = восьмая)
int noteDurations[] = {
  8, 8, 8, 8, 8, 8, 8, 8,
  4, 8, 8, 8, 8, 8, 8, 4,
  
  8, 8, 8, 8, 8, 8, 8, 8,
  4, 8, 8, 8, 8, 8, 4, 2
};

void setup() {
  pinMode(buzzer, OUTPUT);
}

void loop() {
  int size = sizeof(melody) / sizeof(melody[0]);

  for (int thisNote = 0; thisNote < size; thisNote++) {
    // Вычисляем длительность ноты в миллисекундах
    int noteDuration = 1000 / noteDurations[thisNote];
    
    tone(buzzer, melody[thisNote], noteDuration);

    // Пауза между нотами для четкого звучания
    int pauseBetweenNotes = noteDuration * 1.30;
    delay(pauseBetweenNotes);
    
    // Останавливаем звук перед следующей нотой
    noTone(buzzer);
  }

  delay(3000); // Пауза 3 секунды перед повтором
}