IR Kumanda ile Çoklu Cihaz Kontrolü
Proje Amacı
Standart bir IR TV kumandasının tuşlarını okuyup farklı tuşlarla farklı LED'leri kontrol eder — her kumandanın kod seti farklı olduğundan bu projede kendi kumandanızın hex kodlarını önce Seri Monitör'den okuyup koda girmeniz gerekir.
Gerekli Malzemeler
- Arduino Uno
- IR Alıcı Modülü (TSOP1738 veya benzeri)
- IR Kumanda
- 3x LED
- 3x 220Ω direnç
Gerekli Kütüphaneler
IRremote (v4.x) — Kütüphane Yöneticisi'nden kurulmalı. ⚠ Bu kod IRremote v4'ün güncel API'sini (IrReceiver nesnesi, #include <IRremote.hpp>) kullanır; kütüphanenin v2.x/v3.x sürümleriyle uyumsuzdur, kurulumda güncel sürümü seçtiğinizden emin olun.
Pin Bağlantıları
| Bileşen Pini | Bağlantı |
|---|---|
| IR Alıcı VCC | 5V |
| IR Alıcı GND | GND |
| IR Alıcı OUT | D11 |
| LED 1 Anot (220Ω üzerinden) | D9 |
| LED 2 Anot (220Ω üzerinden) | D10 |
| LED 3 Anot (220Ω üzerinden) | D8 |
Devre Şeması
Arduino Kodu
| 1 | #include <IRremote.hpp> |
| 2 | const int irPin=11; |
| 3 | const int led1=9, led2=10, led3=8; |
| 4 | |
| 5 | void setup(){ |
| 6 | IrReceiver.begin(irPin, ENABLE_LED_FEEDBACK); |
| 7 | pinMode(led1,OUTPUT); pinMode(led2,OUTPUT); pinMode(led3,OUTPUT); |
| 8 | Serial.begin(9600); |
| 9 | } |
| 10 | |
| 11 | void loop(){ |
| 12 | if(IrReceiver.decode()){ |
| 13 | unsigned long kod = IrReceiver.decodedIRData.decodedRawData; |
| 14 | Serial.println(kod, HEX); |
| 15 | |
| 16 | if(kod == 0xF20DFFA25D) digitalWrite(led1, !digitalRead(led1)); // örnek kod, kumandanıza göre değişir |
| 17 | if(kod == 0xF20DFF629D) digitalWrite(led2, !digitalRead(led2)); |
| 18 | if(kod == 0xF20DFFE21D) digitalWrite(led3, !digitalRead(led3)); |
| 19 | |
| 20 | IrReceiver.resume(); |
| 21 | } |
| 22 | } |
Çalışma Açıklaması
Her kumandanın kendine özgü IR kodları vardır, kodda verilen örnek hex değerleri sadece şablon amaçlıdır — mutlaka kendi kumandanızla test edip gerçek kodları öğrenmelisiniz.
Test Bilgisi
IRremote kütüphanesini kurun. Devreyi kurun, kodu yükleyin, Seri Monitör'ü açın. Kumandanızdaki farklı tuşlara basıp her birinin hex kodunu not edin, kodda örnek kodları kendi kumandanızın kodlarıyla güncelleyin.
Olası Sorunlar ve Çözümleri
Kumanda kodları okunmuyorsa: IRremote kütüphanesinin sürümüne göre API'nin değişebileceğini unutmayın (bazı sürümlerde decode() farklı çağrılır), kütüphane dokümantasyonunu kontrol edin. Her tuş farklı/tutarsız kod veriyorsa: bazı kumandalar 'repeat code' gönderir, kodda bu durumu (0xFFFFFFFF gibi) ayrıca ele almanız gerekebilir. LED'ler tepki vermiyorsa: Seri Monitör'den okunan hex kodun kod içindeki değerle birebir eşleştiğinden emin olun.
Alternatif Çözümler
3 LED yerine röle eklenerek kumandayla gerçek ev aletleri kontrol edilebilir. Farklı marka kumandalarla (Sony, NEC, RC5 gibi farklı protokoller) uyumluluk için IRremote kütüphanesinin protokol desteğini genişletebilirsiniz. IR verici (LED) eklenerek Arduino'nun kendisi de bir 'evrensel kumanda' olarak diğer cihazları kontrol edebilir hale getirilebilir.
Benzer Projeler
Kapasitif Dokunmatik Kontrol Paneli
Fiziksel butonlar yerine TTP223 dokunmatik sensör modülleriyle bir LED grubunu kontrol eder; kod her dokunuşu 'kenar' olarak yakaladığı için parmağınızı sensörde bırakmak LED'i sürekli açıp kapatmaz.
MQ-2 Gaz Alarmı
Ortamdaki yanıcı gaz/duman yoğunluğunu ölçüp tehlikeli seviyede LED ve buzzer ile alarm verir — ama bir uyarı: bu bir eğitim projesidir, sertifikalı bir ev tipi gaz alarmının yerini tutmaz (bkz. Çalışma Açıklaması).
Servo Kontrollü Kilit
Potansiyometreyi çevirerek servo motorun açısını 0-180° arasında kontrol eder; aynı mantık gerçek bir kilit mekanizmasına bağlandığında servo tabanlı bir erişim sistemine dönüşür.