Herkese merhaba, bu yazımızda renkli ve keyifli bir görünüme sahip olan, görünümü kadar da renkli projeler de karşımıza sıkça çıkan Joystick Shield nedir? Arduino Joystick Shield Uygulamaları nelerdir? bu sorulara cevap bulmaya çalışacağız.

(Videolu anlatımı da yazımızın üstüne bırakıyoruz, daha fazla video için Robolink Teknoloji Youtube kanalını takip edebilirsin.)

Arduino Joystick Shield

Arduino Joystick Shield, Arduino kartları ile beraber kullanabileceğimiz; uzaktan kumandalı projeler ve oyun uygulamaları ( pac-man, snake vb.) gibi bir çok projelerde bize yardımcı olmakta. Bu kart arduinonuzu joystick ve butonlarla kontrol edebilmenizi sağlamakta. Aynı zaman da modüler bir yapıda da olduğu için direkt olarak arduinonuzun üzerine takabilmektesiniz.

Üzerinde bulunan NRF24L01 ve Bluetooth modül pinleri sayesinde projelerinizi uzaktan kontrole uygun hale getirebilir, Nokia 5110 Ekran giriş pinleri sayesinde de projelerinize bir ekran ekleyebilirsiniz. (Nokia 5110 ekran girişi için pinlere dikkat etmelisiniz, eğer girişler uygun değilse dışarıdan bir jumper kablo ile bağlantı sağlayabilirsiniz.) Unutmadan kart üzerinde bulunan bir anahtar sayesinde 3.3 V veya 5V güç seçimi yapabilirsiniz.

Özellikler:

  • NRF24L01 Arayüzü
  • Nokia 5110 LCD arayüzü
  • Bluetooth arayüzü
  • I2C arayüzü
  • PS2 kontrol kolu
  • 6 adet buton
  • 3.3V veya 5V çalışma seçeneği

Uygulamalar:

Modüler yapıda olan Joystick Shield’ımız Arduino üzerine yönüne dikkat ederek yerleştirdikten sonra aşağıdaki uygulamaları gerçekleştirebiliriz. 

1) Buton ve Joystick Kontrolü :

Bu uygulama sayesinde hangi butona basarsak seri port ekranı üzerinden ona basıldığının bilgisini ve joystick’in x-y kordinatlarındaki konumunun bilgilerini göreceğiz.

 

#define joyx A0
#define joyy A1
#define buton_a 2
#define buton_b 3
#define buton_c 4
#define buton_d 5
#define buton_e 6
#define buton_f 7
#define joy_buton 8
void setup()
{
pinMode(buton_a, INPUT);
pinMode(buton_b, INPUT);
pinMode(buton_c, INPUT);
pinMode(buton_d, INPUT);
pinMode(buton_e, INPUT);
pinMode(buton_f, INPUT);
pinMode(joy_buton, INPUT);
Serial.begin(9600);
}
void loop()
{
//Joystick x-y eksenleri
Serial.print(" ||| ");
Serial.print("X: ");
Serial.println(analogRead(joyx));
Serial.print(" ||| ");
Serial.print("Y: ");
Serial.println(analogRead(joyy));
// a b c d Butonları
Serial.print(" ||| ");
Serial.print("a: ");
Serial.println(digitalRead(buton_a));
if(digitalRead(buton_a) == LOW)
{
Serial.println(" A'ya basıldı");
}
Serial.print(" ||| ");
Serial.print("b: ");
Serial.println(digitalRead(buton_b));
if(digitalRead(buton_b) == LOW)
{
Serial.println(" B'ye basıldı");
}
Serial.print(" ||| ");
Serial.print("c: ");
Serial.println(digitalRead(buton_c));
if(digitalRead(buton_c) == LOW)
{
Serial.println(" C'ye basıldı");
}
Serial.print(" ||| ");
Serial.print("d: ");
Serial.println(digitalRead(buton_d));
if(digitalRead(buton_d) == LOW)
{
Serial.println(" D'ye basıldı");
}
//Sağ Seçim Butonu
Serial.print(" ||| ");
Serial.print("Sag: ");
Serial.println(digitalRead(buton_e));
if(digitalRead(buton_e) == LOW)
{
Serial.println(" SAĞ'a basıldı");
}
//Sol Seçim Butonu
Serial.print(" ||| ");
Serial.print("Sol: ");
Serial.println(digitalRead(buton_f));
if(digitalRead(buton_f) == LOW)
{
Serial.println(" SOL'a basıldı");
}
//Joystick Tıklama Butonu
Serial.print(" ||| ");
Serial.print("Click: ");
Serial.println(digitalRead(joy_buton));
Serial.println(" ||| ");
if(digitalRead(joy_buton) == LOW)
{
Serial.println
(" Joystick butona basıldı ");
}
delay(1500);
}

2)  Joystick’in Hareket Eksenine Göre Kademeli Led Yakma:

Bu uygulama sayesinde joystick hangi yönde hareket ederse ona göre ledler kademeli olarak yanacaktır ve seri port üzerinde de bu konumlar görünecektir. Joystickinizin başlangıç konumuna ve ledlerin hangi kademelerde yanmasını istediğinize göre kod üzerinde değişiklik yapabilirsiniz.

Led - Joystick Shield Kartı bağlantı şeması
                                                               Led – Joystick Shield Kartı bağlantı şeması
#define joy_x A0
#define joy_y A1
#define led_x_1 10
#define led_x_2 11
#define led_x_3 12
#define led_x_4 13
#define led_y_1 A2
#define led_y_2 A3
#define led_y_3 A4
#define led_y_4 A5
int x= 0;
int y= 0;
void setup()
{
pinMode(joy_x, INPUT);
pinMode(joy_y, INPUT);
pinMode(led_x_1, OUTPUT);
pinMode(led_x_2, OUTPUT);
pinMode(led_x_3, OUTPUT);
pinMode(led_x_4, OUTPUT);
pinMode(led_y_1, OUTPUT);
pinMode(led_y_2, OUTPUT);
pinMode(led_y_3, OUTPUT);
pinMode(led_y_4, OUTPUT);
Serial.begin(9600);
}
void loop()
{
//Joystick x ekseni
Serial.print(" ||| ");
Serial.print("X: ");
x = analogRead(joy_x);
Serial.println(x);
if ( x >= 0 && x < 250 )
{
digitalWrite(led_x_1, HIGH);
digitalWrite(led_x_2, HIGH);
}
else if ( x >= 250 && x < 511)
{
digitalWrite(led_x_1, HIGH);
digitalWrite(led_x_2,LOW);
}
else if ( x >= 511 && x < 517 )
{
digitalWrite(led_x_1, LOW);
digitalWrite(led_x_2, LOW);
digitalWrite(led_x_3, LOW);
digitalWrite(led_x_4, LOW);
}
else if ( x >= 517&& x < 750)
{
digitalWrite(led_x_3, HIGH);
digitalWrite(led_x_4,LOW);
}
else if ( x >= 750 && x <= 1023)
{
digitalWrite(led_x_3, HIGH);
digitalWrite(led_x_4, HIGH);
}
else
{
digitalWrite(led_x_1, LOW);
digitalWrite(led_x_2, LOW);
digitalWrite(led_x_3, LOW);
digitalWrite(led_x_4, LOW);
}
//Joystick y ekseni
Serial.print(" ||| ");
Serial.print("Y: ");
y = analogRead(joy_y);
Serial.println(y);
if ( y >= 0 && y < 250 )
{
digitalWrite(led_y_1, HIGH);
digitalWrite(led_y_2, HIGH);
}
else if ( y >= 250 && y < 512)
{
digitalWrite(led_y_1, HIGH);
digitalWrite(led_y_2,LOW);
}
else if ( y >= 512 && y < 522 )
{
digitalWrite(led_y_1, LOW);
digitalWrite(led_y_2, LOW);
digitalWrite(led_y_3, LOW);
digitalWrite(led_y_4, LOW);
}
else if ( y >= 522 && y < 750)
{
digitalWrite(led_y_3, HIGH);
digitalWrite(led_y_4,LOW);
}
else if ( y >= 750 && y <= 1023)
{
digitalWrite(led_y_3, HIGH);
digitalWrite(led_y_4, HIGH);
}
else
{
digitalWrite(led_y_1, LOW);
digitalWrite(led_y_2, LOW);
digitalWrite(led_y_3, LOW);
digitalWrite(led_y_4, LOW);
}
delay(100);
}

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz