// Pin Definitions
int speaker = 11; // Digital Pin 11 for Buzzer (Speaker)
int potentiometerPin = A0; // Analog Pin A0 for Potentiometer
// LED Pins
int led_blue = 2; // Digital Pin 2 (Blue LED)
int led_green = 3; // Digital Pin 3 (Green LED)
int led_red = 4; // Digital Pin 4 (Red LED)
// Frequency Range for the Buzzer
int minFrequency = 30000; // Minimum frequency (500 Hz)
int maxFrequency = 60000; // Maximum frequency (5000 Hz)
// RGB Indicator setup
int withRGB = 1; // 1 = true (RGB LEDs active), 0 = false
void setup() {
// Set up the LEDs and speaker as OUTPUTs
pinMode(speaker, OUTPUT);
pinMode(led_blue, OUTPUT);
pinMode(led_green, OUTPUT);
pinMode(led_red, OUTPUT);
// Run initialization LED test if withRGB is enabled
if (withRGB == 1) {
initTesting();
} else {
speakerTest();
}
}
void loop() {
// Read the potentiometer value (0 to 1023)
int potValue = analogRead(potentiometerPin);
// Map the potentiometer value to the frequency range (500Hz to 5000Hz)
int frequency = map(potValue, 0, 1023, minFrequency, maxFrequency);
// Set the buzzer tone based on the mapped frequency
tone(speaker, frequency);
// Handle the RGB indicators (blinking if enabled)
if (withRGB == 1) {
blinkyIndicator();
}
}
// Function to test the speaker with different tones
void speakerTest() {
tone(speaker, 600);
delay(1000);
tone(speaker, 700);
delay(1000);
}
// Function to perform an initial test with the RGB LEDs
void initTesting() {
digitalWrite(led_blue, HIGH);
delay(100);
digitalWrite(led_blue, LOW);
delay(100);
digitalWrite(led_green, HIGH);
delay(100);
digitalWrite(led_green, LOW);
delay(100);
digitalWrite(led_red, HIGH);
delay(100);
digitalWrite(led_red, LOW);
delay(500);
digitalWrite(led_blue, HIGH);
delay(2000);
tone(speaker, 600); // Test sound
digitalWrite(led_blue, LOW);
delay(1000);
digitalWrite(led_green, HIGH);
delay(2000);
tone(speaker, 700); // Last test sound
digitalWrite(led_green, LOW);
delay(50);
digitalWrite(led_green, HIGH);
delay(50);
digitalWrite(led_green, LOW);
delay(50);
digitalWrite(led_green, HIGH);
delay(50);
digitalWrite(led_green, LOW);
}
// Function to blink the RGB LEDs for feedback
void blinkyIndicator() {
// Blue LED blinking
digitalWrite(led_blue, HIGH);
delay(100);
digitalWrite(led_blue, LOW);
delay(1000);
// Green LED blinking
digitalWrite(led_green, HIGH);
delay(50);
digitalWrite(led_green, LOW);
delay(20);
digitalWrite(led_green, HIGH);
delay(50);
digitalWrite(led_green, LOW);
delay(1000);
// Red LED blinking
digitalWrite(led_red, HIGH);
delay(50);
digitalWrite(led_red, LOW);
delay(5000);
}