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"
*/
*************
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 :)
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
Diğer Arduino projelerine de bakmak isterseniz technologylaboratory.blogspot.com/search/label/Arduino
Hiç yorum yok:
Yorum Gönder