Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Arduino ile Joystick Kullanımı

 Joystick Modül Nedir Nasıl Çalışır?

        Arduino Ile Joystick kullanımı oldukça basittir, bu yazıda joystik modülün devre şemasına çalışma mantığına ve arduino ile nasıl kullanılabileceğine örnek kodla birlikte bakıyor olacağız.

Joystik modül pin tanımları    

Yan tarafa resmini görmekte olduğunuz yakışıklı joystik modülün 5 adet pini bulunmakta:

  • GND ground pini
  • 5V 5v besleme pini
  • VRx Analog çıkış, 0-5V arası X yönündeki değişimi algılamak için
  • VRy Analog çıkış,0-5V arası Y yönündeki değişimi algılamak için
  • SW Digital Çıkış, Joystiğe tıklandığında pini GND ye aktaran butonun çıkış pini

Joystick Modül Yönleri ve Voltajları




Joystik Modul Nasıl Çalışır?

    Joystick modülde dikey ve yatay yönler için iki adet bir pinleri gnd'ye diğer pinleri 5v bağlı 10K 'lık potansiyometreler bulunur. Bu potansiyometreler birer voltaj bölücü olarak çalışırlar. Voltaj bölücü konusuna hakim değilseniz : Voltaj Bölücü Devresi konusunu okumanızı tavsiye ederim. Bu durumda joystick orta konumdayken, her iki potansiyometre de orta konumda olur ve giriş voltajının yarısı olan 2.5 'u üretirler, potansiyometrelerin kademesi arttıkça çıkıştaki voltajları artar, azaldıkça da çıkış voltajları azalır. Bu analog çıkışları mikrodenetleyicinin analog pinlerine bağlayıp ADC dönüşümü ile okumak suretiyle işlem yapılabilir. Okunan ADC değerine göre joystiğin hangi yöne ne kadar saptırıldığı anlaşılır.
    Modül üzerindeki buton GND'yi anahtarlamak için kullanılmıştır, bu nedenle butona basıldığında SW pininde 0V oluşur, normalde floating yani boştadır, devre şeması üzerindeki R1 direnci yerine 0805 kılıfında 10K bir direnç bağlayarak pull-up yapabilirsiniz, ya da mikrodenetleyicinizin butonu bağlayacağınız pinini internal olarak pull-up ayarlamalısınız.

Joystik Modülün Devre Şeması






Joystik Modül Arduino Bağlantısı

Joystick Pini Arduino Uno Pini
GNDGND
5V5V
VRxAnalog Pin
VRyAnalog Pin
SWDigital Pin

VRx ve VRy pinlerini analog pinlerden sizin için uygun olanlara bağlayabilirsiniz
SW pini joystik üzerindeki butonu kullanmak için dijital pinlerden sizin için uygun olan birine bağlayabilirsiniz.


Arduino ile Joystik Örnek Kod


/*
  Arduino ile Joystick Kullanımı
  Örnek Kod

  Hakan ÖZMEN ([email protected])
  01-12-2022

  https://www.devrelerim.com/2022/12/arduino-ile-joystick-kullanimi.html
*/
#define SWPIN 3
#define VRxPIN A0
#define VRyPIN A1
const char* dirNames[] = {
 "Sol Aşağı",
 "Aşağı",
 "Sağ Yukarı",
 "",
 "Sol",
 "OrtaKonum",
 "Sağ",
 "",
 "Sol Yukarı",
 "Yukarı",
 "Sağ Yukarı"
};
enum directions
{
 LeftDown,
 Down,
 RightDown,
 NC,
 Left,
 Center,
 Right,
 NC2,
 LeftUp,
 Up,
 RightUp
};
directions JoyDirection();
void setup() {
 Serial.begin(115200);
 pinMode(SWPIN, INPUT_PULLUP);

}
directions JoyDir;
void loop() {
 JoyDir = JoyDirection();
 Serial.println(dirNames[JoyDir]);
 if (buttonPressed()) /* butona basınca çalışacak kod*/
 {
   Serial.println("Butona basıldı!");
 }
   
 switch (JoyDir)
 {
   case LeftDown:
     /* joystick sol aşağı konumdayken çalışacak kod*/
     break;
   case Down:
     /* joystick aşağı konumdayken çalışacak kod */
     break;
     /*
      * tüm yönler için yazabilirsiniz
        ...
     */
 }
 delay(1000);
}

int adcX, adcY;
directions JoyDirection()
{
 adcX = analogRead(VRxPIN);
 adcY = analogRead(VRyPIN);
 int xPos = map(adcX, 0, 1023, 0, 3);
 int yPos = map(adcY, 0, 1023, 0, 3);
 directions dir = (directions)((xPos 2) | (yPos));
 return dir;
}
bool buttonPressed()
{
 return (digitalRead(SWPIN) == LOW ? true : false);
}





This post first appeared on Devrelerim.com, please read the originial post: here

Share the post

Arduino ile Joystick Kullanımı

×

Subscribe to Devrelerim.com

Get updates delivered right to your inbox!

Thank you for your subscription

×