İlginizi Çekebilir
  1. Ana Sayfa
  2. Arduino
  3. Arduino Joystick Kullanımı

Arduino Joystick Kullanımı

featured

Bu yazımızda Arduinoda Joystick kullanımını ele alıyoruz. Hadi başlayalım.

Joystick Nedir ?

Joystick, iki eksen ve bir butondan oluşan ve kolun hareketlerine göre potansiyometre görevi gören oldukça çok kullanım alanına sahip olan bir parçadır. Bu parça iki eksenden oluşur ve bu eksenler X ve Y olarak adlandırılır.

joystick pinleri
Joystick

X ekseni yukarı ve aşağı doğru olan hareketleri kapsar iken Y ekseni ise sağa ve sola doğru yapıtımız hareketleri kapsamaktadır. Bunun dışında üstünde birde buton bulunmaktadır.

joistik min 1
Joystick Yandan Görünümü

Joystick aldıkça çok kullanım alanı bulunmaktadır. Oyun oynadığımız PS4 kollarından tutun kazı çalışmasında kullanılan uzaktan kumandalı kepçelerde dahi kullanılmaktadır. Oldukça hassas olan bu parça, eksenlere hareketleri algılayarak 0 ile 1023 arasında değerler üreterek gerekli komutları yapmaktadır.

Ps4 Kolu
Ps4 Kolu

Şimdi ise bu yukarda bulunan Joystick modülü ile projelerimizi başlayalım.

Proje 1

Bu projemizde Joystickten gelen verileri alarak serial ekranda yazdırmayı gösterecek. Hadi başlayalım. Şimdi ilk önce malzemeleri sıralamak ile başlayalım.

  • 1 Adet Arduino Uno
  • 1 Adet breadboard
  • 1 Adet Joystick modülü
  • Jumper kablolar

Simdi malzemeleri sıraladığımıza göre kod satırlarını oluşturmaya başlayalım.

//omerfarukyildiz.com
int btn = 8; //8 nolu pinin ismini tanımladık.
int xanalog = A0; //A0 nolu pinin ismini tanımladık.
int yanalog = A1; //A1 nolu pinin ismini tanımladık.
int xeksen, yeksen, buton; //Sonradan tanımlayacagımız degislkenleri tanımladık. 
void setup() {
  Serial.begin(9600); // Serial haberleşme açıldı.
  pinMode(xanalog, INPUT); //Analog pini açtık.
    pinMode(yanalog, INPUT); //Analog pini açtık.
pinMode(buton, INPUT_PULLUP); //Butonun bulundugu 8 nolu pin açtık.
}
void loop() {
xeksen=analogRead(xanalog); // Bu kısımda degişkenleri anolog olarak tanımlıyoruz.
yeksen=analogRead(yanalog); // Bu kısımda degişkenleri anolog olarak tanımlıyoruz.
buton=digitalRead(btn); // Bu kısımda degişkeni dijital pin olarak tanımladık. 

Serial.print("X ekseninin degeri: "); //Ekrana yazı yazdıyoruz.
Serial.println(xeksen); //ekrana degiskenin degerini yazdırıyoruz. 
Serial.print("Y ekseninin degeri: "); //Ekrana yazı yazdıyoruz.
Serial.println(yeksen); //ekrana degiskenin degerini yazdırıyoruz. 
Serial.print("Buton çalışma durumu: "); //Ekrana yazı yazdıyoruz.
Serial.println(buton); //ekrana degiskenin degerini yazdırıyoruz. 
Serial.println("------------------------"); //Ekrana yazı yazdıyoruz.
delay(250); // ekrana 25 milisaniyede bir yazdıracagımızı tanımladık. 
}

Yukarıdaki kod satırlarında öncelikle analog pinlerden almış olduğumuz verileri serial ekrana yansıttık.  Şimdi ise devre şemasını oluşturmamız gerekmektedir.

Joystick Prje 1 Sema
Proje 1 Joystick Seması

DİKKAT: Eğer elinizde bu joystickten bulunmuyor ise aşağıdaki fotoğraftaki Joystickten bulunuyor ise aşağıda oluşturduğumuz bağlantı şemalarına dikkat ederek yapınız.

joystick pinleri
Joystick

Eğer elinizde bundan bulunmakta ise Kablo bağlantıları şu şekilde yapınız;

  • GND  —> GND pini
  • +5V   —> 5V pini
  • VRx   —> Analog 0
  • VRy   —> Analog 1
  • SW    —> 8 nolu pin

Yukarıda şekilde devre elemanları kurduktan sonra Serial ekranı açtığımız zaman veriler 25 milisaniyede bir ekranımıza düşecektir. Bu sırada Joystick çeşitli yönlere çevirdiğinizde rakamların nasıl değiştiğini ve her eksenin farklı sayı türettiğini göreceksiniz. Bunun haricinde Joystick usttune bastıgınızda buton devreye girecektir ve buton yanında 1 rakamını göreceksiniz.

Proje 2

Bu projemizde ise Joystick ve servo motorlar yardımı ile Joystick kolunun hareketine göre iki servoyu hareket ettirmek için bu projeyi yapacaz. projemizde başlamadan önce malzemeleri sıralayalım;

  • 1 Adet Arduino Uno
  • 1 Adet breadboard
  • 1 Adet Joystick modülü
  • 2 Adet Servo motor (SG90- 9gr)
  • Jumper kablolar

Bu proje için kullanacağımız malzemeleri listeledik. Şimdi ise projemizin kod kısmını yazmaya başlayalım.

#include <Servo.h> //servo kutuphanesi tanımladık.
int servox = 8; //X ekseninin servosunu tanımladık.
int servoy = 9; //Y ekseninin servosunu tanımladık.
int xekseni = A0; //Joystickten gelen x ekseninin tanımladık.
int yekseni= A1; //Joystickten gelen x ekseninin tanımladık.
int servoacimin = 0; // Servo degerlerinin acısını sınırlanırını belirledik.
int servoacimax = 180; // Servo degerlerinin acısını sınırlanırını belirledik.
Servo servoydeger; //Kutuphaneden tanımlama yapıyoruz.
Servo servoxdeger; //Kutuphaneden tanımlama yapıyoruz.
int deger1; // Gerekli degişkenleri tanımlıyoruz.
int deger2;
int deger3;
int deger4;
void setup()
{
servoydeger.attach(servox); //Servo hareketi için gerekli olan portlar açılıyor.
servoxdeger.attach(servoy); //Servo hareketi için gerekli olan portlar açılıyor.
}
void loop()
{
deger1 = analogRead(xekseni); //deger1 degişkenine analog deger tanımlanıyor.
deger3 = analogRead(yekseni); //deger3 degişkenine analog deger tanımlanıyor.
deger2  = map(deger1, 0, 1023, servoacimin , servoacimax); //deger 2 degişkeninde x servosunun sınırları belirleniyor.
deger4  = map(deger3, 0, 1023, servoacimin , servoacimax); //deger 4 degişkeninde y servosunun sınırları belirleniyor.
servoydeger.write(deger2); 
servoxdeger.write(deger4);
  delay(10); // bu islemlerin süresi 1 milisaniye olarak belirleniyor.
}

Bu projede diğer proje 1 den farklı olarak kütüphane ekledik. Kütüphaneler çalışacak parçaların belirli kural ve ayarlar içeren yapılardır. Örneğin bu projede servo.h kütüphane kullandık ve bu kütüphane servo motorlar ile ilgili ayarları ve özel komutları içermektedir.

DİKKAT: Servo.h kütüphanesini Arduino programından Araçlar>kütüphane Yönet e tıkladıktan sonra Servo.h yazıp arattıktan sonra servo başlıklı kütüphane indirmeniz gerekmektedir. Bu işlemi yapmazsanız kodunuz çalışmayacaktır.

Yukarıda kod satırlarını oluşturduktan sonra şimdi de şemayı oluşturalım.

joystick devre proje 2 sema ANA
Proje 2 Devre Şeması

DİKKAT: Eğer elinizde bu joystickten bulunmuyor ise aşağıdaki fotoğraftaki Joystickten bulunuyor ise aşağıda oluşturduğumuz bağlantı şemalarına dikkat ederek yapınız.

joystick pinleri
Joystick

Eğer elinizde bundan bulunmakta ise Kablo bağlantıları şu şekilde yapınız;

  • GND  —> GND pini
  • +5V   —> 5V pini
  • VRx   —> Analog 0
  • VRy   —> Analog 1

Bu projede Joystickin üzerinde bulunan butonu kullanmadık. Bu projede kablolar karmaşık görünselerde oldukça basit bir şekildedirler. iki servodan gelen kablolar digital 8 ve 9 pinlerine, Joystickten gelen x ve y ise analog 0 ve 1 yerleşecektir.

Diğer Arduino yazılarımıza ulaşmak için Tıklayın.

Java programlama dili derslerimiz için Tıklayın.

Yorum Yap

Yazar Hakkında

Ben Ömer Faruk. Konya'da Yönetim Bilişim Sistemlerinde öğrenim görmekteyim. Yazılım ve Arduino ilgi duymaktayım.

Yorum Yap

Yorumlar (1)

  1. 5 ay önce

    Ömer, servo motorlar konusunda bir içerik yayınlayabilir misin? Ardunio Joyistick konusunda kullandığın örnek üzerindeki servolar dikkatmi çekti ve daha detaylı bir bilgi edinmek istiyorum.

Bir cevap yazın

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