Gerekli Malzemeler
- Arduino Uno
- 2 adet Servo Motor (SG90 önerilir)
- 1 adet Joystick Modülü (X, Y, SW pinli)
- Jumper kablolar
- Breadboard (isteğe bağlı)
Bağlantı Şeması

| Bileşen | Arduino Pinleri |
|---|---|
| Joystick VRx | A0 |
| Joystick VRy | A1 |
| Joystick SW | D4 (isteğe bağlı) |
| Servo Motor 1 | D5 |
| Servo Motor 2 | D6 |
| Joystick VCC | 5V |
| Joystick GND | GND |
Mblock Kodu

Arduino Kod Örneği
#include <Servo.h>
Servo motorX;
Servo motorY;
int xPin = A0;
int yPin = A1;
void setup() {
motorX.attach(5); // X ekseni servo
motorY.attach(6); // Y ekseni servo
}
void loop() {
int xDeger = analogRead(xPin);
int yDeger = analogRead(yPin);
int xAci = map(xDeger, 0, 1023, 0, 180);
int yAci = map(yDeger, 0, 1023, 0, 180);
motorX.write(xAci);
motorY.write(yAci);
delay(15); // Servo motorun hareketi için kısa bekleme
}
Nasıl Çalışır?
- Joystick’i sağa-sola hareket ettirdiğinde Servo Motor 1 döner.
- Yukarı-aşağı hareket ettirdiğinde Servo Motor 2 döner.
- SW butonunu kullanarak özel bir işlev ekleyebilirsin (örneğin, servoları sıfır konumuna döndürmek).
Arduino’da Map Komutu Kullanımı
Map komutu, Arduino’da birbirine benzemeyen iki değer aralığını birbirine dönüştürmek için kullanılır. Özellikle analog girişlerden gelen verileri servo motor gibi belirli aralıklarda çalışan bileşenlere uyarlamak için oldukça faydalıdır.
Map Komutu Söz Dizimi
YeniDeger = map(EskiDeger, EskiDeger_min, EskiDeger_max, YeniDeger_min, YeniDeger_max);
Bu komut, EskiDeger değişkenini eski aralıktan yeni aralığa dönüştürür.
Joystick Örneği ile Kullanım
Joystick’in X ekseninden okunan değeri xPozisyon değişkenine aktardığımızı varsayalım. Bu değer 0 ile 1023 arasında değişir. Servo motor ise 0 ile 180 derece arasında döner. Bu durumda:
ServoDeger = map(xPozisyon, 0, 1023, 0, 180);
Bu kod, joystick’in konumunu servo motorun açı değerine dönüştürür.
Servo Motor Kullanımı için Servo.h Kütüphanesi
Servo motorları Arduino ile kullanabilmek için Servo.h kütüphanesi gereklidir. Bu kütüphane, Arduino IDE ile birlikte gelir ve servo motorları tanımlayıp kontrol etmemizi sağlar.
Örnek Kod:
#include <Servo.h>
Servo motor;
void setup() {
motor.attach(9); // Servo motor D9 pinine bağlı
}
void loop() {
int xPozisyon = analogRead(A0); // Joystick X ekseni
int ServoDeger = map(xPozisyon, 0, 1023, 0, 180);
motor.write(ServoDeger); // Servo motoru pozisyona döndür
delay(15);
}