#14Intermédiaire

Réglage de la fréquence avec buzzer

4.6(67)
109 terminé
Réglage de la fréquence avec buzzer
Projet interactif avec 4 boutons qui permettent d'augmenter et de diminuer la fréquence du buzzer, de l'allumer et de l'éteindre. Enseigne la lecture de plusieurs boutons et le contrôle variable.

Vidéo

Schéma du circuit

Réglage de la fréquence avec buzzer - Circuit

Code source

Arduino (C++)
1int buzzerPin = 8;
2int btnOn = 7;
3int btnOff = 6;
4int btnIncrease = 5;
5int btnDecrease = 4;
6int frequency = 300;
7int state = 0;
8
9void setup() {
10  pinMode(btnOn, INPUT);
11  pinMode(btnOff, INPUT);
12  pinMode(btnIncrease, INPUT);
13  pinMode(btnDecrease, INPUT);
14}
15
16void loop() {  
17  if (digitalRead(btnOn)) {
18    state = 1;
19  }
20  
21  if (digitalRead(btnOff)) {
22    state = 0;
23  }
24  
25  if (digitalRead(btnIncrease)) {
26    frequency = frequency + 50;
27    delay(100);
28  }
29  
30  if (digitalRead(btnDecrease)) {
31    frequency = frequency - 50;
32    delay(100);
33  }
34  
35  if (state == 1) {
36    tone(buzzerPin, frequency);
37  } else {
38    noTone(buzzerPin);
39  }
40}

FAQ

Pourquoi utilise-t-on une résistance de 220 Ω pour les boutons ?▾

Dans ce projet, les boutons sont lus en mode INPUT_PULLUP ou pull-down ; les résistances en série protègent la broche contre d'éventuels courts-circuits. En configuration pull-down, on opte généralement pour une valeur de 10 kΩ ; le paramètre pinMode dans le code doit être adapté en fonction du type de connexion utilisé dans le circuit.

Dans quelle plage la fréquence doit-elle être modifiée ?▾

L'oreille humaine perçoit les fréquences comprises entre environ 20 Hz et 20 kHz, mais les petits buzzers émettent un son optimal entre 500 et 5 000 Hz. En choisissant un pas d'augmentation ou de diminution de 50 à 100 Hz, le changement devient perceptible.

Lorsque je maintiens le bouton enfoncé, la fréquence change très rapidement. Comment puis-je ralentir ce changement ?▾

Si la fréquence est modifiée à chaque cycle, le fait de maintenir la touche enfoncée entraîne une augmentation très rapide. Soit modifiez-la une seule fois à chaque pression (détection des bords), soit ajoutez un court temps d'attente après chaque modification.

Comment puis-je empêcher la fréquence de dépasser les limites ?▾

Avec la fonction `constrain(fréquence, 100, 5000)`, tu peux maintenir la valeur dans une plage donnée. Ainsi, on évite d'atteindre des fréquences trop basses ou trop hautes pour être audibles.

Réglage de la fréquence avec buzzer | BlueGrays