Joystick ler aslında basit olarak iki adet potansiyometreden meydana gelmektedir. Joystick modülleri arduino ile beraber kolayca kullanılabilir ve çeşitli projeler geliştirilebilir. Joystick modülü ile robot kollar, kumandalı araçlar v.b. kontrol edilebilir. Bu projede joystick modülünü kullanarak servo motor kontrolü yapacağız. Bu proje aslında robot kol kontrolünün de temelini oluşturmaktadır.
Kullanılacak Malzemeler:
Arduino
2 eksenli XY joystick modülü
Servo motor
Joystick modülünü arduinoya ya kolayca bağlayabiliriz. Joystick deki +5V ve GND arduino da aynı yerlere bağlanmalıdır. VRx ve VRy pinleri X ve Y eksenlerindeki 2 adet potansiyometredir. Potansiyometreler analog giriş olcağı için arduino nun analog input pinlerine bağlanmalıdır. Joystick deki SW pini ise digital bir pindir ve joystick e basılıp basılmadığı bilgisini saklar. Bu uygulamada bu pini kullanmayacağız.
Bu uygulamada 2 adet servo motoru kontrol edeceğiz. Servo motorlardan biri joystick in x eksenindeki hareketi ile, diğeri ise y eksenindeki hareketi ile 0-180 derece arası dönecektir.
Aşağıda uygulamamızın devre şeması ve arduino kodları verilmektedir.
#include <Servo.h> // Servo kütüphanesi Servo myservo1; // 2 adet servo motor kullanıldı Servo myservo2; int pozisyon_x=0; // Joystick lerden okunan analog değerler bu değişkenlerde tutulacak int pozisyon_y=0; const int x_pin=0; // Joystick in x ve y eksenleri 0 ve 1. pinlere bağlanacak const int y_pin=1; void setup() { myservo1.attach(9); // Servolar arduinonun 9 ve 10. pinlerine bağlanacak myservo2.attach(10); Serial.begin(9600); // Seri haberleşme başladı } void loop() { pozisyon_x = analogRead(x_pin); //0. pinden analog veri okundu pozisyon_x = map(pozisyon_x, 0, 1023, 0, 180); //0-1023 değeri 0-180 değerine çekildi myservo1.write(pozisyon_x); // Elde edilen 0-180 arası açı değeri servoya gönderildi delay(15); // Servonun uygun konuma gelmesi için kısa bir gecikme pozisyon_y = analogRead(y_pin); //1. pinden analog veri okundu pozisyon_y = map(pozisyon_y, 0, 1023, 0, 180); //0-1023 değeri 0-180 değerine çekildi myservo2.write(pozisyon_y); // Elde edilen 0-180 arası açı değeri servoya gönderildi delay(15); // Servonun uygun konuma gelmesi için kısa bir gecikme Serial.print("Servo 1: "); Serial.print(analogRead(pozisyon_x)); // Servoların kaçar derece döndükleri seri monitörde görüntülenecek Serial.print("\n"); // Alt satır Serial.print("Servo 2: "); Serial.print(analogRead(pozisyon_x)); Serial.print("\n"); delay(1000); }
Kaynak : http://www.instructables.com/id/Arduino-2-Servos-Thumbstick-joystick/
Uygulama çok kolay hemen çalıştı
Bu arada kodda pozisyon_y değeri yerine iki kez x değeri yazdırılmış