Bu projeyle aslında son günlerde karşılaşmış olabilirsiniz.Artık kızılötesi kumanda ile açıp kapayabileceğimiz , ışığın rengini değiştirebileceğimiz bu projemizle aynı mantığa sahip evlerinizde dekoratif amaçlı kullanmanız için satışa çıkarılan led ışıklar bulunmakta.Hadi o zaman kendi led ışığımızı yapmayı öğrenelim.
Malzemeler
Arduino Uno
Bradboard
IR alıcı kumanda ve IR sensörü
9 adet erkek erkek jumper kablo
1 adet RGB led
3 adet 220 Ω direnç
IR kumanda : Günlük hayatımızda bolce yeri olan IR kumandalar , örneğin televizyonumuzun kumandası gibi , üzerlerinde bulunan led lambasının belirli bir frekansta yanıp sönmesiyle o frekansa atanmış bilgiyi ileterek cihaza istediğimiz komutu yaptırır az sonra led ışıklarımızı yakacağımız gibi. Bu projemizde kullanacağımız kumandamız 38kHz’dir ve çoğu kumanda için de bu değer aynıdır.
Çalışma Şekli
Kızılötesi verici olan IR kumanda veriyi ışık yoluyla iletir. IR sensör ise kumandanın yaydığı kızılötesi ışınları algılar ve bu arduinonun okuyabileceği şekilde elektriksel sinyallere dönüştürür.Kumanda göndermek istediği sinyal uzunluğu boyunca ledi 38kHz olacak şekilde yakıp söndürür bu sayede IR sensörün üzerindeki alıcı göz bu sinyali çevredeki diğer sinyallerden ayırt eder.Yani kumanda üzerindeki led sürekli açık durmak yerine 38kHz hızında yanıp sönmek zorundadır.
Devre
- Adım: RGB ledimizi breadboarda yerleştiriyoruz. (Unutmayalım ki üzerlerinde bulunan uzun bacağın yani artı pininin yeri önemli.)
Eksi olan bacaklara yukarıda devre fotoğrafımızda ki gibi dirençlerimizi ekliyoruz.Ve sonrasında dirençlerimizin boştaki bacaklaklarını sırasıyla arduino üzrendeki 2,3 ve 4. pin ile birleştiriyoruz.
Ve RGB ledinin artı bacağını breadboard üzerindeki eksiyle birleştirip RGB ledin bağlantılarını tamamlıyoruz.
- Adım:IR sensörümüzü breadboarda yerleştiriyoruz.
Görselde gözüktüğü gibi artı bacağını breadboard üzerindeki artı ile eksi bacağını eksi ile birleştiriyouruz.
Sonrasında kalan bacağı ise arduino üzerinde bulunan 11 numaralı pinle birleştiriyoruz.
Ve sonra olarak arduinomuzundan breadboarda enerji akışı olması için arduino üzerindeki 5V pinini breadboard da artı GND pinini ise eksi ile birleştiriyoruz.
Devremizin son hali:
Kod
(Dikkat! Kodumuzun çalışması için kızıl ötesi kumanda kullanacağımızdan kodumuza öncelikle IRremote kütüphanesini eklemeliyiz.)
#include <IRremote.h> // Kütüphane Eklendi
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600); //ekrana yazmak için
// seri haberleşme başlatıldı
irrecv.enableIRIn(); //IR haberleşme başlatıldı
pinMode(2,OUTPUT); //RGB ledi yakmak için çıkış pinleri tanımlandı
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) { //sinyal algılandığı zaman
Serial.println(results.value, HEX); //ekrana HEX kodunu yaz
if(results.value==0xFD08F7){ //1 tuşuna basınca kırmızı
digitalWrite(2,LOW);// her sinyal okuma kodlarında yanan ışık varsa söndürülsün
digitalWrite(3,LOW);// yoksa renk karışımı olur
digitalWrite(4,LOW);
// delay(250);
digitalWrite(2,HIGH);
}
else if(results.value==0xFD8877){ //2 tuşuna basınca mavi
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
}
else if(results.value==0xFD48B7){ // 3 tuşuna basınca yeşil yansın
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(4,HIGH);
}
else if(results.value==0xFD28D7){ //4 tuşuna basınca pembe
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
}
else if(results.value==0xFDA857){ //5 tuşuna basında turkuaz
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
else if(results.value==0xFD6897){ //6 tuşuna basınca sarı
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
}
else if(results.value==0xFD9867){ //8 tuşuna basınca beyaz ışık yanacak
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
}
else { // diğer tüm tuşlarda ledler sönsün
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
}
irrecv.resume();
}
delay(100);
}
I do not understand
How can I help you
Very amusing phrase