9 Mayıs 2015 Cumartesi

Arduino ile IR-ALICI devresi ( MAC OS X )



    Selamın Aleyküm arkadaşlar. Arduino UNO kullanarak yaptığım IR-ALICI devresini anlatacağım.
Yazıyı okuduktan sonra videoyu mutlaka izlemenizi tavsiye ediyorum.

                                

kullandığım ekipmanlar:

ARDUİNO  UNO r3
LCD 16,2
IR-ALICI + KUMANDA ( verici )
3 tane LED
LM35 Sıcaklık sensörü
ve arduino programlamamız için bilgisayar. ( Ben MAC üzerinden programladım. MAC kullanıcıları için Türkiye'de yeterli kaynak bulunmaması açısından, genel olarak dersek, OS X kullananlar  ve başlangıç seviyeleri için ideal bir proje )

 İlk olarak PIN bağlantılarını doğru yapmamız gerek.  LCD ekranın pinlerini 7 den başlayıp 2 ye kadar ayarlıyoruz, bununla ilgili fotoğraftan yardım alabilirsiniz. Daha sonra IR-ALICI'yı 11. PIN'den arduino ya bağlıyoruz. LED'lerimizi de 12-10-9 pinlerine bağlıyoruz. Sıcaklık sensörümüzü de A5 üzerinden bağlıyoruz.

 Şimdi gelelim Arduino Kodlara:

#include <IRremote.h> // IR kutuphanesi
#include <LiquidCrystal.h> // LCD kutuphanesi
LiquidCrystal lcd(2, 3, 4, 5, 6, 7); / LCD baglantilari

float sicaklik;
float analogdeger;
const int sensorgiris = 5;

const int RECV_PIN = 11; // IR pin giris  

IRrecv irrecv(RECV_PIN);

decode_results results;
const int LED_1 = 12;
const int LED_2 = 9;
const int LED_3 = 10;

void setup()
{
  Serial.begin(9600);
  
  lcd.begin(16,2);
  
  irrecv.enableIRIn(); // IR aktif etme
  irrecv.blink13(true);
  
  pinMode(LED_1,OUTPUT);
  pinMode(LED_2,OUTPUT);
  pinMode(LED_3,OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    if (results.decode_type == NEC) {
      Serial.print("NEC: ");
    } else if (results.decode_type == SONY) {
      Serial.print("SONY: ");
    } else if (results.decode_type == RC5) {
      Serial.print("RC5: ");
    } else if (results.decode_type == RC6) {
      Serial.print("RC6: ");
    } else if (results.decode_type == UNKNOWN) {
      Serial.print("UNKNOWN: ");
    }
    Serial.println(results.value, HEX);
     
  
    
 switch(results.value){
   case 0xC101E57B: 
   
     lcd.clear(); 
     lcd.setCursor(0,1);
     lcd.print("  1. LED AKTIF");
     digitalWrite(LED_1,HIGH); 
     delay(1000); digitalWrite(LED_1,LOW);
         lcd.clear(); 
       break;
   
   case 0x97483BFB: // IR nin gonderdigi degerler  
   
     lcd.clear(); 
     lcd.setCursor(0,1);
     lcd.print("  2. LED AKTIF"); digitalWrite(LED_2,HIGH); delay(1000); digitalWrite(LED_2,LOW);
        lcd.clear();  
       break;
   
   case 0xF0C41643: 
   
     lcd.clear(); 
     lcd.setCursor(0,1);
     lcd.print("  3. LED AKTIF"); digitalWrite(LED_3,HIGH); delay(1000); digitalWrite(LED_3,LOW);
        lcd.clear(); 
       break;
       
    case 0x9716BE3F:
    analogdeger = analogRead(sensorgiris); // sicaklik icin analog okuma 
    analogdeger = (analogdeger/1023)*5000;
    sicaklik = analogdeger /10,0; 
    
     lcd.clear(); 
     lcd.setCursor(0,0);
     lcd.print("  Sicaklik ");
     lcd.setCursor(8,1);
     lcd.print(sicaklik); 
     delay(1000);
     lcd.clear();
    
    
   }
   
  irrecv.resume(); // LOOP icinde oldugumuz icin okumaya devam ettiriyoruz
  
}


Başlangıç seviyesi için iyi bir proje. Sizde kodları değiştirerek yada farklı modüller ekleyerek kendinize göre tasarlamanızı tavsiye ederim. Çünkü kendiniz yapıp bir şeyleri değiştirmediğiniz  sürece Arduino yada Programlama alanında ileri seviyelere geçemezsiniz.

(Uygulama yada programlamayla ilgili sorularınız için yskizilay@gmail.com)