7.01.2012

Arduino Project 2 - Digital Input

Herkese merhaba
Arduino ile ikinci örnek çalışmam da dijital bilgi okuyacağım. Bu çalışmada buton ile Arduino'ya dijital sinyal göndereceğim. Yani lojik '1' ve lojik '0' değerleri. Bunu buton yardımı ile +5 V ve 0V seçimini yaparak elde edeceğiz. Ardından gelen dijital değerleri yazdığım program ile değerlendirip dijital çıkış üreteceğim. Bu sayede gerekli bacaklara bağladığım ledleri yakacağım.

Bu çalışmadan önce kolaylık olması açısından Button Kullanımı yazımı okuyunuz.

Yani bu çalışmada iki butondan herhangi birine basınca gerekli olan led ışık verecek.

Öncelikle gerekli olan parçalar neler bir bakalım;

- 2 Adet 220 Ohm Direnç
- 2 Adet 1K Ohm Direnç
- 2 Adet Buton-Anahtar
- 1 Adet Arduino Mega 2560 ya da diğer Arduino boardlarından biri
- 1 Adet Breadboard
- Arduino Yazılımı

Gerekli olan mazlemeelr tamam ise şimdi kodu inceleyelim :

Kod :

 /*
*************
H.MelihErdogan
*************
Project 2
Name : "Digital Input"
*/

int switchPin1 = 50; // Anahtar ile dijital değer göndereceğim pin numarasını bir değişkene attım.
int switchPin2 = 52; // Anahtar ile dijital değer göndereceğim pin numarasını başka bir değişkene attım.
int ledPin1 = 12; // led bağlayacağım pin numarası - Kırmzı LED
int ledPin2 = 11; // led bağlayacağım pin numarası - Yeşil LED

boolean ledOn1 = false; // birinci ledin durumunu saklıyorum
boolean ledOn2 = false; // ikinci ledin durumunu saklıyorum
boolean lastButton1 == LOW // birinci butonun durumunu saklıyorum
boolean lastButton2 == LOW // ikinci butonun durumunu saklıyorum

void setup(){ // gerekli ayarları yapıyorum
pinMode(switchPin1, INPUT); // Dijital değer okumak için 50 numralı pini giriş olarak ayarladım.
pinMode(switchPin2, INPUT); // Dijital değer okumak için 52 numaralı pin giriş olarak ayarladım.
pinMode(ledPin1, OUTPUT); // 12 numaralı pini dijital çıkış olarak kullanacağımı bildirdim.
pinMode(ledPin2, OUTPUT); // 11 numaralı pini dijital çıkış olarak kullanacağımı bildirdim.
}

void loop(){

// eğer 50 numaralı pinde +5V varsa yani lojik '1' ise diğer bir tarifdeğişkeni i ile anahtara basılmış
// VE anahtarın son hali kapalı ise
// portan değer okuma işini pin numarasını digitalRead fonkdiyonuna yazarak yapıyorum

 if (digitalRead(switchPin1) == HIGH && lastButton1 == LOW ){
 ledOn1 = !ledOn1; // ledOn1 değerini tersle yani ledi yamak yada söndürmek için ayarla
 }

// eğer 52 numaralı pinde +5V varsa yani lojik '1' ise diğer bir tarifi ile anahtara basılmış
// VE anahtarın son hali kapalı ise

 else if (digitalRead(switchPin2) == HIGH && lastButton2 == LOW ) {
 ledOn2 = !ledOn2; // ledOn2 değerini tersle yani ledi yamak yada söndürmek için değişkeni ayarla
}
//
eğer butonlara basılmıyor ise son hallerini LOW olarak ayarla.
// Bu sayede elimizi butondan çekmediğimiz sürece led değerlerini tersleme ihtimalide ortadan kalkıyor.

else{
lastButton1 = digitalRead(switchPin1);
lastButton2 = digitalRead(switchPin2);
}
digitalWrite(ledPin1, ledOn1); // 50 numaralı pine ledOn1 değişkenindeki değeri dijital çıkış yap 
digitalWrite(ledPin2, ledOn2); // 52 numaralı pine ledOn2 değişkenindeki değeri dijital çıkış yap
delay(50);  // 50 ms bekle
// 50 ms bekle butondan parmağın çekilmesi için geçen süre arka arkaya basmaları önlemek için
// anahtarın stabil duruma geçmesi için 50 ms bekleme yaptım
}
Kod ile iligili herşey tamam ise devreyi kurmaya başlayabiliriz.

Hazırlanması gereken devre şeması :


Devrenin kurulmuş hali :
Evet katılıyorum çok karmaşık görünüyor. Bu nedenle siz yukarıdaki devre şemasını örnek alarak, yazdığınız yazılıma uygun olan kendi devre tasarımınızı oluşturun :)


        Dijtal giriş için 52 v3 50 numaralı pinleri kullandım. Dijital çıkış için ise 12 ve 11 numaralı bacaklar kullanıldı. Gerekli olan +5 V ve GND bağlantıları arduino üzerinden yapıldı. Aşağıdaki fotoğrafta benim yaptığm bağlantılar net bir şekilde görülmektedir.


    Projenin çalırken çekilmiş fotoğrafı aşağıdadır. Sağdaki butona basınca kırmızı led yanıyor.   


Projenin çalıştırılmış halini aşağıdaki videodan izleyebilrsiniz. Bir sonraki çalışmada görüşmek üzere.


Teşekkür : İlk çalışmalarım sırasında hazırladığı video anlatımlar ile Arduino programlamayı öğrenmemde büyük faydası dokunan Jeremy Blum isimli Arduino kullanıcınsa çok teşekkür ederim.

Diğer Arduino projelerine de bakmak isterseniz technologylaboratory.blogspot.com/search/label/Arduino

Hiç yorum yok:

Yorum Gönder