
4 buton ile buzzer'ın frekansını artırıp azaltabilen, açıp kapatabilen interaktif proje. Çoklu buton okuma ve değişken kontrolünü öğretir.
Video
Devre Şeması

Kaynak Kodu
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}Sıkça Sorulanlar
Butonlar için neden 220 Ω direnç kullanılıyor?▾
Projede butonlar INPUT_PULLUP ya da pull-down ile okunur; seri dirençler pini olası kısa devrelere karşı korur. Pull-down düzeninde genelde 10 kΩ tercih edilir; devredeki bağlantı şekline göre koddaki pinMode ayarı bunlarla uyumlu olmalı.
Frekans hangi aralıkta değiştirilmeli?▾
İnsan kulağı yaklaşık 20 Hz – 20 kHz arasını duyar ama küçük buzzer'lar en iyi 500–5000 Hz arasında ses verir. Artırma/azaltma adımını 50–100 Hz seçmek değişimi duyulabilir kılar.
Butona basılı tutunca frekans hızla değişiyor, nasıl yavaşlatırım?▾
Her döngüde frekans değiştirilirse basılı tutmak çok hızlı artışa yol açar. Ya her basışta bir kez değiştir (kenar algılama) ya da değişiklikten sonra kısa bir bekleme ekle.
Frekansın sınırların dışına çıkmasını nasıl engellerim?▾
constrain(frekans, 100, 5000) ile değeri belirli aralıkta tutabilirsin. Böylece çok düşük ya da duyulmayacak kadar yüksek frekanslara inilmez.
