Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu
Girdi

Buton

Basılınca iki ucunu birleştiren anahtar. Kart, butonun durumunu bir giriş pininden okur.

Laboratuvarda dene

Nasıl çalışır?

Buton, basılmadığında iki ucu arasında bağlantı olmayan, basılınca iki ucu birleştiren (kısa devre yapan) bir anahtardır. Kendi başına bir gerilim üretmez; yalnızca bir yolu açar ya da kapatır.

Arduino bir butonu okumak için pini giriş yapar ve butonun bir ucunu o pine, öbür ucunu GND'ye bağlarsın. Sorun şudur: buton basılmamışken pin hiçbir şeye bağlı kalmaz (yüzen giriş) ve rastgele okunur. Çözüm, pini kodda INPUT_PULLUP yapmaktır: kartın içinde pini 5 V'a çeken bir direnç devreye girer.

Sonuç ters mantıktır:

  • Basılı değil: pin 5 V'a çekilir, digitalRead HIGH okur.
  • Basılı: pin GND'ye bağlanır, digitalRead LOW okur.

İleri düzey: Gerçek butonların kontakları basarken çok kısa süre titrer (bounce). Bir basış, kodda birkaç kez görünebilir. Bunu önlemeye "debounce" denir (Modül 3, 8. ders).

Laboratuvarda nasıl bağlanır?

NeredenNereye
Buton AUno D2
Buton BUno GND

Kodda pinMode(2, INPUT_PULLUP); yazarsın. Butona basmak için parçayı seçip özellik panelinden Basılı seçeneğini açarsın ya da parçaya basılı tutarsın; devre çalışırken de değiştirebilirsin. Laboratuvarda basılı butonun direnci çok küçüktür (0,1 Ω), açıkken bağlantı yoktur. İç pull-up direnci modelde yaklaşık 35 kΩ'dur.

Laboratuvar bağlantısız (yüzen) bir giriş için uyarı verir.

Sık yapılan hatalar

  • Butonun mantığını ters sanmak. INPUT_PULLUP ile basılı = LOW'dur; "basılınca HIGH" beklersen program ters çalışır.
  • INPUT_PULLUP yazmayı unutmak. Dış direnç yoksa pin yüzer ve okuma rastgele olur.
  • Butonun ucunu 5 V'a bağlamak. INPUT_PULLUP kullanırken diğer ucu GND'ye bağlarsın.
  • Bir basışı birden çok basış saymak. Gerçek butonlarda kontak titreşimi (bounce) buna neden olur.
  • GND bağlantısını unutmak. Buton basılsa bile pin LOW'a çekilemez.
Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • TestlerimMini testler ve puanlarSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç