// Déclaration
const int potentiometerPin = A0; // potentiomètre
const int speakerPin = 8; // haut-parleur
const int ledPin = 9; // la LED
const int buttonPin = 2; // interrupteur
// Variables
bool soundOn = false; // État du son
int buttonState = 0; // État du bouton
int lastButtonState = 0;
void setup() {
pinMode(speakerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600); // Pour le débogage
}
void loop() {
// Lecture de l'état du bouton
buttonState = digitalRead(buttonPin);
// Si le bouton est pressé, on inverse l'état du son
if (buttonState == LOW && lastButtonState == HIGH) {
soundOn = !soundOn;
delay(200); // Anti-rebond
}
lastButtonState = buttonState;
// Lecture de la valeur du potentiomètre
int potValue = analogRead(potentiometerPin);
// Conversion de la valeur en fréquence (20 Hz à 2000 Hz)
int frequency = map(potValue, 0, 1023, 20, 2000);
// Conversion de la valeur en luminosité pour la LED
int brightness = map(potValue, 0, 1023, 0, 255);
// Contrôle du son et de la LED
if (soundOn) {
tone(speakerPin, frequency); // Émettre le son
analogWrite(ledPin, brightness); // Contrôler la luminosité de la LED
} else {
noTone(speakerPin); // Arrêter le son
digitalWrite(ledPin, LOW); // Éteindre la LED
}
// Debugging dans le moniteur série
Serial.print("Potentiomètre: ");
Serial.print(potValue);
Serial.print(" | Fréquence: ");
Serial.print(frequency);
Serial.print(" | Luminosité LED: ");
Serial.println(brightness);
delay(500); // délai pour stabiliser
}