Merhaba Arkadaşlar, Bu yazımda arduino da bir buton kullanılarak bir ledi yakıp söndürmeyi anlatacağım. Onu anlatmadan önce ilk olarak pull-up ve pull-down direnci nedir onu öğreneceğiz. Buton kullanılan devrelerde pull-up ve pull-down dirençlerini kullanmak zorundayız. Bu dirençleri kullanmazsak devremizde bazı hatalar olacaktır. İlk iş olarak pull-up ve pull-down nedir ona değinerek işe başlayalım.
İlk başta devrelerimizde kullandığımız butonlar ile mikrodenetleyicimize sinyal göndeririz. Bu sinyali algılayan mikrodenetleyici çıkışta buna bağlı olarak bir işlem yapar(led yakar, motor çalıştırır vb). Peki butona bastığımızda mikrodenetleyiciye +5V luk bir sinyal mi gitsin? Yoksa ilk anda mikrodenetleyiciye 5V gitsin de butona basınca bu enerjiyi kessin mi? Bunları anlamak için aşağıdaki resimi inceleyelim.
Yukarıda görüldüğü gibi pull-up direnç kullanmak demek ilk anda arduinoya +5V geliyor ve biz butona basınca pull-up direnci üzerinden akım topraga akıyor. Böylece ilk anda arduinonun girişinde lojik 1 yani güç var, butona basınca arduinonun girişinde lojik 0 değeri yani güç yok okunuyor. Pull-down ise ilk anda arduino girişinde lojik 0 varken butona bastığımızda akan akım dirençli yoldan geçemeyeceği için kolay olan yolu seçip arduinoya girecek. Böylece butona basınca girişte lojik 1 değeri okunacaktır. Biz arduinoyu kullanırken butonun bağlı olduğu pini giriş olarak ayarlayacağız. Butona basınca arduino girişinde oluşan bu değişimleri kullanarak içeride işlemler yaptırarak istediğimiz çıkışları kontrol edeceğiz.
Pull-up ve Pull-down Dirençleri Kullanmazsak Ne Olur?
Pull-up ve Pull-down dirençleri kullanmadan doğrudan bir buton kullanırsak butona basınca lojik 1 değeri arduinoya ulaşır. Ama butonu eski haline döndürdüğümüzde arduinonun giriş portunun topraklanması lazım. Bu toprağı kullanmazsak arduino içerisinde kalan parazitlerin biz enerjiyi kestiğimiz zaman bizi yanıltıp hala enerji varmış gibi davranmasına sebep olacaktır. Alt tarafa topraklamasını yapıp sadece direnci kullanmazsak bu seferde butona basınca lojik 1 değerinin hiç arduinoya ulaşmadan doğrudan kısa devre olup toprağa gitmesine sebep olacağız. Unutulmamalıdır ki akım herzaman en kısa ve dirençsiz yolu tercih edip devresini tamamlamak ister. Bunları gözönünde bulundurarak pull-up ve pull-down dirençlerinin önemini anlamış olduk.
Şimdi arduinoda bir butona basınca ledi yakan bırakınca ledi söndüren devreye geçelim. İlk olarak devremizi çizelim...
Not: Programı yüklemeden önce ATmega328p mikroişlemcisine bootloader işlemini yapmış olmanız gerekmektedir. Bu işlemlerin nasıl yapıldığını daha önceki konularda anlatmıştık. Yandaki şemada belirtilen Arduino UNO ile ATmega328p mikroişlemcinin TX,RX ve Reset bağlantılarını yapmamız gerekiyor. İlave olarak Arduino UNO kartı üzerindeki mikroişlemciyi yerinden çıkarmamız gerekli. USB kablosuyla Arduino UNO’nun bilgisayar bağlantısını sağlıyoruz. Ardından Arduino IDE programında mikroişlemciye yüklenecek programı açıyoruz. Sırasıyla aşağıdaki seçimleri yapıyoruz.
1. Araçlar>>Kart>>ArduinoNano 2. Araçlar>>İşlemci>>ATmega328 3. Araçlar>>Port>>ArduinoUnonun bağlandığı usb portunu 4. Araçlar>>Programlayıcı>>AVRISP mkll
Ardından programı yüklemek için sağ ok işaretine basıyoruz.
Devreyi incelediğimiz arduinoda 8 numaralı pine ledi bağlıyoruz ve bu pini kodu yazarken çıkış pini olarak ayarlıyacağız. Butonun bağlı olduğu pini 9 numaralı pine bağladık ve bu pini de giriş pini olarak ayarlayacağız. Dikkat ettiyseniz devrede butonu bağlarken butona pull-down direnci bağladık. Yukarıda da değindiğimiz gibi böyle devreleri kurarken pull-up veya pull-down dirençlerinden birisini kullanmak zorundayız. Yoksa devremizde bazı sorunlarla karşılaşırız. Butona basmıyorken arduinoya gelen sinyal topraktan gelen lojik 0 sinyalidir. Butona bastığımız anda +5V'tan gelen enerji direnç üzerinden geçmeyecek ve arduinoya girecektir. Burada arduinonun 9 numaralı pininde artık lojik 1 değeri vardır. Kodu yazarken bu bilgileri belirleyip ona göre yazacağız. Tüm bunları öğrendikten sonra arduinoda kod yazma kısmına geçelim.
int led=8; //8. pinin ismi led oldu int buton=9; //9. pinin ismi buton oldu int butonDurum=0; // buton durumunu atamak için değişken belirledik void setup(){ pinMode(led,OUTPUT); // led pinini çıkış olarak ayarladık pinMode(buton,INPUT); // buton pinini giriş olarak ayarladık } void loop(){ butonDurum=digitalRead(buton); // 9. pinin dijital değeri okuyup butonDuruma attık if(butonDurum==HIGH){ // eğer okunan değer 1 ise yani butona basılmışsa digitalWrite(led,HIGH); // ledi yak }else // değilse digitalWrite(led,LOW); //ledi söndür }
Kodu attıktan sonra arduino bağlantısını artık sökebiliriz. Bunun yerine 7805 voltaj regületörü ile harici bir güç kaynağı ile devremizi çalıştırabiliriz. Devrenin son hali şöyledir
Sorularınızı yorum bölümünden veya mail atarak iletebilirsiniz. Şimdilik hoşçakalın...