// Pin setup
int pot1 = A0; // Potentiometer 1 (RGB + passive buzzer control)
int pot2 = A1; // Potentiometer 2 (Active buzzer control)
int R = 11; // RGB Red
int G = 9; // RGB Green
int B = 10; // RGB Blue
int passiveBuzzer = 6; // Passive buzzer pin
int activeBuzzer = 5; // Active buzzer pin
// Variables
int lastColorIndex = -1;
void setup() {
pinMode(R, OUTPUT);
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
pinMode(passiveBuzzer, OUTPUT);
pinMode(activeBuzzer, OUTPUT);
}
// Function to set RGB color
void setColor(int r, int g, int b) {
analogWrite(R, r);
analogWrite(G, g);
analogWrite(B, b);
}
void loop() {
// ----- Potentiometer 1: RGB + passive buzzer -----
int val1 = analogRead(pot1);
int colorIndex = map(val1, 0, 1023, 0, 4); // 5 color zones (0–4)
if (colorIndex != lastColorIndex) {
lastColorIndex = colorIndex;
switch (colorIndex) {
case 0: setColor(255, 0, 0); tone(passiveBuzzer, 262, 200); break; // Red + C4
case 1: setColor(0, 255, 0); tone(passiveBuzzer, 294, 200); break; // Green + D4
case 2: setColor(0, 0, 255); tone(passiveBuzzer, 330, 200); break; // Blue + E4
case 3: setColor(255, 255, 0); tone(passiveBuzzer, 349, 200); break; // Yellow + F4
case 4: setColor(255, 0, 255); tone(passiveBuzzer, 392, 200); break; // Magenta + G4
}
}
// ----- Potentiometer 2: Active buzzer -----
int val2 = analogRead(pot2);
int toneIndex = map(val2, 0, 1023, 0, 4); // 5 tones
switch (toneIndex) {
case 0: digitalWrite(activeBuzzer, HIGH); delay(50); digitalWrite(activeBuzzer, LOW); break;
case 1: tone(activeBuzzer, 440, 100); break; // A4
case 2: tone(activeBuzzer, 494, 100); break; // B4
case 3: tone(activeBuzzer, 523, 100); break; // C5
case 4: tone(activeBuzzer, 587, 100); break; // D5
}
delay(50);
}