#include "pitches.h"
#define SPEAKER_PIN 8
#define RED_PIN 2
#define GREEN_PIN 3
#define BLUE_PIN 13
const uint8_t buttonPins[] = { 12, 11, 10, 9, 7, 6, 5, 4 };
const int buttonTones[] = {
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
};
const int numTones = sizeof(buttonPins) / sizeof(buttonPins[0]);
void setup() {
for (uint8_t i = 0; i < numTones; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
pinMode(SPEAKER_PIN, OUTPUT);
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop() {
int pitch = 0;
for (uint8_t i = 0; i < numTones; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
pitch = buttonTones[i];
// Change RGB color based on button pressed
changeColor(i);
}
}
if (pitch) {
tone(SPEAKER_PIN, pitch);
} else {
noTone(SPEAKER_PIN);
}
}
void changeColor(int buttonIndex) {
switch (buttonIndex) {
case 0: // C button, set color to Red
setColor(255, 0, 0);
break;
case 1: // D button, set color to Yellow
setColor(255, 255, 0);
break;
case 2: // E button, set color to Green
setColor(0, 255, 0);
break;
case 3: // F button, set color to Blue
setColor(0, 0, 255);
break;
case 4: // G button, set color to White
setColor(255, 255, 255);
break;
case 5: // A button, set color to Black
setColor(0, 0, 0);
break;
case 6: // B button, set color to Gray
setColor(128, 128, 128);
break;
case 7: // C button (higher octave), set color to Dark Green
setColor(0, 100, 0);
break;
default:
break;
}
}
void setColor(int red, int green, int blue) {
analogWrite(RED_PIN, red);
analogWrite(GREEN_PIN, green);
analogWrite(BLUE_PIN, blue);
}