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


#define BUZZER_PIN 4
#define BPM 110

float note_len = 60000.0 * 4.0 / BPM;

#define A4  440
#define B4  494
#define C5  523
#define D5  587
#define E5  659
#define F5  698
#define G5  784
#define A5  880
#define PAUSE 0

int freqs[] = {
  E5, A5, A5, B4, C5, D5, C5, B4, A4,
  A4, C5, C5, C5, B4, A4, G5, A5, G5, E5,
  D5, E5, D5, C5, B4, A4,
  A4, C5, C5, C5, B4, A4, G5, A5, G5, E5,
  D5, E5, D5, C5, B4, A4, PAUSE
};

int durations[] = {
  8, 8, 8, 8, 8, 8, 8, 8, 4,
  4, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 4,
  4, 8, 8, 8, 8, 8, 8, 8, 8, 8,
  8, 8, 8, 8, 8, 4, 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++) {
    int duration = note_len / durations[i];
    tone(BUZZER_PIN, freqs[i], duration);
    if (freqs[i] == 0) {
      delay(duration);
    } else {
      delay(duration * 1.3);
    }
  }
  delay(3000);
}