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.
İ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.
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); } }
IOS 15'in 10 yeni özelliği
WEBP dosyalarını Adobe Photoshop ile açma, oluşturma
Windows 10 için ücretsiz Windows File Recovery programı
Arduino LCD ekranda kayan yazı yapalım
Arduino engelden kaçan araba yapımı
4WD bluetooth kontrollü araba yapımı - arduino