Yeni Açılan Kurumlara Ücretsiz   •   Yeni Açılan Kurumlara Ücretsiz   •   Yeni Açılan Kurumlara Ücretsiz   •   Yeni Açılan Kurumlara Ücretsiz   •   Yeni Açılan Kurumlara Ücretsiz   •   Yeni Açılan Kurumlara Ücretsiz   •   Yeni Açılan Kurumlara Ücretsiz   •   Yeni Açılan Kurumlara Ücretsiz   •  

Anaokulu veya eğitim kurumunuz için kodlama eğitimi mi arıyorsunuz? Hemen İletişime Geç
Arduino

Buton ve Pull-Up Direnci: Havada Kalan Pin

2 dk okuma

Butonu bağladınız ama değer rastgele okunuyor: pinin neden havada kalmaması gerektiğini ve pull-up direncini anlattık.

Buton, elektroniğin en basit girdi parçasıdır: basılıyken iki ucu birbirine bağlar, bırakıldığında ayırır. Basitliğine rağmen yeni başlayanların en çok takıldığı yer de burasıdır.

Havada kalan pin sorunu

Bir pini yalnız butona bağlarsanız, buton basılı değilken o pin hiçbir yere bağlı olmaz. Buna havada kalmak (floating) denir ve sonucu şudur: pin, çevredeki elektriksel gürültüyü toplayıp rastgele 0 ve 1 okur. Kodunuz doğru olsa bile buton kendiliğinden basılıyormuş gibi görünür.

Çözüm, butona basılmadığı zaman pini bilinen bir seviyeye çekmektir:

  • Pull-up direnci: Pin, bir direnç üzerinden 5V'a çekilir. Basılmadığında HIGH, basıldığında LOW okunur.
  • Pull-down direnci: Pin GND'ye çekilir. Mantık tersine döner.

Dahili direnci kullanın

Arduino'nun içinde bu iş için hazır dirençler vardır. Pini INPUT_PULLUP olarak tanımlarsanız harici bir direnç koymanıza gerek kalmaz; devreniz iki bileşen eksilir.

Bu durumda mantığın ters olduğunu unutmayın: basılı = LOW. Yeni başlayanlara ters gelen bu ayrıntı, "kod çalışmıyor" denen durumların önemli bir kısmının sebebidir.

Zıplama (bounce) nedir?

Butonun metal temasları, basıldığı anda mekanik olarak birkaç milisaniye titrer. Kart bu titremeyi onlarca ayrı basış gibi okuyabilir. Bir sayaç yapıp her basışta bir artırmayı denediğinizde sayının üçer beşer atladığını görürsünüz.

Çözüm debounce'tır: basış algılandıktan sonra kısa bir süre (20–50 ms) yeni basış kabul etmemek. Bunu bir bekleme ile yapmak en kolayıdır ama programı durdurur; zaman damgası karşılaştırarak yapmak daha doğru bir alışkanlıktır.

Basış mı, basılı tutma mı?

Bir butonun iki farklı sorusu vardır ve karıştırılmaları çok yaygındır:

  • Durum: "Şu anda basılı mı?" Işığı basılı olduğu sürece yakmak için bu yeterlidir.
  • Kenar: "Az önce basıldı mı?" Sayaç artırmak, modu değiştirmek ya da menüde ilerlemek için gereken budur.

İkincisi için bir önceki durumu saklamanız ve yalnız değişim anını yakalamanız gerekir. Bunu yapmayan bir sayaç, parmağınızı bir saniye tutmanızla yüzlerce kez artar.

Uzun basış

Aynı butona iki farklı iş yaptırmak isterseniz süreye bakabilirsiniz: kısa basış açar kapatır, iki saniyeden uzun basış ayarlara girer. Tek tuşlu cihazların neredeyse tamamı bu yöntemi kullanır ve kodda yalnız bir zaman damgası tutmayı gerektirir.

HipoCodes devre simülasyonunda butonu bağlayıp pull-up ile pull-down farkını doğrudan görebilirsiniz.

Etiketler

  • buton
  • push button
  • pull-up direnci
  • arduino
  • robotik kodlama
  • elektronik

Bunlar da ilginizi çekebilir