Proje 02 - Buton
Giriş
Bu projede Kit üzerindeki butonu nasıl okuyabileceğini öğreneceksin.
Arduino'nun dijital pinlerinin giriş olarak da ayarlanabileğini anlatmıştım. Bu kez butonun bağlı olduğu 7 nolu pin'i kullanarak LED'i kontrol etmeyi deneyeceğiz.
Elektronik
Şemaya bakacak olursan, Arduino'nun 7 nolu pininin, R8 direnci üzerinden 5 voltluk besleme gerilimine bağlı olduğunu farkedeceksin. Bu direnç butona basılmadığı durumda pinde 5Vluk bir gerilim olmasını, yani pinin değerinin yüksek (HIGH) olarak okunmasını sağlıyor.
Dijital girişlerde gerilim kaynağına veya şaseye bağlı bu tür dirençler çok kullanılır. Bunun sebebi hiçbir şeye bağlı olmayan bir giriş bacağının değerinin belirsiz olmasıdır. Böyle boşta duran bir bacağı okuduğunda bazen LOW bazen HIGH değer okursun, ne olacağı hiç belli olmaz. Bu yüzden buton basılı değilken sürekli HIGH okumak içın böyle bir dirence ihtiyaç var. Bu dirence Pull-Up (Yukarı çeken) direnç ismi verilir.
Butonun da bir tarafı arduino'ya bir tarafı ise şaseye, yani USB'den aldığımız besleme geriliminin eksi tarafına bağlı. Böylece butona basıldığında pin üzerinde şase ile aynı gerilim seviyesi, yani sıfır volt oluyor. Bu da pin'in değerinin düşük (LOW) olarak okunmasını sağlıyor.
Yeni Kavramlar
INPUT Sabiti
INPUT, Arduino'nun önceden tanımlanmış bir sabitidir. Bir pini giriş olarak ayarlamak için pinMode() fonksiyonunda kullanılır. Bu sabit sayesinde pin üzerinden gelen elektriksel sinyalleri okuyabilirsin.
Pull-up Direnci
Pull-up direnci, dijital giriş pinlerinin belirsizlik sorununu çözer. Hiçbir şeye bağlı olmayan bir pin "havada asılı" kalır ve değeri sürekli değişir. Pull-up direnci, buton basılmadığında pini 5V'a çekerek sabit HIGH değer sağlar. Su musluğu kapalıyken bile boruda basınç olması gibi düşünebilirsin.
Karşılaştırma Operatörü (==)
== operatörü, iki değerin birbirine eşit olup olmadığını kontrol eder. digitalRead(butonPin) == LOW ifadesi "buton pininin değeri LOW'a eşit mi?" sorusunu sorar. Eğer eşitse true (doğru), değilse false (yanlış) sonucu döner.
Boolean Mantığı
Arduino'da HIGH ve LOW değerleri aslında boolean (mantıksal) değerlerdir. HIGH = true (doğru/1), LOW = false (yanlış/0) anlamına gelir. Bu ikili sistem tüm dijital elektroniğin temelidir.
Dijital Okuma Prensibi
digitalRead() fonksiyonu, pin üzerindeki gerilimi okur ve yorumlar. 3.3V'un üzerindeki gerilimi HIGH, 1.7V'un altındakini LOW olarak kabul eder. Bu sayede elektronik sinyaller sayısal değerlere dönüşür.
Kod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
Kodu nasıl Arduino'ya yüklerim?
Kiti USB kablosuyla bilgisayarına bağlayıp, Arduino IDE penceresinde bulunan
butonuna basarak kodu yükleyip çalıştırabilirsin.
Kod çalıştığında butona basılı tuttuğun sürece LED yanacak, bıraktığında ise sönecek.
Olmadı mı?
Eğer bu süreçte bir problemle karşılaşırsan Sorun giderme kısmına bir göz at.
Egzersizler
Böylece digitalRead() fonksiyonunu kullanarak nasıl bir girişi okuyabileceğini öğrenmiş oldun. Bu projede öğrendiklerinle aşağıdakileri yapabilir misin?