#include <Arduino.h>
#include "pitches.h"
// #define BUZZER_PIN 15 // Chân nối loa (có thể thay đổi)
#define BUZZER_PIN 2
// int melody[] = {
// G4, 0, G4, A4, G4, C5, B4, // "Happy Birthday to You"
// G4, 0, G4, A4, G4, D5, C5, // "Happy Birthday to You"
// G4, 0, G4, G5, E5, C5, B4, A4, // "Happy Birthday dear [Name]"
// F5, 0, F5, E5, C5, D5, C5 // "Happy Birthday to You"
// };
// int noteDurations[] = {
// 8, 16, 8, 4, 4, 4, 4, // Độ dài nốt nhạc cho từng nốt
// 8, 16, 8, 4, 4, 4, 4,
// 8, 16, 8, 4, 4, 4, 4, 4,
// 8, 16, 8, 4, 4, 4, 2
// };
// 千本桜 Senbonzakura "One Thousand Cherry Trees"
int melody[] = {
G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, F6, E6, F6, E6, D6, C6, G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, G6, A6, C7, F7, E7, F7, E7, D7, C7, A6,
G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, F6, E6, F6, E6, D6, C6, D6, D6, A6, D6, F6, E6, D6, C6, D6, B5, C6, A5, G5, F5, D5,
G5, A5, D5, C5, D5, C5, G5, A5, D5, C5, D5, C5, G5, A5, D5, C5, D5, C5, F5, E5, F5, E5, D5, C5, G5, A5, D5, C5, D5, C5, G5, A5, D5, C5, D5, C5,
G5, A5, C6, F6, E6, F6, E6, D6, C6, A5, G5, A5, D5, C5, D5, C5, G5, A5, D5, C5, D5, C5, G5, A5, D5, C5, D5, C5, F5, E5, F5, E5, D5, C5, D5, D5, A4, D5, F5, E5, D5, C5,
D6, D6, C6, D6, F5, D5, D5, C5, D5, F5, F5, G5, D5, D5, C5, D5, C5, A4, C5, D5, D5, C5, D5, F5, G5, A5, A5, G5, A5, G5, F5, D5,
D5, D5, D5, C5, C5, D5, F5, G5, D5, D5, D5, C5, D5, C5, C5, A4, D5, D5, D5, C5, C5, D5, F5, G5, A5, G5, A5, G5, F5, D5, F5, E5, D5, C5,
C5, C5, D5, A4, G4, A4, A4, C5, D5, G5, E5, F5, E5, C5, D5, F5, E5, D5, C5,
C5, C5, D5, A4, G4, A4, A4, C5, D5, D5, D5, F5, G5, E5, D5, F5, G5, G5, A5, A5, A5,
C6, D6, G5, F5, A5, D5, F5, G5, G5, A5, A5, A5, AS5, A5, G5, F5, F5, D5, F5, G5, G5, A5, A5, A5, C6, D6, G5, F5, A5, D5, F5,
AS5, A5, G5, F5, G5, A5, E5, C5, D5, D5, F5, G5, G5, A5, A5, A5, C6, D6, G5, F5, A5, D5, F5, G5, G5, A5, A5, A5, AS5, A5, G5, F5, F5, D5, F5, G5, G5, A5, A5, A5, C6, D6, G5, F5, A5, D5, F5, AS5, A5, G5, F5, G5, F5, A5, C6, D6, G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6,
G6, A6, D6, C6, D6, C6, F6, E6, F6, E6, D6, C6, G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, G6, A6, C7, F7, E7, F7, E7, D7, C7, A6,
G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, G6, A6, D6, C6, D6, C6, F6, E6, F6, E6, D6, C6, G6, F6, A6, C7, D7, C7, A6, G6, D6, F6, G6, A6,
D6, D6, C6, D6, D5, D5, D5, C5, D5, F5, F5, G5, D5, D5, D5, C5, D5, C5, A4, C5, D5, D5, C5, D5, F5, G5, A5, A5, G5, A5, G5, F5, D5,
D5, D5, D5, C5, C5, D5, F5, G5, D5, D5, D5, C5, D5, C5, C5, A4, D5, D5, D5, C5, C5, D5, F5, G5, A5, G5, A5, G5, F5, D5, F5, E5, D5, C5,
C5, C5, D5, A4, G4, A4, A4, C5, D5, G5, E5, F5, E5, C5, D5, F5, E5, D5, C5,
C5, C5, D5, A4, G4, A4, A4, C5, D5, D5, D5, F5, G5, E5, D5, F5, G5, G5, A5, A5, A5,
C6, D6, G5, F5, A5, D5, F5, G5, G5, A5, A5, A5, AS5, A5, G5, F5, F5, D5, F5, G5, G5, A5, A5, A5, C6, D6, G5, F5, A5, D5, F5,
AS5, A5, G5, F5, G5, A5, E5, C5, D5, D5, F5, G5, G5, A5, A5, A5, C6, D6, G5, F5, A5, D5, F5, G5, G5, A5, A5, A5, AS5, A5, G5, F5, F5, D5, F5, G5, G5, A5, A5, A5, C6, D6, G5, F5, A5, D5, F5, AS5, A5, G5, F5, G5, F5, A5, C6, D6};
int noteDurations[] = {
4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 8, 16, 16, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4,
4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 8, 16, 16, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4,
4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 8, 16, 16, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8,
4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 8, 16, 16, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 2, 4, 2, 3, 8, 4, 4, 4, 4, 2, 3, 8, 4, 4, 4, 4, 2, 3, 8, 4, 4, 4, 4, 2, 4, 8, 8, 2, 4,
3, 8, 3, 8, 4, 4, 4, 4, 3, 8, 4, 6, 4, 4, 4, 4, 3, 8, 3, 8, 4, 4, 4, 4, 2, 4, 8, 8, 2, 2, 2, 2, 2, 2,
4, 8, 8, 4, 4, 1, 4, 4, 2, 2, 2, 2, 4, 4, 1, 2, 2, 2, 2,
4, 8, 8, 4, 4, 2, 4, 4, 4, 2, 4, 2, 2, 1, 4, 4, 3, 3, 4, 2, 4,
4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4,
2, 2, 2, 2, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 1, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8,
4, 4, 8, 8, 8, 8, 4, 8, 16, 16, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 4, 4,
4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 4, 8, 8, 8, 8, 4, 8, 16, 16, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4,
4, 4, 4, 1, 3, 8, 3, 8, 4, 4, 4, 4, 3, 8, 3, 8, 4, 4, 4, 4, 2, 3, 8, 4, 4, 4, 4, 2, 4, 8, 8, 2, 2,
3, 8, 3, 8, 4, 4, 4, 4, 3, 8, 3, 8, 4, 4, 4, 4, 3, 8, 3, 8, 4, 4, 4, 4, 2, 4, 8, 8, 2, 2, 2, 2, 2, 2,
4, 8, 8, 4, 4, 1, 4, 4, 2, 2, 2, 2, 4, 4, 1, 2, 2, 2, 2,
4, 8, 8, 4, 4, 2, 4, 4, 4, 2, 4, 2, 2, 1, 4, 4, 3, 3, 4, 2, 4,
4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4,
2, 2, 2, 2, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 3, 3, 4, 2, 4, 4, 4, 4, 4, 2, 4, 4, 2, 2, 2, 2, 4, 4, 4, 4, 1};
void setup()
{
pinMode(BUZZER_PIN, OUTPUT);
}
void loop()
{
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++)
{
int noteDuration = 1000 / noteDurations[i];
tone(BUZZER_PIN, melody[i], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
noTone(BUZZER_PIN); // Dừng nốt nhạc trước khi phát nốt kế tiếp
}
delay(2000);
}