İ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.
Sizlere örnek olması açısından bu joysticklerin kullanımı anlatan iki projeleri hemen deneyerek kullanımlarını kavrayabilirsiniz.
//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.
//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);
}
}