Arduino Arduino Projeleri Proje

2 Eksen XY Joystick Modül ve Kullanımı

Joystick Nedir?

Joystick modülü, içerisinde iki eksende hareket edebilen iki potansiyometre bulunan tümleşik bir modüldür. Bu iki potansiyometrenin hareketi ile 2 eksende bir hareket elde edilir. Bu X ve Y ekseninde elde edilen hareket sonucunda potansiyometrelerden okunan değerler led yakma, motor kontrolü, uzaktan kumandalı araba kontrolü vb bir çok arduino projesinde kullanılabilir.arduino-joystick-x-y-eksen-hareketi

arduino-joystick-x-y-eksen-hareketi

Joystick modülünün X ve Y eksenleri yukarıdaki resimdeki gibidir. Ayrıca joystick modülünün bir kenarında bir adet buton butunmaktadır. Bu buton joystick modülüne üstten bastığınızda 0 değerini, basılmadığında ise 1 değerini üretir. Bu buton Pullup olduğu için normal butonların tersine bir çalışma mantığı vardır.

Joystick’ten Analog Değerleri Okuma

Kumanda kolunun fiziksel konumunu okumak için, bir potansiyometrenin direncindeki değişikliği ölçmemiz gerekir. Bu değişiklik ADC kullanılarak bir Arduino analog pini tarafından okunabilir. Arduino kartı 10 bitlik bir ADC çözünürlüğüne sahip olduğundan, her analog kanaldaki (eksen) değerler 0 ile 1023 arasında değişebilir. Bu nedenle, çubuk X ekseninde bir uçtan diğer uca hareket ettirilirse, X değerleri değişecektir. 0 ile 1023 arasında benzer bir değer hareketi de Y ekseni boyunca hareket ettirildiğinde gerçekleşir. Kumanda kolu orta konumda kaldığında değer 512 civarındadır. Aşağıdaki grafik X ve Y yönlerini gösterir ve ayrıca joystick çeşitli yönlere itildiğinde çıkışların nasıl tepki vereceğine dair bilgi edinmenizi sağlar.

Arduino ile Joystick Bağlantısı Nasıl Yapılır?

Joystick modülünde 5 adet çıkış pini bulunmaktadır. Bunlar sırasıyla; Gnd, 5V, VRx, VRy ve SW pinleridir. Bu pinlerin arduino bağlantısı aşağıdaki resimdeki gibi yapılmalıdır.

joystick-arduino-baglantisi-nasil-yapilir

 Örnek:

2 eksen XY Joystick Modül ile 2 adet servo motoru kontrol edeceğiz. Bağlantı şemamış şu şekilde.

Program Kodlarımız bu şekilde

#include <Servo.h>

const int servo1 = 3;    // first servo
const int servo2 = 10;   // second servo
const int joyH = 3;      // L/R Parallax Thumbstick
const int joyV = 4;      // U/D Parallax Thumbstick

int servoVal;         // variable to read the value from the analog pin

Servo myservo1;  // create servo object to control a servo
Servo myservo2;  // create servo object to control a servo



void setup() {

  // Servo  
  myservo1.attach(servo1);  // attaches the servo
  myservo2.attach(servo2);  // attaches the servo

  // Inizialize Serial
  Serial.begin(9600);
}


void loop(){

// Display Joystick values using the serial monitor
outputJoystick();

// Read the horizontal joystick value  (value between 0 and 1023)
servoVal = analogRead(joyH);          
servoVal = map(servoVal, 0, 1023, 0, 180);     // scale it to use it with the servo (result  between 0 and 180)
myservo2.write(servoVal);                     // sets the servo position according to the scaled value    

// Read the horizontal joystick value  (value between 0 and 1023)
servoVal = analogRead(joyV);           
servoVal = map(servoVal, 0, 1023, 180, 0);    // scale it to use it with the servo (result between 70 and 180)

myservo1.write(servoVal);                 // sets the servo position according to the scaled value

delay(30);                         // waits for the servo to get there

}


/**
* Display joystick values
*/
void outputJoystick(){

Serial.print(analogRead(joyH));
Serial.print ("---"); 
Serial.print(analogRead(joyV));
Serial.println ("----------------");
}

Kolay gelsin !

Similar Posts

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir