Arduino button ile led yakma uygulamasına geçmeden önce buton nedir kısaca ona bakalım. Buton iki veya bazen ikişerli ortak olmak üzere 4 adet terminalden oluşan anahtarlama elemanıdır diyebiliriz. Anahtarlama elemanı olması sebebiyle elektrik devresine seri olarak bağlanırlar. yani devreyi herhangi bir yerinden keserler, butona basıldığı anda terminaller fiziksel olarak temas eder ve devre buton üzerinden tamamlanmış olur.
Yukarıdaki animasyona bakıldığında çalışma prensibini anlamak gayet basittir. Söz konusu animasyon Sparkfun 'un web sitesinden alınmıştır.
Sayfanın girişinde yer alan Arduino buton ve led bağlantısının gösterildiği görselden biraz bahsedelim. Arduino 'nun 13 üncü pinine bir ader direnç üzerinden (Buradaki direncin nasıl hesaplandığını öğrenmek için lütfen tıklayınız) ledin anod (+) ucu bağlanmıştır. Ledin diğer ucu (katot) da Arduino 'nun GND pinine bağlanmıştır. Butona gelince, görsele göre konuşmak gerekirse solda kalan terminaller birbirine içerden fiziksel olarak bağlıdır, sağdaki terminaller de içerden birbirine bağlıdır, soldaki ve sağdaki terminaller butona basıldığında birleşir ve devre tamamlanmış olur. Burada butonun bir terminalini soldakilerden üstteki ya da alttaki olabilir, Arduino 'nın digital pinlerinden birine, diğer terminali de Arduino 'nun GND pinine bağlanmıştır. Bu durumda pin üzerinde LOW kontrolü yapıyor olacağız, pinimizi kod kısmında INPUT_PULLUP olarak belirleyebildiğimiz için buton için fazladan bir direnç kullanmaktan kurtulmuş oluyoruz. Eğer ki butonda +5V anahtarlamak istiyor olsaydık, ki gördüğünüz üzere gereksiz fantastik bir durum olur bu durumda, o zaman GND' ye bağladığımız terminali 5V 'a bağlamamız ve de Arduino 'nın dijital pinine bağladığımız terminalini de bir pull down direnci ile GND 'ye bağlamamız gerekiyor olacaktı, neden ? çünkü Arduino input modlar içerisinde INPUT_PULLDOWN diye bir seçeneğimiz yok. Her iki durum için de Pull-up ya da pull-down yapmamızın nedeni digital pinin giriş seviyesinin kararsız kalmasını engellemektir. Kararsız kaldığı zaman, butona basılmasa da etraftan alacağı gürültü sebebiyle zaman zaman butona basılmış gibi davranması kaçınılmazdır. Devre ve kurgu anlaşıldıysa kod kısmına geçebiliriz.
Arduino ile buton yakmak örnek kod:
#define LED 13 #define BUTTON 7 void setup() { pinMode(LED, OUTPUT); pinMode(BUTTON, INPUT_PULLUP); } void loop() { if (digitalRead(BUTTON) == LOW) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } }
Şimdi satır satır bakalım neler yazdık,
#define LED 13 satırıyla 13 yazmamız gereken yerlere artık LED yazabiliriz demiş olduk
aynı şekilde 7 yerine BUTTON yazabiliriz demiş olduk, define kullanımı hakkında detaylı bilgi sahibi olmak istiyorsanız arduino ve c++ için define kullanımını anlattığım youtube videoma bakabilirsiniz.
Geldik setup kısmına, Led imizin bağlı olduğu pini çıkış olarak ayarladık, bunda sorun yok, dikkat edeceğimiz nokta butonun bağlı olduğu pindeki INPUT_PULLUP ibaresi dikkat edin yalnızca INPUT değil, yine youtube da yayınladığım Arduino digital pinlere erişim videosunu izlemenizi tavsiye ederim tüm detayları orada bulacaksınız. Bu kısmı INPUT olarak belirlerseniz, digital pini bir dirençle pull-up yapmanız gerekmekte.
Loop içerisinde, kod enerji kesilene kadar dönüp duracaktır, if ibaresine yabancı olanlar için yine detaylı C++ Arduino If kullanımı Videosu youtube kanalımda mevcut, digitalRead fonksiyonu ile butonun bağlı olduğu pinin seviyesini okuyoruz, eğer ki pin seviyesi LOW ise-bu durumun oluşabilmesi için butona basılmış olması gerekiyor- digitalWrite ile led in bağlı olduğu pin seviyesini HIGH yaparak ledin yanmasını sağlamış oluyoruz. Bu durumda ledimizin sürekli yanık kalmaması için butondan el çekildiğinde sönmesi için de else kısmında ledin bağlı olduğu pin seviyesini LOW yapıyoruz.
Konu bu kadar basit bir konu olsa da mevzuya uzak olan kimseler için anlaşılması zor olabilir, herşeyi detaylıca yazmaya çalıştım, yine de kafanızda soru işareti oluşturysa lütfen yorumlarda sormaktan çekinmeyiniz
Herkese kolay gelsin!
Hiç yorum yok:
Yorum Gönder