#define NOTE_E5 659
#define NOTE_C5 523
#define NOTE_G5 784
#define NOTE_G4 392
#define NOTE_E4 330
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_AS4 466
#define NOTE_D5 587
#define NOTE_F5 698
#define NOTE_A5 880
#define REST 0
int RED_PIN = 13;
int GREEN_PIN = 11;
int BLUE_PIN = 10;
int BUZZER_PIN = 2;
struct NotaMusica{
int nota;
int duracao;
int cor[3];
};
NotaMusica musica[] ={
{NOTE_E5, 125, {1, 0, 0}},
{NOTE_E5, 125, {1, 1, 0}},
{REST, 125, {0, 1, 0}},
{NOTE_E5, 125, {0, 1, 1}},
{REST, 125, {0, 0, 1}},
{NOTE_C5, 125, {1, 0, 1}},
{NOTE_E5, 125, {1, 1, 1}},
{NOTE_G5, 250, {0, 1, 1}},
{REST, 250, {1, 0, 0}},
{NOTE_G4, 125, {1, 1, 0}},
{REST, 250, {0, 1, 0}},
{NOTE_C5, 250, {0, 1, 1}},
{NOTE_G4, 125, {0, 0, 1}},
{REST, 250, {1, 0, 1}},
{NOTE_E4, 250, {0, 1, 0}},
{NOTE_A4, 250, {1, 1, 1}},
{NOTE_B4, 125, {1, 0, 0}},
{NOTE_AS4, 250, {1, 1, 0}},
{NOTE_A4, 125, {0, 1, 0}},
{NOTE_G4, 125, {0, 1, 1}},
{NOTE_E5, 125, {1, 0, 0}},
{NOTE_G5, 250, {1, 1, 0}},
{NOTE_A5, 125, {0, 1, 0}},
{NOTE_F5, 125, {0, 0, 1}},
{NOTE_G5, 125, {1, 1, 0}},
{REST, 125, {0, 0, 0}},
{NOTE_E5, 250, {1, 0, 0}},
{NOTE_C5, 125, {1, 1, 0}},
{NOTE_D5, 125, {1, 1, 1}},
{NOTE_B4, 250, {1, 0, 1}}
};
int melody[] = {
NOTE_E5, NOTE_E5, REST, NOTE_E5, REST, NOTE_C5, NOTE_E5,
NOTE_G5, REST, NOTE_G4, REST,
NOTE_C5, NOTE_G4, REST, NOTE_E4,
NOTE_A4, NOTE_B4, NOTE_AS4, NOTE_A4,
NOTE_G4, NOTE_E5, NOTE_G5, NOTE_A5, NOTE_F5, NOTE_G5,
REST, NOTE_E5, NOTE_C5, NOTE_D5, NOTE_B4
};
int noteDurations[] = {
125, 125, 125, 125, 125, 125, 125,
250, 250, 125, 250,
250, 125, 250, 250,
250, 250, 125, 250,
125, 125, 125, 250, 125, 125,
125, 250, 125, 125, 250
};
int vetor[3] = {RED_PIN, GREEN_PIN, BLUE_PIN};
void setup() {
for(int i = 0; i < 3; i++) {
pinMode(vetor[i], OUTPUT);
}
pinMode(BUZZER_PIN, OUTPUT);
}
void loop() {
int tamanho = sizeof(musica) / sizeof(musica[0]);
for (int i = 0; i < tamanho; i++) {
tocaMusica(&musica[i]);
}
delay(2000);
}
void tocaMusica(NotaMusica *musica){
tone(BUZZER_PIN, musica->nota);
delay(musica->duracao);
digitalWrite(RED_PIN, musica->cor[0]);
digitalWrite(GREEN_PIN, musica->cor[1]);
digitalWrite(BLUE_PIN, musica->cor[2]);
noTone(BUZZER_PIN);
}