Merhaba arkadaşlar. Bu dersimizde Arduino UNO kullanarak kızılötesi uzaktan kumanda uygulaması yapacağız.
Bir önceki yazımızda joystick ile servo motor kullanmıştık >>> Arduino Joystick İle Servo Motor Kontrolü
Kızılötesi Kumanda Çalışma Mantığı ve Kullanımı
Kızılötesi kumandalar, günlük kullandığımız çoğu elektronik alette sık sık kullandığımız cihazlardır. Neden Arduino’da da kullanmayalım? 🙂 Çalışma prensibi şu şekildedir: kumanda üzerinde bir kızılötesi (infrared, ir) LED bulunur. Bu LED, kumanda üzerindeki herhangi bir tuşa bastığımızda önceden belirlenmiş bir kod verecek şekilde belirli bir frekansta yanıp söner. Çoğu kumanda için bu frekans 38 kHz’tir. 38 kHz’lik taşıyıcı sinyale her bir tuş için farklı bir kod oluşturacak şekilde modülasyon uygulanır. Her marka için farklı modülasyon ve kodlama teknikleri mevcuttur. Projede kullandığımız 38 kHz kızılötesi alıcı, aldığı sinyali demodüle ederek Arduino’ya doğrudan basılan buton ile ilgili kodu göndermektedir. Bu sayede farklı marka ve model kumandaları 38 kHz taşıyıcı sinyale sahip olduğu sürece bu alıcı ile kullanabilmekteyiz.
Kızılötesi (IR) Sensör Nedir?
Kızılötesi (infra-red) sensörler ortamdaki karanlık/aydınlık farkını algılama ve mesafe algılama amacıyla kullanılan sensörlerdir. Kızılötesi sensörlerin yapılarında bir LED ve bu LED’in yansıdığı ışığı algılayan bir foto komponent bulunur. Bu komponent fotodiyot, fototransistör gibi devre elemanlarından biri olur. Kızılötesi sensörün hassasiyeti kontrol edilebilir. Ayarlanan hassasiyete göre yapısında bulunan LED, ayarlanan dalga boyu büyüklüğünde bir ışık üretir. Bu ışığın yansıması, sensörün yapısında bulunan foto komponente geri döndüğünde sensör algılama işlemini gerçekleştirir.
Kızılötesi sensör ve diğer tüm sensörler için detaylı bilgiye buradan ulaşabilirsiniz.
Uzaktan Kumanda ile LED Kontrol Devresi
Gerekli malzemeler:
- Arduino UNO
- Breadboard
- IR alıcı-verici kumanda seti
- Erkek-dişi jumper kablo
- Erkek-erkek jumper kablo
- 4 adet LED
- 4 adet 220 Ω direnç
Bizim kullanacağımız setteki kumandanın tüm butonlarına ait kodlar Arduino’ya yükleyeceğimiz program kodunda tanımlanmıştır. Bu sayede kit ile beraber gelen kumandadaki tüm butonlara birer işlev atamamız mümkün olur. Devremizin bağlantı şeması şu şekildedir:
Kızılötesi alıcıyı kullanabilmemiz için, Arduino yazılımına Arduino-IRremote kütüphanesini yüklememiz gereklidir. Bu kütüphaneyi indirdikten sonra C:Program Files (x86)Arduinolibraries veya C:Program FilesArduinolibraries klasörünün altına “IRremote” ismiyle kaydetmemiz gereklidir. Kütüphaneyi yükledikten sonra aşağıdaki kodu Arduino’muza yüklüyoruz:
#include <IRremote.h> int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); decode_results results; #define CH1 0xFFA25D #define CH 0xFF629D #define CH2 0xFFE21D #define PREV 0xFF22DD #define NEXT 0xFF02FD #define PLAYPAUSE 0xFFC23D #define VOL1 0xFFE01F #define VOL2 0xFFA857 #define EQ 0xFF906F #define BUTON0 0xFF6897 #define BUTON100 0xFF9867 #define BUTON200 0xFFB04F #define BUTON1 0xFF30CF #define BUTON2 0xFF18E7 #define BUTON3 0xFF7A85 #define BUTON4 0xFF10EF #define BUTON5 0xFF38C7 #define BUTON6 0xFF5AA5 #define BUTON7 0xFF42BD #define BUTON8 0xFF4AB5 #define BUTON9 0xFF52AD int led1 = 8; int led2 = 9; int led3 = 10; int led4 = 11; void setup() { pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode( & results)) { if (results.value == BUTON1) { digitalWrite(led1, !digitalRead(led1)); if (digitalRead(led1) == HIGH) { Serial.println("LED 1 yandi"); } else { Serial.println("LED 1 sondu"); } } if (results.value == BUTON2) { digitalWrite(led2, !digitalRead(led2)); if (digitalRead(led2) == HIGH) { Serial.println("LED 2 yandi"); } else { Serial.println("LED 2 sondu"); } } if (results.value == BUTON3) { digitalWrite(led3, !digitalRead(led3)); if (digitalRead(led3) == HIGH) { Serial.println("LED 3 yandi"); } else { Serial.println("LED 3 sondu"); } } if (results.value == BUTON4) { digitalWrite(led4, !digitalRead(led4)); if (digitalRead(led4) == HIGH) { Serial.println("LED 4 yandi"); } else { Serial.println("LED 4 sondu"); } } if (results.value == BUTON0) { digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); Serial.println("Tum LED'ler sondu"); } if (results.value == BUTON5) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); Serial.println("Tum LED'ler yandi"); } irrecv.resume(); } }
Bu koda göre, kumandamız üzerindeki 1, 2, 3 ve 4 numaralı butonlar sırasıyla 8, 9, 10 ve 11 numaralı dijital pinlere bağlı olan LED’leri yakıp söndürecektir. 0 tümünü söndürür ve 5 tümünü yakar. Ayrıca seri port ekranını açarsak, butona bastığımızda LED’in değişimini bu ekrandaki ifadelerden de görebiliriz. Sizler de kodun baş kısmındaki #define ile tanımlanan diğer buton kodlarını kullanarak farklı işlevler gerçekleştirecek şekilde programlama yapabilirsiniz.
Eğer kit dahilinde gelen kumanda yerine başka bir kumanda kullanmak istiyorsanız (veya sadece alıcıdan temin ettiyseniz), Arduino programından Dosya>Örnekler>IRremote>IRrecvDump örnek kodunu kullanarak mevcut kumandanızın tuşlarına ait hex kodları tespit edebilir ve bu kodları kullanabilirsiniz.
bu kod ta hata vriyor
benim kumandam şuan sitedeki kumanda daha yeni aldım ama kodlarına erişemiyorum kodları nasıl değiştircem
ya agalar biz bu işi çözemedik bi help atın. ilge abicimizin kodlarını çaldık, kodlar çalışmıyor. ilge abimiz de videoyu kaldırmış. devreyi düzgünce çalıştıran biri varsa yardım etsin pls. ilge abim sana da kırgınız
Ir kütüphanesini güncellemiş arduino. O yüzden bazı kodlar değişmiş. Hatta çoğu kod değişmiş. arduinonun githubından bakabilirsin neler değişmiş, nasıl değişmiş.
Mete ben calıstırdım . yazının icerisinde “Kızılötesi alıcıyı kullanabilmemiz için, Arduino yazılımına Arduino-IRremote kütüphanesini yüklememiz gereklidir.” bu kısmı okudun mu?
indirmei dene ama ben denedim sayfa açılmadı
Merhaba
Ürünü aldım ancak arduino due ile çalıştıramadım. İlk başta kütüphane hata verdi ve due için kütüphane buldum ve derlemeyi başardım. Programı yüklüyorum ama hala çalışmıyor.
Araçlar>Kart>Arduino Due şeklinde bir seçim yapın eğer düzelmezse kod ile veya kart ile alakalı bir sorun var demektir.
bu PROJEYİ Arduino UNO YAPABİLİR.
merhaba ben çalıştıramadım hata veriyor
kütüphane yüklü sitede verdiğiniz kumadayı denedim ama hala çalışmıyor
kutuphane ismını kısaltınız
kütüphanenin ismini değiştirin oraya “#inclode
Ders için teşekkürler sayenizde çalıştı
hocam resimdeki gibi bağladığımda alıcı ısınmaya başladı bende ayrıca bacakların üstünde sol taraf d0 orta bacak GND sağ bacak VCC yazıyor bende buna göre bağladım şimdi d0 11 e gnd gnd ye vcc 5v a bağladım doğrumu bilgi verirseniz sevinirim
Bende de oluyordu 5v değilde 3.3v a bağladım normale döndü 🙂
aynıs sorunu bende yaşadım devreyi ikinci defa kurduğumda alıcıya dokunamıyordum acaba bunun sebebi nedir ayrıca kumandayla servo motor kontrol etmeye çalışınca arduino kapanıyor bunun sebebini bilen varmı acaba
sa gökhan kardeşim nasıl çalıştırdın ben hala çalıştıramadım
AS timur kardes ındırdıgınız kutuphanenın zıpten cıkan “Arduino-IRremote-master” klasorunun adını sadece” IRremote ” olarak degıstırın ve o sekılde libraries e atın ben o sekılde calıstırdım programda yazılanla kutuphaneye atılan ısım aynı degıl o yuzden hata verıyor
Simdi Hocam bu olayin en kolay yöntemini anlatmissiniz eyvallah yaratici bir program olmus ama diyelimki 1 numarali kumanda dügmesiyle bir ledi yakmak istiyoruz digitalwrite komutuyla yapiyo ama ayni butonla söndürmeye calissak kodumuzu nasil degistirebiliriz? Counter yöntemiyle denedim ama biyerde logik hatasi yapiyorum bana bu tek butondan acma kapama konusunu anlatabilirmisinz.
Öncelikle bool tipinde bir led_durum değişkeni tanımlayın. Varsayılan olarak LOW değerinde olsun. İstediğiniz butonun if’inde ise bu değişkenin değerini led_durum != led_durum; olarak tam tersine çevirin. Böylelikle tek buton ile aç-kapa işlemi yapabilirsiniz.
DEVRE ÇALIŞIYOR GELİŞTİRİLEBİLİR BİR PROJE TEŞEKKÜRLER…
hala çalışmıyor
hocam arduino ile rc araçların kontrolünü yapamaz mıyız (kumanda olarak yani drone nun uçurma işlevi gibi)
Yapılabilir.
Selamlar, evdeki televizyonun kumandasi mefta olunca bende aurdino ile kendi kumandami yapmaga karar verdim. Bizikisi eski bir LG televizyon, kumandasinin modülasyon ve kodlamasini bulma sansim var mi? bir suredir ariyorum ancak birsey bulamadim.
Yapılabilir. Bu videoyu incelemenizi tavsiye ederim: https://www.youtube.com/watch?v=XUY0-doBx1U
Selamlar kizilötesiyle maksimum kaç metreye kadar sinyal alabiliriz 100 150 metre kadar calistirmam gerek.
100-150 metre mesafe için kızılötesi malesef uygun bir tercih olmayacaktır. Bunun yerine RF haberleşmeye sahip ürünleri tercih edebilirsiniz: Arduino Uygulaması: NRF24L01 ile uzaktan kontrol
Merhaba;
Yaptığınız projedeki bütün adımları arduino yada uyguladım fakat kumandaya bastığımda çalışmıyor ve kütüphaneyi kurdum.
Yardım ederseniz sevinirim.
irrecv.resume();
}
}
serial.print ten hemen sonra yazın çalışacaktır.
Ben de çalışıyor ama sinyaller bazen bi gidiyor bi gitmiyor bunun sebebi ne olabilir yardımcı olabilirseniz çok mutlu olurum bi de zahmet olmaz ise biraz acil dönebilir misiniz
Tuşlara basılı tutmanız durumunda normalde gidenden farklı bir kod gidecektir. Sorununuz bundan kaynaklı olabilir. Kütüphane yanında gelen IRrecvDump örneklerini kullanarak gelen sinyalleri daha detaylı olarak analiz edebilirsiniz.
ben bu kumanda ile yapamiyorum kod M30.IR-REMOTE-17CH
merhaba.bir problemim var şuan renkleri karışık döndürdüğümde mesela while döngüsünde açıyorum buton 4e açıp başlatıyorum tekrar buton 4e bastığımda while döngüsünden çıkmasını istiyorum fakat while döngüsüne girince diğer hiçbir butonu algılamıyo kapanmıyorda.kod kısmı şu şekilde:::
#include
IRrecv irrecv(2);
decode_results results ;
#define BUTON1 0xFF30CF
#define BUTON2 0xFF18E7
#define BUTON3 0xFF7A85
#define BUTON4 0xFF6897
#define BUTON5 0xFF9867
const int kir = 10;
const int mavi = 12;
const int yesil = 11;
boolean durum=true;
void setup (){
pinMode (kir , OUTPUT );
pinMode (mavi , OUTPUT );
pinMode (yesil , OUTPUT );
Serial.begin (9600);
irrecv.enableIRIn();
}
void loop (){
if (irrecv.decode(&results)){
Serial.println(results.value, HEX);
if(results.value == BUTON1 )
digitalWrite(kir ,!digitalRead(kir));
irrecv.resume();
if(results.value == BUTON2 )
digitalWrite(mavi ,!digitalRead(mavi));
irrecv.resume();
if(results.value == BUTON3 )
digitalWrite(yesil ,!digitalRead(yesil));
irrecv.resume();
}
while (results.value==BUTON4){
digitalWrite(mavi,HIGH);
digitalWrite(yesil,HIGH);
delay(70);
digitalWrite(mavi,LOW);
delay(70);
digitalWrite(kir,HIGH);
digitalWrite(mavi,HIGH);
delay(70);
digitalWrite(kir,LOW);
delay(70);
digitalWrite(yesil,HIGH);
delay(70);
digitalWrite(yesil,LOW);
delay(70);
irrecv.resume();
}
while (results.value==BUTON5){
digitalWrite(mavi,LOW);
digitalWrite(kir,LOW);
digitalWrite(yesil,LOW);
irrecv.resume();
}
}
return koy abiciyim
Hocam ben yaptım güzel çalışıyorda
Basılı tuttuğumuz sürece yansa bırakınca sönse onu nasıl yapabiliriz
Şimdiden teşekkürler
Basılı tuttuğunuzda kumanda kodu FFF… olarak görünüyor, bu sebeple yapmak biraz daha karmaşık olabilir.
tv kumandasından kodları elde edip mega klon ardunio kartta yükleme yaptım ve çalıştırdım ancak algılama mesafesi çok yakın ve geç algılıyor nasıl çözerim
Çok güzel ben yaptım mis gibi çalışıyor
arda ben yapamadim.nasil yapdin sen
Hocam bir sorum var kumandadan gelen 1,2,3 gibi komutları 16×2 lik lcdye yazabilirmiyim?
kızılötesi alıcı sensör kartı ne işe yarıyor? ben onu nasıl bağlayacağımı anlayamadım.
Bende kumanda seti aldım. Gelen set içerisinde 3 bacaklı alıcı sensör ve sensör kartı ayrı şekilde. Bunları lehimlemekmi lazım yoksa jumper kablolarla bağlantısını yapabilirmiyiz
include yazan yerde bi kütüphane adı yok kod eksik yazılmış, bilerek mi böyle yapıyorsunuz?
Her kumanda olurmu
Merhabalar;
Benim kumandam sizinkinden farklı, ama kodları karıştırarak 4 ledi istediğim zaman açıp kapata biliyorum. İlk önce 2. ve 4. led çalışmıştı, sonra kurcaladım ve 4 led çalışıyor.
Yardımın için teşekkür ederiz.
Kumandamı Dosya > örnekler > IRremote > IRrecvDemo yolunu takip ederek açtığım projeden hex kodlarını okutuyorum, ancak kumadanın aynı tuşları 3-5 sefer aynı kodu gösteriyor daha sonra başka bir kon gösteriyor;daha sonra eski koda geri dönüyor. bütün tuşlarda aynı sorun var. bir fikrinz var mı?
kolay gelsin ben kumandayı kullanarak rgb led ile hangi rengi yaktırdıysam lcd ekranda “kırmızı yandı”,”yeşil yandı”,”mavi yandı ” yazmasını istiyorum ama bir türlü beceremedim lcd tek çalışıyor rgb led tek başına çalışıyor kumanda çalışıyor ama ikisini birlikte çalıştıramadım yardımcı olur musunuz
kodlarım aşağıdaki gibi
#include
#include
#include
#include
#include
#define red 3
#define mavi 4
#define yesil 5
#define kumanda 2
#define CH1 0xFFA25D
#define CH 0xFF629D
#define CH2 0xFFE21D
#define PREV 0xFF22DD
#define NEXT 0xFF02FD
#define PLAYPAUSE 0xFFC23D
#define VOL1 0xFFE01F
#define VOL2 0xFFA857
#define EQ 0xFF906F
#define BUTON0 0xFF6897
#define BUTON100 0xFF9867
#define BUTON200 0xFFB04F
#define BUTON1 0xFF30CF
#define BUTON2 0xFF18E7
#define BUTON3 0xFF7A85
#define BUTON4 0xFF10EF
#define BUTON5 0xFF38C7
#define BUTON6 0xFF5AA5
#define BUTON7 0xFF42BD
#define BUTON8 0xFF4AB5
#define BUTON9 0xFF52AD
IRrecv irrecv(kumanda);
decode_results results;
LiquidCrystal lcd(6,7,8,9,10,11);
void setup() {
lcd.begin(16,2);
pinMode (red,OUTPUT);
pinMode (mavi,OUTPUT);
pinMode (yesil,OUTPUT);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results))
{
if (results.value == BUTON1)
{
digitalWrite(red, !digitalRead(red));
if (digitalRead(red) == HIGH)
{
lcd.setCursor(0,0);
lcd.print(“KIRMIZI yandi”);
delay(500);
lcd.clear();
}
else
{
lcd.print(“KIRMIZI sondu”);delay(500);
lcd.clear();
}
}
if (results.value == BUTON2)
{
digitalWrite(mavi, !digitalRead(mavi));
if (digitalRead(mavi) == HIGH)
{
lcd.print(“mavi yandi”);delay(500);
lcd.clear();
}
else
{
lcd.print(“mavi sondu”);delay(500);
lcd.clear();
}
}
if (results.value == BUTON3)
{
digitalWrite(yesil, !digitalRead(yesil));
if (digitalRead(yesil) == HIGH)
{
lcd.print(“yesil yandi”);delay(500);
lcd.clear();
}
else
{
lcd.print(“yesil sondu”);delay(500);
lcd.clear();
}
}
if (results.value == CH1)
{
digitalWrite(red, LOW);
digitalWrite(mavi, LOW);
digitalWrite(yesil, LOW);
lcd.print(“Tum LED’ler sondu”);delay(500);
lcd.clear();
}
if (results.value == CH2)
{
digitalWrite(red, HIGH);
digitalWrite(mavi, HIGH);
digitalWrite(yesil, HIGH);
lcd.print(“Tum LED’ler YANDI”);delay(500);
lcd.clear();
}
irrecv.resume();
}
}
Merhaba
Ben bu devreyi apartman girişindeki kapı otomatiğinde kullanacağım. Sizin tasarladığımız hali ile uyguladım gayet net çalışıyor.
Fakat size bir sorum olacak kumandanın ilgili tuşuna bastığım süre kadar ledi yak, ilgili butondan elimi çektiğim an sön yapmak istiyorum. bunun için kodun hangi kısmına ve nasıl müdahale gerekiyor.
Saygılar
Videoda 330k direnç derken yazıda 220ohm diyor hangisi?
ikiside olur ledler için
merhaba bi sorum olucak şimdi aklımda bir soru var denedim denedim bi türlü istediğim sonucu alamadım şimdi bu televizyonda sayılara basınca hemen neye bastığını algılayıp sonra birleştiriyor ya benimkide aynısı ama tek fark önce ok tuşuna basılacak sonra 2 sayı girmesi istenecek bunları birleştirip sayılara gerekli yerlerde kullanıcam bunun için bir kod örneği hazırlayabilirmisiniz acaba
Kullanılıyor: C:\Program
exit status 1
Arduino/Genuino Uno kartı için derleme hatası.
AYNEN BUNU DİYOR
BENDEDE AYNISI var çözümü bulabildinmi
iii çalışmalar. 433 mhz rf kumandaları nasıl kullanabilriz yani rf alıcı ile??
Hocam ben kontrol sayısını artırmak istedim 8 tane röle ayrı ayrı kontrol ediyor um fakat 5 yada 8 röle aynı anda çalıştığı zaman ardunio komut almıyor donuyor ayrıca son kodda değil sizin kodu fazlalastirip da denedim kütüphane den diye düşünüyorum ama bir türlü çözemedim.
Merhabalar hocam.
Bir türlü çözemedim 8 tane röle çalıştırmak istiyorum fakat 4 tane gayet sağlıklı çalışıyor 5. Rolede 1 konumda olduğunda ardunio donuyor sebebi ne olabilir 8 tane röle çalıştırınız mi hiç kodda sıkıntı olduğunu düşünmüyorum ardunio da değiştirdim fakat durum aynı kodu sizin kodları fazlalastirdim başka birşey eklemedim
Hocam şifreli giriş yapmak istesek eprom a kumanda dan gelen değeri nasıl yazarız karşılaştırma yapıp şifre oluşturmak mümkün mü eprom a nasıl yazabilir im
Böyle bir hata veriyor
IRrecv’ does not name a type
Ben arduino ‘yu, alıcı değilde verici olarak yani bir tv kumandası olarak kullanmayı düşünüyorum böyle bişey mümkün mü?
hocam bende bayt sıkıntısı oluştu nap mam gerek
Televizyonun eski alıcısını söktüm kulandım aynı tuşa bastığımda 2 farklı değer veriyor farklı zamanlarda
bir sorun var dediniz ama aslında untmuslar bu kodu yazarsanız calısacaktır NOT:kütüphaneyi eklemeyi unutmuşlar
kod:
#include
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define CH1 0xFFA25D
#define CH 0xFF629D
#define CH2 0xFFE21D
#define PREV 0xFF22DD
#define NEXT 0xFF02FD
#define PLAYPAUSE 0xFFC23D
#define VOL1 0xFFE01F
#define VOL2 0xFFA857
#define EQ 0xFF906F
#define BUTON0 0xFF6897
#define BUTON100 0xFF9867
#define BUTON200 0xFFB04F
#define BUTON1 0xFF30CF
#define BUTON2 0xFF18E7
#define BUTON3 0xFF7A85
#define BUTON4 0xFF10EF
#define BUTON5 0xFF38C7
#define BUTON6 0xFF5AA5
#define BUTON7 0xFF42BD
#define BUTON8 0xFF4AB5
#define BUTON9 0xFF52AD
int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results))
{
if (results.value == BUTON1)
{
digitalWrite(led1, !digitalRead(led1));
if (digitalRead(led1) == HIGH)
{
Serial.println(“LED 1 yandi”);
}
else
{
Serial.println(“LED 1 sondu”);
}
}
if (results.value == BUTON2)
{
digitalWrite(led2, !digitalRead(led2));
if (digitalRead(led2) == HIGH)
{
Serial.println(“LED 2 yandi”);
}
else
{
Serial.println(“LED 2 sondu”);
}
}
if (results.value == BUTON3)
{
digitalWrite(led3, !digitalRead(led3));
if (digitalRead(led3) == HIGH)
{
Serial.println(“LED 3 yandi”);
}
else
{
Serial.println(“LED 3 sondu”);
}
}
if (results.value == BUTON4)
{
digitalWrite(led4, !digitalRead(led4));
if (digitalRead(led4) == HIGH)
{
Serial.println(“LED 4 yandi”);
}
else
{
Serial.println(“LED 4 sondu”);
}
}
if (results.value == BUTON0)
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
Serial.println(“Tum LED’ler sondu”);
}
if (results.value == BUTON5)
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
Serial.println(“Tum LED’ler yandi”);
}
irrecv.resume();
}
}
bir sorun var dediniz ama aslında untmuslar bu kodu yazarsanız calısacaktır NOT:kütüphaneyi eklemeyi unutmuşlar
NOT 2:IRremote un basina
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
#define CH1 0xFFA25D
#define CH 0xFF629D
#define CH2 0xFFE21D
#define PREV 0xFF22DD
#define NEXT 0xFF02FD
#define PLAYPAUSE 0xFFC23D
#define VOL1 0xFFE01F
#define VOL2 0xFFA857
#define EQ 0xFF906F
#define BUTON0 0xFF6897
#define BUTON100 0xFF9867
#define BUTON200 0xFFB04F
#define BUTON1 0xFF30CF
#define BUTON2 0xFF18E7
#define BUTON3 0xFF7A85
#define BUTON4 0xFF10EF
#define BUTON5 0xFF38C7
#define BUTON6 0xFF5AA5
#define BUTON7 0xFF42BD
#define BUTON8 0xFF4AB5
#define BUTON9 0xFF52AD
int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;
void setup()
{
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results))
{
if (results.value == BUTON1)
{
digitalWrite(led1, !digitalRead(led1));
if (digitalRead(led1) == HIGH)
{
Serial.println(“LED 1 yandi”);
}
else
{
Serial.println(“LED 1 sondu”);
}
}
if (results.value == BUTON2)
{
digitalWrite(led2, !digitalRead(led2));
if (digitalRead(led2) == HIGH)
{
Serial.println(“LED 2 yandi”);
}
else
{
Serial.println(“LED 2 sondu”);
}
}
if (results.value == BUTON3)
{
digitalWrite(led3, !digitalRead(led3));
if (digitalRead(led3) == HIGH)
{
Serial.println(“LED 3 yandi”);
}
else
{
Serial.println(“LED 3 sondu”);
}
}
if (results.value == BUTON4)
{
digitalWrite(led4, !digitalRead(led4));
if (digitalRead(led4) == HIGH)
{
Serial.println(“LED 4 yandi”);
}
else
{
Serial.println(“LED 4 sondu”);
}
}
if (results.value == BUTON0)
{
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
Serial.println(“Tum LED’ler sondu”);
}
if (results.value == BUTON5)
{
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
Serial.println(“Tum LED’ler yandi”);
}
irrecv.resume();
}
}
https://www.robotistan.com/ir-alici-verici-kumanda-seti-ir-receiver-module-wireless-remote-control-k buna dair hiçbir yerde kütüphane ve kod bulamadım yardımcı olur musunuz ve bu kod arduino mega veya nano da çalışabilir mi???
Beraberinde pinlerini de kontrol ederek ilerlerseniz sorun yaşayacağınızı sanmıyorum 🙂
peki https://www.robotistan.com/ir-alici-verici-kumanda-seti-ir-receiver-module-wireless-remote-control-k ile çalışır mı bu kodlar veya Uno Nano Mega fark eder mi cevabınızı net aanlayamadım
Kendim mBlock’tan bir kütüphane bulup kod yazdım ama aynı tuşa 1 kez basınca sanki 100000000 kez basmışında donmuş sonradan işlemi gerçekleştiriyormuş gibi oluyor
Tum islemleri yaptik
Kutuphaneyi kurduk
Derleme yapildi ve kaydedildi diyor.
Ama calismiyor:(( neden?
Donanımsal bağlantılarınızı ve donanım – yazılım uyumunu kontrol etmenizi öneririm.
IR ile buzzer derlemede hata veriyor. Buzzer komutunu kaldırınca derleme yapıyor. Sorun ne olaki arkadaslar.
IR kütüphanesini kurdunuz mu acaba?
Arskadaşlar çözümü buldum (akılca bi yöntem değil ama yinede çalııyor :D)
Aşağıdaki linkten kütüphaneyi indirip kurun (eski versiyon kullanıyorum yenisine kafam basmıyor)
Yine aşağıdaki kodu arduino da çalıştırın ve serial monitör ü çalıştırın.
Normal olarak kumandanın tuşlarına basınca bastığınız butonun kodunu yazacaktır eğer sıkıntı varsa bilmiyorum.
Buton kodlarını alaraktan bilgiyi işleyebilirisniz.
Kod:
#include
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode( & results)) {
Serial.println(results.value);
irrecv.resume();
}
}
Örnek kod (örnek proje):
#include
int RECV_PIN = 2;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode( & results)) {
Serial.println(results.value);
if(results.value == 16753245){
Serial.println(“1 oldu”);
}
irrecv.resume();
}
}
Kütüphane linki:
https://downloads.arduino.cc/libraries/github.com/z3t0/IRremote-2.5.0.zip
Merhabalar,
Kumandadan gelen hex kodları aynı tuşa bastığımda farklı hex kodları geliyor nedendir acaba?
baudrate i değiştirdim olmadı. viessmann klima kumandası kullanıyorum.
İyi çalışmalar.
Merhaba.
Bunu sürekli gözlemleyiniz, mutlaka bir yerde aynı değerlere sahip olacaktır. Bu değerlerden birine ait olursa diye bir şart tanımlarsanız bu projeyi rahatlıkla yapabilirsiniz.