Joystick Nedir ve Arduino İle Nasıl Kullanılır?
Joystick Nedir?
Joystick, esasen kontrol çubuğu anlamında ,video oyunlarında konrol sistemini oluşturan, oyunu oynatan ve modeline göre giriş, çıkış ve algılama fonksiyonu olan kontrol aracıdır. Joystick denilince bir çok çeşit olduğunu görebilirsiniz.
Aslında bütün kolların kullanımı mantığı basit, sadece tasarım modelleri ve fonksiyonları farklı. Arduino ile kullanacağımız joystick en basit modelidir. Playstation kollarında olan oyun karakterimizi veya arabamızı yönlendiren analog joysticktir. Analog Joystick, biri dikey hareket (Y ekseni) ve diğeri yatay hareket (X ekseni) için olmak üzere birbirine bağlı iki potansiyometreye benzer. Joystick ayrıca bir seçme anahtarı ile birlikte gelir. Retro oyunlar, robot kontrolü veya RC arabalar için çok kullanışlı olabilir.Aşağıda resmi görülmektedir.
Analog Joystick Özellikleri
- 5v ile çalışmaktadır.
- 2 ekseni(x ve y) vardır.
- 1 adet butonu vardır.
- Boyutları: 26 x 34 x 32 mm
Joystick | Arduino |
VCC | 5V |
GND | GND |
VRx | A0 |
VRy | A1 |
SW | 2 |
Bağlantı pinlerini siz kendinize göre de değiştirebilirsiniz.
Joystick Hareket Temeli
Arduino Uno veya mikrodenetleyici olarak Atmega328 kullanan herhangi bir arduino kartı, 10 bitlik ADC çözünürlüğüne sahiptir. Bu nedenle her analog kanaldaki değerler 0 ile 1023 arasında değişebilir. Şimdi sırasıyla VRx’i A0’a ve VRy’yi A1’e bağlayan analog girişler aşağıdaki resimde gösterildiği gibi değerleri göstermelidir.
Çubuğun başlangıç konumu ( x,y:511.511) konumundadır. Çubuk X ekseni üzerinde bir uçtan diğer uca hareket ettirilirse, X değerleri 0’dan 1023’e değişecektir ve Y ekseni boyunca hareket ettirildiğinde aynı şekilde olur.
Arduino İle Joystick Bağlantı Şeması
Joystickimizi kullanmak için aşağıdaki gibi bağlantılarımızı yapalım.
Arduino İle Joystick Kodu
Aşağıda kodumuz açıklamaları ile birlikte verilmiştir.
//x ekseni pini tanımlıyorruz
#define joyX A0
//y eksenini tanımlıyoruz
#define joyY A1
// buton pinimizi tanımlıyoruz.
#define buton 2
void setup() {
//ser haberleşme hızımızı ayarlıyoruz
Serial.begin(9600);
}
void loop() {
// x ve y ekseninin değerlerini okuyoruz.
int xValue = analogRead(joyX);
int yValue = analogRead(joyY);
//buton değerimizi okuyoruz
int but=digitalRead(buton);
//x, y ve butonumuzun değerlerini yazdırıyoruz.
Serial.print(xValue);
Serial.print("\t");
Serial.print(yValue);
Serial.print("\t");
Serial.println(but);
}