#include "pitches.h"
int buzzerpin = 8;
int buttonPinTune1 = 2;
int buttonPinTune2 = 3;
volatile int buttonState;
#define NUMNOTES1 26
#define NUMNOTES2 30
const int beat_length = 250;
const int notes1 [NUMNOTES1] =
{
NOTE_E5, NOTE_E5, NOTE_E5,
NOTE_E5, NOTE_E5, NOTE_E5,
NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5,
NOTE_E5,
NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5,
NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5,
NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5,
NOTE_D5, NOTE_G5};
const int beats1 [NUMNOTES1] = {
1, 1, 2,
1, 1, 2,
1, 1, 1, 1,
4,
1, 1, 1, 1,
1, 1, 1, 1, 1,
1, 1, 1, 1,
2, 2 };
const int notes2 [NUMNOTES2] = // a 0 represents a rest
{
NOTE_B3,
NOTE_F4, NOTE_F4, NOTE_G4, NOTE_F4, NOTE_E4,
NOTE_D4, NOTE_D4, NOTE_D4,
NOTE_G4, NOTE_G4, NOTE_A4, NOTE_G4, NOTE_F4,
NOTE_E4, NOTE_E4, NOTE_E4,
NOTE_A4, NOTE_A4, NOTE_B4, NOTE_A4, NOTE_G4,
NOTE_F4, NOTE_D4, NOTE_B3, NOTE_B3,
NOTE_D4, NOTE_G4, NOTE_E4,
NOTE_F4};
const int beats2 [NUMNOTES2] = {
2,
2, 1, 1, 1, 1,
2, 2, 2,
2, 1, 1, 1, 1,
2, 2, 2,
2, 1, 1, 1, 1,
2, 2, 1, 1,
2, 2, 2,
4 };
void setup()
{
pinMode(buzzerpin, OUTPUT);
pinMode(buttonPinTune1, INPUT);
pinMode(buttonPinTune2, INPUT);
attachInterrupt(digitalPinToInterrupt(buttonPinTune1), buttonInterrupt1, FALLING);
attachInterrupt(digitalPinToInterrupt(buttonPinTune2), buttonInterrupt2, FALLING);
}
void loop()
{
if (digitalRead(2) == HIGH){
for (int i = 0; i < NUMNOTES1; i++) {
if (notes1[i] == 0) {
delay(beats1[i] * beat_length); // rest
}
else {
ourTone(notes1[i], beats1[i] * beat_length);
}
}
}
if (digitalRead(3) == HIGH){
for (int i = 0; i < NUMNOTES2; i++) {
if (notes2[i] == 0) {
delay(beats2[i] * beat_length); // rest
}
else {
ourTone(notes2[i], beats2[i] * beat_length);
}
}
}
}
void buttonInterrupt1() {
int buttonState = digitalRead(2);
if (buttonState == HIGH) {
for (int i = 0; i < NUMNOTES1; i++) {
if (notes1[i] == 0) {
delay(beats1[i] * beat_length); // rest
}
else {
ourTone(notes1[i], beats1[i] * beat_length);
}
}
}
}
void buttonInterrupt2() {
int buttonState = digitalRead(3);
if (buttonState == HIGH) {
for (int i = 0; i < NUMNOTES2; i++) {
if (notes2[i] == 0) {
delay(beats2[i] * beat_length); // rest
}
else {
ourTone(notes2[i], beats2[i] * beat_length);
}
}
}
}
void ourTone(int freq, int duration)
{
tone(buzzerpin, freq, duration);
delay(duration);
}