Dokunmatik Mini Piyano
Proje Amacı
5 farklı butona basıldığında farklı nota frekanslarını (262-392 Hz arası, Do-Sol) buzzer ile çalan basit bir müzik aleti.
Gerekli Malzemeler
- Arduino Uno
- 5x Buton
- 5x 10kΩ direnç (veya INPUT_PULLUP)
- Pasif Buzzer
- Breadboard
Gerekli Kütüphaneler
Gerekli ek kütüphane yok, tone() Arduino IDE'de yerleşik gelir.
Pin Bağlantıları
| Bileşen Pini | Bağlantı |
|---|---|
| Buton 1 (Do) | D2 |
| Buton 2 (Re) | D3 |
| Buton 3 (Mi) | D4 |
| Buton 4 (Fa) | D5 |
| Buton 5 (Sol) | D6 |
| Buzzer (+) | D9 |
Devre Şeması
Arduino Kodu
| 1 | const int butonlar[5] = {2,3,4,5,6}; |
| 2 | const int notalar[5] = {262,294,330,349,392}; |
| 3 | const int buzzer = 9; |
| 4 | |
| 5 | void setup(){ |
| 6 | for(int i=0;i<5;i++) pinMode(butonlar[i], INPUT_PULLUP); |
| 7 | } |
| 8 | |
| 9 | void loop(){ |
| 10 | for(int i=0;i<5;i++){ |
| 11 | if(digitalRead(butonlar[i]) == LOW){ |
| 12 | tone(buzzer, notalar[i]); |
| 13 | return; |
| 14 | } |
| 15 | } |
| 16 | noTone(buzzer); |
| 17 | } |
Çalışma Açıklaması
INPUT_PULLUP kullanıldığı için harici direnç şart değildir, butonun bir ucu pine diğer ucu GND'ye bağlanır. Pasif buzzer kullanılmalı, aktif buzzer sabit ton üretir ve farklı notalar çalamaz.
Test Bilgisi
Devreyi kurun, kodu yükleyin. Her butona tek tek basın; her birinin farklı bir nota sesi çıkardığını doğrulayın.
Olası Sorunlar ve Çözümleri
Bazı tuşlar ses çıkarmıyorsa: o butonun bağlantısını ve INPUT_PULLUP modunun doğru ayarlandığını kontrol edin. Sesler çok kısık/net değilse: pasif buzzer yerine yanlışlıkla aktif buzzer takılmış olabilir. Birden fazla tuşa aynı anda basınca beklenmedik ses çıkıyorsa: kod sadece ilk algılanan tuşu çaldığı için bu normaldir, çoklu nota (akor) için kod genişletilmelidir.
Alternatif Çözümler
5 tuş yerine 8 tuşla tam bir oktav (Do-Do, 262-523 Hz) çalınabilir. Dokunmatik sensörler (TTP223, proje #28'deki gibi) kullanılarak fiziksel buton yerine dokunmatik tuşlar yapılabilir.
Benzer Projeler
LDR Otomatik Lamba
Ortam ışığı belli bir eşiğin altına düşünce bir LED'i (gerçek uygulamada bir röle üzerinden lambayı) otomatik yakar, ışık geri gelince söndürür — sokak lambalarının kullandığı fotosel mantığının ta kendisi.
HC-SR04 Mesafe Alarmı
Ultrasonik ses dalgalarıyla önündeki nesneye olan mesafeyi ölçüp, mesafe 20 cm'nin altına düştüğünde buzzer ile sesli alarm verir. Araçlardaki park sensörü de birebir aynı ölçüm yöntemini (ses dalgasının gidiş-dönüş süresini) kullanır.
Yağmur Sensörü
Balkon kapısını açık unutup yağmura yakalanma sorununa karşı: yağış algılandığında LED ile görsel uyarı verir, sensör değerini de Seri Port'a yazar.