Arduino Kullanara Kızılötesi İle Uzaktan Kontrollü Araba Devresi Yapımı
Arduino ve kızılötesi (IR) sensörünü kullanarak uzaktan kontrollü araba nasıl yapımını anlatıyoruz. Daha önce arduino ile iki DC motorunu nasıl kullanabileceğinize ve yine arduino ile kızılötesi sensörünün kullanımına dair örnek paylaşmıştık. Bu dersimizde bu iki örneği birleştirerek kızılötesi sensörü ve kızılötesi kumandası kullanarak uzaktan kontrollü bir arabanın nasıl yapılacağını anlatıyoruz.
Kızılötesi Kontrollü Arduino Araba Yapımı
öncelikle gerekli malzemeleri toplamakla işe başlayalım.
Kızılötesi Kontrollü Arduino Araba Malzemeleri:
1 adet Arduino Uno Kartı
1 adet kızılötesi sensörü (IR Sensörü)
1 adet kızılötesi kumanda
2 adet DC motor (6 V 250 RPM Motor ve Tekerlek Seti) kullanabilirsiniz.
1 Adet Motor Sürücü kartı (L293D veya L298N Voltaj Regulatörlü Çift Motor Sürücü Kartı(Kırmızı PCB) kullanabilirsiniz.)
Kızılötesi Kontrollü Arduino Araba Devre Şeması:
Burada dikkat etmemiz gereken en önemli husus motorlara ayrıca bir güç kaynağı bağlamamız gerekmektedir. Motorlara sağladığımız güç kaynağının bu pil olabilir (biz projemizde 4 yataklı pil kullandık) toprak (ground) hattı ile arduino toprak hattı aynı yere bağlanmalıdır.
Kızılötesi Kontrollü Arduino Araba Devre Simülasyonu:
Kumandadan 2 tuşuna basınca motorlar ileriye, 8 tuşu ile geriye, 4 sola, 6 sağa doğru hareket ettiğini görebilirsiniz. 5 tuşuna basılınca da motorlar durmaktadır.
Kızılötesi Kontrollü Arduino Araba Devre Kodları:
Arabamızı kontrol edecek arduino kodlarımı ise aşağıdaki gibidir.
#include <IRremote.h> int ALICI_PIN=8; IRrecv irrecv(ALICI_PIN); decode_results sonuclar; # define m1 2 # define m2 3 # define m3 12 # define m4 13 void setup() { pinMode(m1, OUTPUT); pinMode(m2, OUTPUT); pinMode(m3, OUTPUT); pinMode(m4, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if(irrecv.decode(&sonuclar)) { Serial.print("Okunan Deger: "); Serial.println(sonuclar.value,HEX); if( sonuclar.value == 0XFD8877) { ileriGit(); } if( sonuclar.value == 0XFD28D7) { solaGit(); } if( sonuclar.value == 0XFD9867) { geriGit(); } if( sonuclar.value == 0XFD6897) { sagaGit(); } if( sonuclar.value == 0XFDA857) { dur(); } irrecv.resume(); } } void ileriGit() { digitalWrite(m1, HIGH); digitalWrite(m3, HIGH); digitalWrite(m2, LOW); digitalWrite(m4, LOW); } void geriGit() { digitalWrite(m1, LOW); digitalWrite(m3, LOW); digitalWrite(m2, HIGH); digitalWrite(m4, HIGH); } void sagaGit() { digitalWrite(m1, HIGH); digitalWrite(m3, LOW); digitalWrite(m2, LOW); digitalWrite(m4, HIGH); } void solaGit() { digitalWrite(m1, LOW); digitalWrite(m3, HIGH); digitalWrite(m2, HIGH); digitalWrite(m4, LOW); } void dur() { digitalWrite(m1, LOW); digitalWrite(m3, LOW); digitalWrite(m2, LOW); digitalWrite(m4, LOW); }
Kodlarda “sonuclar.value == 0XFD9867” olan yerlere sizler sizin kumandanızdan okuduğunuz değerleri yazabilirsiniz. Kızılötesi (IR) kumandadan hangi tuşun hangi sayısal değeri gönderdiğini Seri Monitör üzerinden görebilirsiniz.