ARDUİNO IR KIZILÖTESİ KUMANDA SERVO KONTROL

ARDUİNO IR KIZILÖTESİ KUMANDA SERVO KONTROL

Yazar : UTKAN SUBAŞI24 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.):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#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);
}

Yorumlar

Popüler Yayınlar