#14Mittel

Frequenzeinstellung mit Buzzer

4.6(67)
109 abgeschlossen
Frequenzeinstellung mit Buzzer
Interaktives Projekt mit 4 Tasten zum Erhöhen und Verringern der Frequenz des Summers und zum Ein- und Ausschalten. Lehrt das Lesen mehrerer Tasten und die variable Steuerung.

Video

Schaltplan

Frequenzeinstellung mit Buzzer - Circuit

Quellcode

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

Warum werden für Taster 220-Ω-Widerstände verwendet?▾

In diesem Projekt werden die Tasten mit INPUT_PULLUP oder Pull-Down ausgelesen; die Vorwiderstände schützen den Pin vor möglichen Kurzschlüssen. Bei der Pull-Down-Konfiguration wird in der Regel ein Wert von 10 kΩ gewählt; die Einstellung von „pinMode“ im Code muss entsprechend der Schaltungsanordnung angepasst werden.

In welchem Bereich sollte die Frequenz geändert werden?▾

Das menschliche Ohr nimmt Frequenzen im Bereich von etwa 20 Hz bis 20 kHz wahr, doch kleine Summer geben Töne am besten im Bereich von 500 bis 5000 Hz wieder. Wenn man die Schrittweite für die Anhebung bzw. Absenkung auf 50 bis 100 Hz einstellt, wird die Veränderung hörbar.

Wenn ich die Taste gedrückt halte, ändert sich die Frequenz sehr schnell – wie kann ich das verlangsamen?▾

Wenn die Frequenz bei jedem Zyklus geändert wird, führt das Gedrückthalten zu einem sehr schnellen Anstieg. Ändere die Frequenz entweder bei jedem Tastendruck einmal (Kantenerkennung) oder füge nach der Änderung eine kurze Wartezeit ein.

Wie kann ich verhindern, dass die Frequenz die Grenzwerte überschreitet?▾

Mit `constrain(Frequenz, 100, 5000)` kannst du den Wert innerhalb eines bestimmten Bereichs halten. So wird verhindert, dass die Frequenz zu tief oder so hoch wird, dass sie nicht mehr hörbar ist.

Frequenzeinstellung mit Buzzer | BlueGrays