Arduino
OKUDUĞUNUZ KONU
Arduino IR Kızılötesi Kumanda Servo Kontrol
0

Arduino IR Kızılötesi Kumanda Servo Kontrol

Yazar : Utkan Subaşı24 Temmuz 2018

Kızılötesi Kumanda, neredeyse her evde bulunan farklı amaçlarla kullanılabilen ve genellikle televizyonları uzaktan kontrol etmede kullanılır. Kumandalar bir çok arduino projesine kullanış, hava ve kolaylık kazandırmaktadır. Bu projeleri büyüterek gerçek hayatta kullanırsak ciddi anlamda teknolojiden yararlanmış oluruz.

Birçok sensörde bulunan kızılötesi ışınlar mz80, kızılötesi sensör ve daha birçok sensör ve modülde kullanılmaktadır bizim bu gün kullanacağımız sensör ve kumanda setini internette 15 TL gibi gayet uygun bir fiyata bulabilirsiniz. Ama bu siteden alırsanız benimki gibi çalışacaktır. Uygun fiyatlı olması kullanışlı ve birçok insanın eğer proje haline getirirseniz sizi tebrik edebileceği bir sensördür. Sensörümüz diğer kumandalarla ve kumandamız diğer sensörlerle çalışabilme imkanı vardır. Ancak bu ikili set birbirlerine tam olarak uygun tasarlandıkları için gayet düzgün çalışır.

Bu gün yapacağımız projenin internette pek bir benzeri bulunmayan bir projedir. Genellikle bu ikili set için led ve araba videoları mevcuttur ancak bu gün servonun derecelerini ayarlayacağız. Siz isterseniz benim kodda yazdığım if ve else if bölümlerinin yerine yapmak istediğiniz projeyi yazabilirsiniz. Bu gün size iki alternatif kod göstereceğim birincisi 4 tuş ile derece artırıp azaltma diğeri yani ikincisi ise sayılar ile derece ayarlamakdır.

NOT: iki kodum da hem proje hem de HEX numarası okuyabilir. HEX numarası tuşa basılınca gelen değerdir. Siz denemeden önce benimkilerle kendi HEX kodlarınızı değiştirin çünkü aynı olamama şansları çok yüksek.

Gereken malzemeler;

Bağlantılar = sensör 11  servo 9;

Bağlantı Şeması

Birinci 4 tuşlu kod (İstediğiniz 4 tuşla yapabilirsiniz ben video değiştirme ile ses değiştirme tuşlarını kullandım.):


#include <Servo.h>
#include <IRremote.h>
int RECV_PIN = 11;
char degisken = 0;
Servo servo;
int maxdonme = 90;
int mindonme = 0;
IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
servo.attach(9);
Serial.begin(9600);
irrecv.enableIRIn();
servo.write(0);
}

void loop() {
servo.write(degisken);
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();
if(results.value==0x52A3D41F){
degisken = degisken - 45;
}
else if (results.value==0xD7E84B1B){
degisken = degisken + 45;
}
else if (results.value==0xA3C8EDDB){
degisken = degisken + 15;
}
else if (results.value==0xF076C13B){
degisken = degisken - 15;
}

if(degisken < mindonme){ degisken = mindonme; } else if (degisken > maxdonme){
degisken = maxdonme;
}
}
delay(10);
}

İkinci kod sayılı olan kod :


#include <Servo.h>
#include <IRremote.h>
int RECV_PIN = 11;
Servo servo;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
servo.attach(9);
Serial.begin(9600);
irrecv.enableIRIn();
servo.write(0);
}

void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, HEX);
irrecv.resume();

if(results.value==0xC101E57B){
servo.write(0);
}
else if(results.value==0x9716BE3F){
servo.write(10);
}
else if(results.value==0x3D9AE3F7){
servo.write(20);
}
else if(results.value==0x6182021B){
servo.write(30);
}
else if(results.value==0x8C22657B){
servo.write(40);
}
else if(results.value==0x488F3CBB){
servo.write(50);
}
else if(results.value==0x449E79F){
servo.write(60);
}
else if(results.value==0x32C6FDF7){
servo.write(70);
}
else if(results.value==0x1BC0157B){
servo.write(80);
}
else if(results.value==0x3EC3FC1B){
servo.write(90);
}

}
delay(10);
}
SİZCE NASIL OLMUŞ?
Beğendim
100%
İlginç
0%
Eh İşte
0%
Anlamadım
0%
Kötü
0%
Berbat
0%
YAZAR HAKKINDA
Utkan Subaşı
Utkan Subaşı
Arduino'ya 11 yaşında başladım. Çok sevdim. Devam ettim. Tübitak Ortaokullar Arası Yapılan Yarışmada 3. Oldum. ARDUİNO'YA DEVAMM...
YORUMLAR

YORUM YAP