Projelerinize analog motor hız kontrolü, robot kol yönlendirmesi veya menü içi navigasyon özellikleri kazandırmak istediğinizde en kararlı ve sezgisel çözüm joystick modülleridir. Çift eksenli bu modüller, içlerinde yer alan iki adet bağımsız potansiyometre (X ve Y eksenleri için) ve tek bir yaylı buton mekanizması (Z ekseni için) sayesinde tam kontrol sağlar. Robotik projelerden oyun konsolu arayüzlerine kadar geniş bir yelpazede analog yön tayini yapmanıza olanak tanır.

0 ile 1023 arasında değer ürettiği anlamına gelir. Joystick tam merkezde dururken (hiç dokunulmadığında), teorik olarak her iki eksenden de tam orta değer olan 512 okunmalıdır. Ancak mekanik üretim toleransları nedeniyle bu değer genellikle 490-530 arasında salınım gösterir; kod yazarken bu küçük kayma payını (deadzone / ölü bölge) hesaba katmak kararlı çalışma için şarttır.

Aşağıdaki kod kurgusu, X ve Y eksenlerindeki analog hareketleri okur ve buton (Z ekseni) tıklamasını donanımsal dahili direnç (pull-up) mantığıyla yakalayarak seri port ekranına canlı olarak yazdırır:
// Joystick Pin Tanımlamaları
const int pin_X = A0; // X ekseni analog okuma bacağı
const int pin_Y = A1; // Y ekseni analog okuma bacağı
const int pin_SW = 2; // Buton (Switch) dijital okuma bacağı
void setup() {
Serial.begin(9600);
// Eksen pinleri analog giriş olduğu için otomatik konfigüre edilir,
// ancak buton pinini dahili Pull-Up direnci aktif ederek giriş tanımlıyoruz.
// Bu sayede butona basılmadığında lojik HIGH, basıldığında LOW okuyacağız.
pinMode(pin_SW, INPUT_PULLUP);
Serial.println("Joystick Kontrol Sistemi Baslatildi.");
}
void loop() {
// Analog eksen değerlerini okuyoruz (0 - 1023 arası)
int deger_X = analogRead(pin_X);
int deger_Y = analogRead(pin_Y);
// Dijital buton durumunu okuyoruz (0 veya 1)
int buton_durum = digitalRead(pin_SW);
// Okunan ham verileri ekrana formatlı şekilde yazdırıyoruz
Serial.print("X Ekseni: ");
Serial.print(deger_X);
Serial.print(" | Y Ekseni: ");
Serial.print(deger_Y);
Serial.print(" | ");
// Buton basılma durumunu kontrol ediyoruz (INPUT_PULLUP mantığından dolayı basıldığında LOW olur)
if (buton_durum == LOW) {
Serial.println("BUTONA BASILDI!");
} else {
Serial.println("Buton: Serbest");
}
// Seri port ekranının akıcı ve okunabilir kalması için kısa bir gecikme
delay(150);
}
Modül üzerinde yer alan 5 adet pinin standart bağlantı mimarisi şu şekildedir:
GND: Toprak hattıdır, doğrudan Arduino üzerindeki GND pinine bağlanır.
+5V (veya VCC): Güç hattıdır, Arduino üzerindeki 5V pinine bağlanır.
VRx: X ekseninin analog çıkışıdır. Sağa ve sola yapılan hareketleri iletir. Arduino'nun A0 analog pinine bağlanır.
VRy: Y ekseninin analog çıkışıdır. Yukarı ve aşağı yapılan hareketleri iletir. Arduino'nun A1 analog pinine bağlanır.
SW (Switch): Dahili butonun dijital çıkışıdır. Üstten joystick kafasına dik olarak basıldığında tetiklenir. Yukarıdaki kod kurgusuna göre Arduino'nun dijital D7 pinine bağlanmalıdır.
Henüz yorum yapılmamış. İlk yorumu siz yapın!