Arduino Joystick – Joystik kullanımı- Joystickle Motor Kontrolü – Arduino Dersleri 54 –

İki tane ayarlı direncin bir araya getirilerek oluşturulan yeni yapıya joystick denilmiştir. Bir bord üzerine yaylı bir mekanizma ile yan yana konumlandırılan iki tane potansiyometre özellikle oyun konsollarından tutunda endüstriyel alanlarda kullanılan çok kullanışlı donanımlardır. Aynı anda sağa-sola ve yukarıya aşağıya gibi senkron hareketlerin yapılabilmesine olanak sağlayabilmektedirler. Bu senkron hareketlerin hızını da yine bu jostickler ile yapabilmekteyiz. Üzerine bir tanede buton bulunan bir çok model joystick vardır.

joystickBiz sizlerle arduino gibi bir işlemciyle kullanılabilen bu donanımlar birçok proje için çok rahatlıkla kullanılabilmektedir. Oyun uygulamalarından tutunda, motor kontrolleri, ekranlardaki menülerin kullanımı gibi çok geniş yelpazeye sahiptirler.

Sizlere örnek olması açısından bu joysticklerin kullanımı anlatan iki projeleri hemen deneyerek kullanımlarını kavrayabilirsiniz.

joystick_sema_1
joystick_sema_1
//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı Joystick  Kodları  - kullanımı örnek Kodları




#define xPin A0 
#define yPin A1
#define btn_Pin 2 

int xPozisyon;
int yPozisyon;
int btn_drm;
 
void setup() {
Serial.begin(9600);
pinMode(xPin, INPUT);
pinMode(yPin, INPUT);
pinMode(btn_Pin, INPUT_PULLUP);

  
}
 
void loop() {
xPozisyon = analogRead(xPin);
yPozisyon = analogRead(yPin);
btn_drm = digitalRead(btn_Pin);

Serial.print(" X Pozisyonu : ");
Serial.print(xPozisyon);
Serial.print( "\t " );
Serial.print(" Y Pozisyonu : ");
Serial.print(yPozisyon);
Serial.print( "\t " );
Serial.print(" Buton : ");
Serial.println(btn_drm);
   delay(50);
}

Joystickler ile yapabileceğiniz projelerden birisi dc motorları kontrol etmek olabilir. Aynı anda iki tane dc motorun hem yönünü hem de hızlarını kontrol ederek harika projeler yapabilirsiniz.

joystick_sema_2
joystick_sema_2
//Görsel İşitsel Teknoloji Kanalı
//wwww.teknikerler.com
//Kerim Arı Youtube kanalı Joystick ile dc motor  Kodları  - kullanımı örnek Kodları

#define xPin A0
#define yPin A1
#define btn_Pin 8
#define red 6
#define green 7

const int IN1 = 2;
const int IN2 = 3;
const int IN3 = 4;
const int IN4 = 5;
const int ENA = 9;
const int ENB = 10;


int xPozisyon;
int yPozisyon;
int btn_drm;
int sayac = 0;
void setup() {
  Serial.begin(9600);
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
  pinMode(btn_Pin, INPUT_PULLUP);

  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
  pinMode (ENA, OUTPUT);
  pinMode (ENB, OUTPUT);
  pinMode (red, OUTPUT);
  pinMode (green, OUTPUT);


}

void loop() {
  xPozisyon = analogRead(xPin);
  yPozisyon = analogRead(yPin);

  btn_drm = digitalRead(btn_Pin);

  if (btn_drm == 0)
  {
    sayac++;
    delay(250);
    if (sayac > 1)
      sayac = 0;
 }

  if (sayac == 1)
  {
    digitalWrite(red, LOW);
    digitalWrite(green, HIGH);
  }
  else

  {
    digitalWrite(red, HIGH);
    digitalWrite(green, LOW);
  }


  if (sayac == 1 && xPozisyon < 490)
  {
    Serial.print("YUKARI DÖNÜYOR");
    Serial.print("\t");
    Serial.print("Pot Değeri: ");
    int  yukari_don = map (xPozisyon, 495, 0, 0, 255);
    Serial.println(yukari_don);
    analogWrite(ENA, yukari_don );
    digitalWrite(IN1, HIGH);//Motor_1 yukaı
    digitalWrite(IN2, LOW);//Motor_1 yukarı
    delay(100);
  }

  else if (sayac == 1 && xPozisyon > 500)
  {
    Serial.print("ASAĞI DÖNÜYOR");
    Serial.print("\t");
    Serial.print("Pot Değeri: ");
    int  asagi_don = map (xPozisyon, 495, 1023, 0, 255);
    Serial.println(asagi_don);
    analogWrite(ENA, asagi_don ); //256 e düşürdük
    digitalWrite(IN1, LOW);//Motor_1 aşağı
    digitalWrite(IN2, HIGH);//Motor_1 aşağı

  }

  else

  {
    Serial.println("AŞAĞI- YUKARI MOTORLAR DURUYOR");
    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
 }

  if (sayac == 1 && yPozisyon < 490)
  {
    Serial.print("SAĞA DÖNÜYOR");
    Serial.print("\t");
    Serial.print("Pot Değeri: ");
    int  saga_don = map (yPozisyon, 495, 0, 0, 255);
    Serial.println(saga_don);
    analogWrite(ENB, saga_don ); //256 e düşürdük
    digitalWrite(IN3, HIGH);//Motor_1 sağ
    digitalWrite(IN4, LOW);//Motor_1 sağ

  }

  else if (sayac == 1 && yPozisyon > 500)
  {
    Serial.print("SOLA DÖNÜYOR");
    Serial.print("\t");
    Serial.print("Pot Değeri: ");
    int  sola_don = map (yPozisyon, 495, 1023, 0, 255);
    Serial.println(sola_don);
    analogWrite(ENB, sola_don ); //256 e düşürdük

    digitalWrite(IN3, LOW);//Motor_1 sol
    digitalWrite(IN4, HIGH);//Motor_1 sol

  }


 else

  {
    Serial.println("SAĞ - SOL MOTORLAR DURUYOR");
    digitalWrite(IN3, LOW);
    digitalWrite(IN4, LOW);

  }

}
Videoyu İZLEMEK İÇİN TIKLAYINIZ