Yavaş yavaş kablosuz düzeneklere geçmenin fayda sağlayacağını düşündüm. Bunun için de aralarından en basiti olan kızılötesi haberleşmeyi seçtim. Kısaca bahsetmek gerekirse kızılötesi bizim gözümüzle göremediğimiz ışınlar ve bu ışınları görebilen alıcı ve vericiler sayesinde 2 ayrı bağımsız devre belirli kodlamalar sayesinde haberleşebiliyor.En basitinden telefonunuzun kamerası ile televizyon kumandasının önündeki lede bakarken herhangi bir tuşa bastığınızda led'in yandığını görebilirsiniz. Fakat çıplak gözle kendimiz bu ışınları göremiyoruz.
TV kumandası seçtim çünkü hem bu kumandalardaki kodları çözümlemeyi öğrenmek hem de hazır bir verici olduğu için bizi fazla uğraştan kurtarır diye düşündüm :).
Kısaca yapacağımız projeyi anlatmam gerekirse önce TV kumandamızdaki tuşların kodlarını arduinomuz sayesinde öğreneceğiz ve bu kodları kullanarak sayısal çıkışlara hükmedeceğiz.
Ama önce aşağıdaki linkten arduino sketch kızılötesi kütüphanesini indirmemiz gerekiyor.
http://www.pjrc.com/teensy/arduino_libraries/IRremote.zip
Bunu arduino'nun kurulu olduğu klasördeki libraries içine atıyoruz. Adını sadece IR yaparsanız iyi olur. Bu kütüphane ile kullanacağımız kodları incelememiz gerekirse;
IRrecv irrecv(receivePin) ; // Adını koyabileceğimiz bir IR alıcı oluşturuyoruz.
irrecv.enableIRIn() ; // IR ile veri alma işlemini başlatıyoruz.
irrecv.decode(&results); // Alınan kodu çözme teşebbüsüne girer.
results.value ; // Verinin kodudur. (bu değeri kullanacağız)
irrecv.resume(); // Veri alımından sonra diğer kodu almak için başa döner.
Önce aşağıdaki kodları yazıyoruz ve kullandığımız kumandanın kullanmak istediğimiz herhangi 4 tuşunun kodlarını yazıyoruz..Tabi önce Sketch>Import Library > IR'yi tıklıyoruz ki kütüphanemiz eklensin.
#include <IRremote.h>
int RECV_PIN = 11; //IR'nin 3.bacağını taktığımız pin
IRrecv irrecv(RECV_PIN);
decode_results kod; // dekode sonucu
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Alma başlıyor
}
void loop()
{
if (irrecv.decode(&kod))
{
Serial.println(kod.value, DEC); // Kodun Decimal Değeri
irrecv.resume();} // Yeni kod alımı
}
Benim kumandamda bu değerler çıktı. 1 tuştan 2 farklı değer çıkabilir. Mühim değil, 2 değeri de tek bir değere indirgeyeceğiz bu sorun da ortadan kalkmış olacak. Bunu da aşağıdaki örnekteki gibi yapacağım.
if(k==1874)
return 1; // 1874 değerim 1 oldu
3 Led kullandım, 3 tuş açmak için kullanacağım , 1 tuşu da kapatmak için kullanacağım.
#include <IRremote.h>
int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results kod;
int kumanda(int k)
{
if(k==3922)
return 1;
if(k==3907)
return 2;
if(k==3906)
return 3;
if(k==3911)
return 4;
if(k==1874)
return 1;
if(k==1859)
return 2;
if(k==1858)
return 3;
if(k==1863)
return 4;
return -1;
}
void setup()
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&kod)) {
Serial.println(kumanda(kod.value));
if(kumanda(kod.value) == 1)
digitalWrite(9,HIGH);
if(kumanda(kod.value) == 2)
digitalWrite(8,HIGH);
if(kumanda(kod.value) == 3)
digitalWrite(7,HIGH);
if(kumanda(kod.value) == 4){
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
}
irrecv.resume();
}
}
Videomuz ;
çok güzel bi anlatım olmuş
YanıtlaSilKütüphaneyi eklediğim halde Not used: C:\Program Files\Arduino\libraries\RobotIRremote şeklinde bir hata alıyorum?
YanıtlaSilSketch>Import Library > IR yolundan kütüphaneyi programa import ettiniz mi ?
Silbaştan 4. kod "decode_results kod; dekode sonucu" eksik var yorum satırı haline getirmeyi unutmuşsunuz.
SilTeşekkürler düzelttim şimdi :).
Silbaşarılı bir çalışma olmuş. Benim sormak istediğim bu oyuncak helikopterlerin falan ır kumandası oluyor bilirsiniz, onlardaki kodları okumamız mümkünmü?
YanıtlaSilİlk yazılım ile yapabilirsiniz tabii.
Silher şey güzelde ben yükledim arduinoya ama kumandadan gelen sinyalleri giç göztermiyo nede sıkıntı olabilir acil yardım istiyorum:(
YanıtlaSilarduino mega 2560 ile bu sistem kurulurmu aynı şekilde
YanıtlaSildevreye gndyi bağlıyınca kısa devre yapıyo lütfen bi cevaplayın
YanıtlaSilÖncelikle Arduinonuz ile basit bir uygulama yapın, sıkıntı var mı yok mu kontrol edin.
SilDaha sonra gözü ( alıcı ) şemadaki gibi taktığınızdan emin olun çünkü devrede başka bir şey yok, en garantisi de 2.bir sensör ile tekrar deneyin.
(10-15cm den çalışıyor) Alıcı verici arasındaki mesafeyi nasıl artırabiliriz Stabil şekilde HEX leri alabilmek kaydıyla ?
YanıtlaSil