Uzaktan kumandadan gelen sinyallerin kodunu çözmek için Arduino'yu kullanacağız ve daha sonra bir servo motoru kontrol etmek için bu kodları kullanacağız.

Arduino uzaktan kumanda ve IR receiver ile servo motor kontrolü

Proje için gerekli malzemeler

  • Arduino uno r3
  • Breadboard
  • Jumper kablolar
  • IR receiver (38 kHz veya arduino setlerinden çıkan alıcı)
  • Uzaktan kumanda
  • 2 adet SG90 servo motor
  • Pan-tilt modülü (kullanılmayabilir)
  • Servo.h ve IRremote.h kütüphaneleri

Nasıl Çalışır ?

İlk önce uzaktan kumandayı bir IR alıcısı kullanarak decode edeceğiz yani kumanda düğmeleriyle bağlantıyı nasıl kuracağımızı öğreneceğiz. Bir IR alıcının üç pini vardır: OUT, GND ve VCC olmak üzere.

Ayrıca bir uzaktan kumandaya da ihtiyacınız olacak. TV uzaktan kumandası da dahil olmak üzere her türlü uzaktan kumandayı kullanabilirsiniz, ancak ihtiyacınız olmayan eski bir uzaktan kumandayı kullanmak en iyi tercih olabilir. Uzaktan kumandadaki bir düğmeye bastığınızda, alıcı tarafından alınan dijital bir değer gönderir. Bu değer her düğme için farklıdır. Her bir düğmenin değerlerini Arduino ile tespit edeceğiz ve ardından çıktıyı kontrol etmek için bunları Arduino çıkış pinlerine gönderip bir veya iki adet servo motoru kontrol edeceğiz.

Tilt - pan içerisindeki servoların yön hareketine bir düğme atayacağız, bu nedenle toplam dört düğme tüm hareketi kontrol edecek: servonun x ekseni için sol - sağ ve servonun y ekseni için yukarı ve aşağı. Kumanda düğmesine basılıp çekildiğinde servolar küçük artışlarla hareket ettirilecek (açısal olarak) ve uzun süreli basıldığında maksimum veya minimum değere ulaşılana kadar servo sürekli olarak hareket edecek.

#include <IRremote.h>
int receiver = 11; // IR alıcının takıldığı pin
IRrecv irrecv(receiver);
decode_results results;

void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // IR alıcıyı aktif hale getir
}

void loop() {
  if (irrecv.decode(&results)) { // Kumandadan basılan düğmeyi decode et
    Serial.println(results.value, HEX); // Seri monitörde HEX değeri göster
    irrecv.resume(); // Sonraki düğmeye basılması için bekle
  }
}

Yukardaki kod ilk önce IR alıcısından veri okuyan ve karşılık gelen verileri Arduino'ya gönderen IRremote kütüphanesini çağırır. IR alıcısı, Arduino'daki pin 11'e takılır ve kod, Arduino IDE ile iletişim kurmaya başlar, böylece kumandadan bir düğmeye basıldığında giriş seri monitörde gerçek zamanlı olarak görüntülenir. Kod, bir sonraki düğmeye basılması için bir döngü halinde çalışır ve IDE'ye karşılık gelen değeri gösterir.

Uzaktan kumandayı alıcıya doğru tutun ve farklı düğmelere basmayı deneyin. Seri monitörde, onaltılık (HEX) olarak bilinen bir biçimde harfler ve sayılarla kodu çözülmüş olarak görünür. En iyi sonucu almak için kısa ve keskin şekilde basmayı deneyin. Bir düğmeye çok uzun süre basarsanız, seri monitörde düğmeyi basılı tuttuğunuz sürece F'leri gösterecektir.

Dört farklı düğmeye bastıktan sonra seri monitörde görünen değerleri not ediniz. Artık bu hex kodlarını servo motorları kontrol etmek için kullanabiliriz.

Devre Şeması

Arduino IDE kodları

Hex kodunu bulduğumuz düğmenin kodunu kod içerisinde kullanırken başına 0x ifadesinin eklenmesi gerekiyor. Örneğin bulduğumuz kod FFA05F ise bunu kod içerisine 0xFFA05F şeklinde yazmamız gerekiyor.

#include <Servo.h>
#include <IRremote.h>

unsigned long Value1 = 0xFFA05F; // Bulduğunuz değerlere göre değiştiriniz
unsigned long Value2 = 0xFF50AF; // Bulduğunuz değerlere göre değiştiriniz
unsigned long Value3 = 0xFF807F; // Bulduğunuz değerlere göre değiştiriniz
unsigned long Value4 = 0xFF609F; // Bulduğunuz değerlere göre değiştiriniz

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
Servo servo1;
Servo servo2;

void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
servo1.attach(10);
servo2.attach(9);
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume();
  }
  if (results.value == Value1) {
    servo1.write(160);
  }
  else if (results.value == Value2) {
    servo1.write(70);
  }
  else if (results.value == Value3) {
    servo2.write(70);
  }
  else if (results.value == Value4) {
    servo2.write(160);
  }
}
  • Yazı Etiketleri :
  • uzaktan kumanda IR alıcı
  • IR alıcı servo motor kontrolü
  • IR receiver servo sg90
IOS 15'in 10 yeni özelliği
Yazıyı Oku

IOS 15'in 10 yeni özelliği

WEBP dosyalarını Adobe Photoshop ile açma, oluşturma
Yazıyı Oku

WEBP dosyalarını Adobe Photoshop ile açma, oluşturma

Windows 10 için ücretsiz Windows File Recovery programı
Yazıyı Oku

Windows 10 için ücretsiz Windows File Recovery programı

Arduino LCD ekranda kayan yazı yapalım
Yazıyı Oku

Arduino LCD ekranda kayan yazı yapalım

Arduino engelden kaçan araba yapımı
Yazıyı Oku

Arduino engelden kaçan araba yapımı

4WD bluetooth kontrollü araba yapımı - arduino
Yazıyı Oku

4WD bluetooth kontrollü araba yapımı - arduino

Menu