
Arduino ile Joystick Kontrollü Servo Motor Yapımı (2 Eksenli Robotik Kontrol)
Arduino dünyasında hem eğlenceli hem de öğretici bir proje arıyorsanız, Joystick ile Servo motor kontrolü en iyi başlangıçlardan biridir. Bu projeyle robot kolların, kamera gimballarının veya hareketli platformların temel çalışma mantığını kavrayacağız.
Bu yazıda; Arduino Uno, Joystick modülü ve Servo motorlar kullanarak 2 eksenli bir kontrol sistemini nasıl kuracağınızı adım adım anlatıyorum.
Gerekli Malzemeler
- 1 adet Arduino Uno
- 2 adet Servo Motor (SG90 idealdir)
- 1 adet 2 Eksenli Joystick Modülü
- 1 adet Breadboard
- 5V Harici Güç Kaynağı (Servolar için)
- Jumper Kablolar
Joystick ve Servo Motor Devre Şeması
Projeye başlamadan önce dikkat etmeniz gereken en kritik nokta güç yönetimidir. Servo motorlar hareket halindeyken yüksek akım çekebilir. Bu yüzden servoları doğrudan Arduino’nun 5V pininden beslemek yerine, harici bir güç kaynağı kullanmak kartınızın sağlığı için çok daha güvenlidir.

Arduino Joystick Servo Kontrol Kodu
Aşağıdaki kod, joystick’ten gelen 0-1023 arasındaki analog veriyi alır ve map() fonksiyonu sayesinde servoların anlayabileceği 0-180 derecelik açıya dönüştürür.
#include <Servo.h>
// Pin Tanımlamaları
#define SERVO_X_PIN 5
#define SERVO_Y_PIN 6
#define JOYSTICK_X_PIN A0
#define JOYSTICK_Y_PIN A1
// Joystick Sınır Değerleri (Standart 0-1023)
#define JOY_MIN 0
#define JOY_MAX 1023
Servo servoX;
Servo servoY;
void setup() {
Serial.begin(9600);
// Servoların pinlerini tanımlıyoruz.
servoX.attach(SERVO_X_PIN);
servoY.attach(SERVO_Y_PIN);
}
void loop() {
// Analog okuma yapıp 0-180 dereceye oranlıyoruz.
int x_angle = map(analogRead(JOYSTICK_X_PIN), JOY_MIN, JOY_MAX, 0, 180);
int y_angle = map(analogRead(JOYSTICK_Y_PIN), JOY_MIN, JOY_MAX, 0, 180);
// Servolara pozisyonu gönderiyoruz.
servoX.write(x_angle);
servoY.write(y_angle);
// Debug için seri monitöre yazdır
Serial.print("X : "); Serial.print(x_angle);
Serial.print(" | Y : "); Serial.println(y_angle);
delay(15); // Daha akıcı hareket için delay süresini kısa tutalım.
}
Projenin Çalışma Mantığı
- Analog Okuma: Joystick içindeki potansiyometreler sayesinde hareket ettirildiğinde 0 ile 5V arasında bir voltaj değişimi yaratır. Arduino bunu 0-1023 arasında bir sayısal değer olarak okur.
- Map Fonksiyonu:
map(deger, 0, 1023, 0, 180)komutu, joystick’in tam sol/alt konumunu 0 dereceye, tam sağ/üst konumunu ise 180 dereceye eşitler. - PWM Sinyali: Arduino, hesaplanan bu açı bilgisini
servo.write()komutuyla servo motorun anlayacağı PWM sinyallerine çevirir.
Sıkça Sorulan Sorular (SSS)
1. Servolar neden titriyor? Genellikle yetersiz akımdan kaynaklanır. Harici bir adaptör veya pil paketi kullandığınızdan ve GND hatlarını birleştirdiğinizden emin olun.
2. Joystick ters yönde çalışıyor, ne yapmalıyım? Kod içerisindeki map(değer, 0, 1023, 0, 180) kısmını map(değer, 0, 1023, 180, 0) olarak değiştirerek yönü tersine çevirebilirsiniz.



