Free for Newly Opened Institutions   •   Free for Newly Opened Institutions   •   Free for Newly Opened Institutions   •   Free for Newly Opened Institutions   •   Free for Newly Opened Institutions   •   Free for Newly Opened Institutions   •   Free for Newly Opened Institutions   •   Free for Newly Opened Institutions   •  

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

Joystick: İki Eksen ve Bir Buton

2 dk okuma

İçinde aslında iki potansiyometre var: joystick'in X ve Y eksenlerini nasıl okuduğunu ve ölü bölge kavramını anlattık.

Joystick modülü, göründüğünden daha basittir: içinde birbirine dik yerleştirilmiş iki potansiyometre ve mile basıldığında çalışan bir buton vardır.

Eksenler nasıl okunur?

Kolu ittiğinizde iki potansiyometreden biri ya da ikisi birden döner:

  • X ekseni sağa sola hareketi ölçer.
  • Y ekseni ileri geri hareketi ölçer.

Her ikisi de analog pine bağlanır ve 0–1023 arasında bir değer verir. Kol serbestken ikisi de ortadadır, yani yaklaşık 512.

Merkez asla tam 512 değildir

Gerçek bir joystick'te merkez değeri 496 ya da 530 olabilir; hatta her açılışta biraz değişir. Bunu hesaba katmazsanız robotunuz kimse dokunmadan yavaşça ilerlemeye başlar.

İki alışkanlık bu sorunu çözer:

  1. Açılışta merkezi ölç: setup() içinde kola dokunulmadığı varsayılarak okunan değer, o oturumun merkezi kabul edilir.
  2. Ölü bölge (dead zone) bırak: Merkezin ±20 birim çevresini "hareket yok" say. Kol titrese bile robot kıpırdamaz.

Değeri işe çevirmek

Okunan ham değeri doğrudan kullanmak nadiren işe yarar. Genellikle onu anlamlı bir aralığa dönüştürürsünüz:

  • Motor hızı için: merkezden uzaklık ne kadar büyükse hız o kadar yüksek.
  • Yön için: merkezin solunda mı sağında mı olduğuna bakılır.
  • Menü için: eşiği geçtiğinde bir adım at, kol merkeze dönene kadar tekrarlama.

Son madde önemlidir: kol itili tutulduğu sürece menü akıp gider ve kullanıcı istediği satırda duramaz.

Buton unutulmasın

Mile basmak bir dijital giriş üretir ve bu giriş genellikle INPUT_PULLUP ile okunur — yani basılıyken LOW. Ateş etme, seçme ya da modu değiştirme gibi eylemler için ayrı bir tuş koymanıza gerek kalmaz.

Yönü sekiz kademeye indirmek

Analog değeri doğrudan kullanmak yerine sekiz yöne (yukarı, yukarı-sağ, sağ...) indirmek, menü ve oyun kontrolünde çok daha öngörülebilir sonuç verir. X ve Y'nin merkeze göre işaretine bakmak bunun için yeterlidir.

Kolun tam köşeye gitmesini beklemek yerine belirli bir eşiği aşmasını yeterli saymak, kullanıcıyı zorlamayan bir his verir.

Eksenler ters gelirse

Joystick'i devreye 90 derece dönük yerleştirdiyseniz X ile Y yer değiştirir; ters taktıysanız yön tersine döner. Bunu mekanik olarak düzeltmeye çalışmak yerine kodda tek bir yerde çevirmek en pratik çözümdür.

Aynı düzeltmeyi birden çok yerde yapmak, ileride yön hatalarının kaynağını bulmayı zorlaştırır.

Tek eksenli hâli için potansiyometre yazımıza bakabilir, HipoCodes devre simülasyonunda joystick'i deneyebilirsiniz.

Etiketler

  • joystick
  • analog kumanda
  • iki eksen
  • arduino
  • robotik kodlama
  • elektronik

Bunlar da ilginizi çekebilir