const int buttonPins[25] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26}; // Adjust pins as needed
const int noteFrequencies[25] = {
261.63, 277.18, 293.66, 311.13, 329.63, 349.23, 369.99, 392.00, 415.30, 440.00, 466.16, 493.88, //C4, C#4, D4, D#4, E4, F4, F#4, G4, G#4, A4, A#4, B4
523.25, 554.37, 587.33, 622.25, 659.26, 698.46, 739.99, 783.99, 830.61, 880.00, 932.33, 987.77, 1046.50 //C5, C#5, D5, D#5, E5, F5, F#5, G5, G#5, A5, A#5, B5, C6
};
const int speakerPin = 28;
bool buttonStates[25] = {false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false};
void setup() {
for (int i = 0; i < 25; i++) {
pinMode(buttonPins[i], INPUT);
}
pinMode(speakerPin, OUTPUT);
}
void loop() {
bool anyButtonPressed = false;
// Read button states
for (int i = 0; i < 25; i++) {
buttonStates[i] = digitalRead(buttonPins[i]);
if (buttonStates[i]) {
anyButtonPressed = true;
}
}
// Generate combined sound
if (anyButtonPressed) {
int combinedFrequency = 0;
int activeButtons = 0;
for (int i = 0; i < 25; i++) {
if (buttonStates[i]) {
combinedFrequency += noteFrequencies[i];
activeButtons++;
}
}
if (activeButtons > 0) {
combinedFrequency /= activeButtons; // Average frequency for simplicity
tone(speakerPin, combinedFrequency);
}
} else {
noTone(speakerPin);
}
}