🤖 Arduino Joystick Kontrollü Robot Kol Projesi (2026 Rehberi)
Arduino Joystick Kontrollü Robot Kol Projesi, robotik kodlama eğitimlerinde en fazla ilgi gören uygulamalardan biridir. Bu proje sayesinde öğrenciler; servo motorların çalışma mantığını, joystick kullanımını, PWM sinyallerini, mekanik hareket sistemlerini ve temel robotik kontrol algoritmalarını uygulamalı olarak öğrenebilirler.
Arduino tabanlı robot kol sistemleri; STEM, Maker, Tasarım Beceri Atölyeleri, Robotik Kodlama Laboratuvarları ve TÜBİTAK projelerinde sıkça kullanılmaktadır. Ayrıca endüstriyel robotların çalışma prensibini küçük ölçekli olarak anlamak için de oldukça ideal bir eğitim platformudur.
Robot Kol Nedir?
Robot kol, insan kolunun hareketlerini taklit eden, servo motorlar yardımıyla farklı eksenlerde hareket edebilen mekanik sistemdir.
Genellikle;
- Taban dönüşü
- Omuz hareketi
- Dirsek hareketi
- Bilek hareketi
- Tutucu (Gripper)
olmak üzere 4-6 serbestlik derecesine sahiptir.
Bu projede ise joystick yardımıyla servo motorlar gerçek zamanlı kontrol edilir.
Projenin Amacı
Bu proje sayesinde;
✅ Servo motor kontrolü öğrenilir.
✅ Analog joystick okunur.
✅ PWM sinyalleri kullanılır.
✅ Mekanik hareket mantığı anlaşılır.
✅ Robotik kinematik temelleri öğrenilir.
✅ Endüstriyel robot mantığı kavranır.
Projenin Çalışma Mantığı
Sistem oldukça basittir.
Joystick üzerindeki X ve Y eksenleri sürekli okunur.
Arduino bu değerleri;
- 0
- 1023
arasında algılar.
Ardından bu değerleri;
- 0°
- 180°
servo açılarına dönüştürür.
Servo motorlar yeni açıya hareket eder.
Kullanıcı joystick’i hareket ettirdikçe robot kol da aynı yönde hareket eder.
Kullanılan Malzemeler
| Malzeme | Adet |
|---|---|
| Arduino UNO | 1 |
| SG90 Servo Motor | 4 |
| PS2 Analog Joystick | 2 |
| Robot Kol Şasesi (Akrilik veya Alüminyum) | 1 |
| Servo Braketleri | 4 |
| Harici 5V Güç Kaynağı (3A önerilir) | 1 |
| Breadboard | 1 |
| Jumper Kablolar | Yeterli |
| Açma/Kapama Anahtarı | 1 |
Servo Motorların Görevleri
Servo 1
Taban dönüşü
Servo 2
Omuz hareketi
Servo 3
Dirsek hareketi
Servo 4
Tutucu açma-kapama
Arduino Pin Bağlantıları
| Donanım | Arduino |
|---|---|
| Servo1 | D3 |
| Servo2 | D5 |
| Servo3 | D6 |
| Servo4 | D9 |
| Joystick X1 | A0 |
| Joystick Y1 | A1 |
| Joystick X2 | A2 |
| Joystick Y2 | A3 |
| Joystick Butonu | D2 |
✅ Arduino Joystick Kontrollü Robot Kol Projesi Devre Şeması

Arduino Joystick Kontrollü Robot Kol Projesi Devre Şeması
Joystick Nasıl Çalışır?
Joystick aslında iki adet potansiyometreden oluşur.
Bunlar;
X ekseni
ve
Y ekseni
hareketini ölçer.
Arduino;
analogRead()
fonksiyonu ile bu değerleri okur.
Örneğin;
X = 200
Joystick sola itilmiştir.
X = 800
Joystick sağa itilmiştir.
✅ Arduino Joystick Kontrollü Robot Kol Projesi Çalışma Mantığını Anlatan İnfografik

Arduino Joystick Kontrollü Robot Kol Projesi Çalışma Mantığını Anlatan İnfografik
Servo Motor Nasıl Çalışır?
Servo motorlar;
- PWM sinyali
- Dahili redüktör
- Konum sensörü
sayesinde belirli açılara dönebilir.
Arduino;
servo.write(90);
komutu ile servo motoru 90 dereceye getirir.
PWM Nedir?
PWM (Pulse Width Modulation)
Arduino’nun dijital pinlerinden üretilen darbe genişlik modülasyonudur.
Servo motorlar bu darbelerin genişliğine göre;
- 0°
- 45°
- 90°
- 180°
konumlarına gider.
Robot Kolun Hareketleri
Joystick Sol
↓
Taban sola döner.
Joystick Sağ
↓
Taban sağa döner.
Joystick Yukarı
↓
Kol yukarı kalkar.
Joystick Aşağı
↓
Kol aşağı iner.
İkinci joystick;
- Tutucu açar
- Tutucu kapatır
✅ Arduino Joystick Kontrollü Robot Kol Projesi
Mekanik Montaj (Exploded View) Teknik Çizimi

Arduino Joystick Kontrollü Robot Kol Projesi Mekanik Montaj (Exploded View) Teknik Çizimi
Yazılım Algoritması
Başla
↓
Joystick Oku
↓
Analog değerleri al
↓
Servo açılarına dönüştür
↓
Servo motorları hareket ettir
↓
Yeni joystick değerini oku
↓
Tekrar et
Hareket Haritalama
Arduino;
map()
fonksiyonunu kullanır.
Örneğin;
0-1023
değerini;
0-180
dereceye çevirir.
ServoAci = map(X,0,1023,0,180);
Robot Kolun Kullanım Alanları
- STEM eğitimleri
- Robotik Kodlama Atölyeleri
- Maker Atölyeleri
- Üniversite laboratuvarları
- Otomasyon eğitimleri
- Endüstriyel robot simülasyonları
- Yapay zekâ uygulamaları
- Görüntü işleme projeleri
Bu Projede Öğrenilen Arduino Fonksiyonları
analogRead()
map()
Servo.attach()
Servo.write()
pinMode()
loop()
setup()
delay()
Robot Kolun Avantajları
✅ Düşük maliyetlidir.
✅ Öğrenmesi kolaydır.
✅ Mekanik tasarım öğretir.
✅ Servo motor kullanımını öğretir.
✅ Robotik hareket mantığını öğretir.
✅ Programlamayı eğlenceli hale getirir.
Geliştirilebilir Özellikler
Projeye aşağıdaki özellikler eklenebilir:
- Bluetooth kontrol
- Wi-Fi kontrol
- ESP32 desteği
- Kamera entegrasyonu
- Nesne tanıma
- Yapay zekâ ile nesne yakalama
- Sesli komut sistemi
- Renk algılama
- OLED ekran
- LCD ekran
- Joystick kayıt sistemi
- Hareket tekrar modu
- Mobil uygulama kontrolü
- Kablosuz joystick
- ROS entegrasyonu
- Ters kinematik (Inverse Kinematics) algoritmaları
- Servo hız kontrolü
- Acil durdurma (Emergency Stop)
Eğitim Kazanımları
Bu proje öğrencilerin;
- Algoritmik düşünme
- Problem çözme
- Elektronik devre kurma
- Sensör okuma
- PWM mantığını anlama
- Servo kontrolü
- Mekanik tasarım
- Robotik sistem geliştirme
- Arduino programlama
- Takım çalışması
becerilerini geliştirir.
Aşağıdaki kod, 4 adet SG90 servo motor ve 2 adet analog joystick kullanarak bir robot kolu kontrol etmek için hazırlanmıştır. Kod eğitim amaçlıdır ve her satırı Türkçe açıklamalıdır. Ayrıca servo hareketlerini yumuşatacak şekilde tasarlanmıştır.
Arduino Joystick Kontrollü Robot Kol Kodu (4 Servo + 2 Joystick)
/*******************************************************
Arduino Joystick Kontrollü Robot Kol
4 Servo + 2 Analog Joystick
Servo1 : Taban
Servo2 : Omuz
Servo3 : Dirsek
Servo4 : Tutucu (Gripper)
Hazırlayan : İz Atölye
*******************************************************/
#include <Servo.h> // Servo kütüphanesini ekle
//------------------------------------------------------
// Servo Nesneleri
//------------------------------------------------------
Servo servoTaban;
Servo servoOmuz;
Servo servoDirsek;
Servo servoTutucu;
//------------------------------------------------------
// Servo Pinleri
//------------------------------------------------------
const byte TABAN_PIN = 3;
const byte OMUZ_PIN = 5;
const byte DIRSEK_PIN = 6;
const byte TUTUCU_PIN = 9;
//------------------------------------------------------
// Joystick Pinleri
//------------------------------------------------------
// Birinci joystick
const byte JOY1_X = A0;
const byte JOY1_Y = A1;
// İkinci joystick
const byte JOY2_X = A2;
const byte JOY2_Y = A3;
//------------------------------------------------------
// Servo Açıları
//------------------------------------------------------
int tabanAci = 90;
int omuzAci = 90;
int dirsekAci = 90;
int tutucuAci = 90;
//------------------------------------------------------
// Hareket Hassasiyeti
//------------------------------------------------------
const int deadZone = 70;
//------------------------------------------------------
// Servo Hızı
//------------------------------------------------------
const byte servoSpeed = 2;
//------------------------------------------------------
// Kurulum
//------------------------------------------------------
void setup()
{
servoTaban.attach(TABAN_PIN);
servoOmuz.attach(OMUZ_PIN);
servoDirsek.attach(DIRSEK_PIN);
servoTutucu.attach(TUTUCU_PIN);
servoTaban.write(tabanAci);
servoOmuz.write(omuzAci);
servoDirsek.write(dirsekAci);
servoTutucu.write(tutucuAci);
Serial.begin(9600);
}
//------------------------------------------------------
// Ana Döngü
//------------------------------------------------------
void loop()
{
//------------------------------------------
// Joystick Değerlerini Oku
//------------------------------------------
int joy1X = analogRead(JOY1_X);
int joy1Y = analogRead(JOY1_Y);
int joy2X = analogRead(JOY2_X);
int joy2Y = analogRead(JOY2_Y);
//------------------------------------------
// TABAN
//------------------------------------------
if (joy1X > (512 + deadZone))
{
tabanAci += servoSpeed;
}
if (joy1X < (512 - deadZone))
{
tabanAci -= servoSpeed;
}
//------------------------------------------
// OMUZ
//------------------------------------------
if (joy1Y > (512 + deadZone))
{
omuzAci += servoSpeed;
}
if (joy1Y < (512 - deadZone))
{
omuzAci -= servoSpeed;
}
//------------------------------------------
// DİRSEK
//------------------------------------------
if (joy2X > (512 + deadZone))
{
dirsekAci += servoSpeed;
}
if (joy2X < (512 - deadZone))
{
dirsekAci -= servoSpeed;
}
//------------------------------------------
// TUTUCU
//------------------------------------------
if (joy2Y > (512 + deadZone))
{
tutucuAci += servoSpeed;
}
if (joy2Y < (512 - deadZone))
{
tutucuAci -= servoSpeed;
}
//------------------------------------------
// Servo Limitleri
//------------------------------------------
tabanAci = constrain(tabanAci,0,180);
omuzAci = constrain(omuzAci,10,170);
dirsekAci = constrain(dirsekAci,10,170);
tutucuAci = constrain(tutucuAci,20,120);
//------------------------------------------
// Servo Hareketi
//------------------------------------------
servoTaban.write(tabanAci);
servoOmuz.write(omuzAci);
servoDirsek.write(dirsekAci);
servoTutucu.write(tutucuAci);
//------------------------------------------
// Seri Monitör
//------------------------------------------
Serial.print("Taban : ");
Serial.print(tabanAci);
Serial.print(" Omuz : ");
Serial.print(omuzAci);
Serial.print(" Dirsek : ");
Serial.print(dirsekAci);
Serial.print(" Tutucu : ");
Serial.println(tutucuAci);
delay(20);
}
Kodun Satır Satır Açıklaması
#include <Servo.h>
Servo motorları kontrol etmek için Arduino’nun hazır Servo kütüphanesini projeye ekler.
Servo servoTaban;
Taban eksenini kontrol edecek servo nesnesini oluşturur.
Aynı işlem omuz, dirsek ve tutucu için de yapılır.
attach()
servoTaban.attach(3);
Servo motorun sinyal kablosunun bağlı olduğu pini tanımlar.
analogRead()
analogRead(A0);
Joystick’ten gelen analog değeri okur.
Değer aralığı:
0
↓
1023
Joystick ortada iken yaklaşık:
512
değeri okunur.
deadZone
Joystick tam ortadayken küçük elektriksel dalgalanmalar oluşabilir.
deadZone = 70
sayesinde küçük sapmalar yok sayılır ve servo motorların titremesi önlenir.
servoSpeed
servoSpeed = 2
Joystick hareket ettiğinde servo her döngüde 2° ilerler.
Bu sayede hareketler daha akıcı olur.
Örneğin:
- 1 → Çok hassas
- 2 → Yumuşak (önerilen)
- 5 → Hızlı
- 10 → Çok hızlı
constrain()
constrain(tabanAci,0,180);
Servo açılarının fiziksel sınırları aşmasını engeller.
Örneğin:
-10°
yerine
0°
kullanılır.
write()
servoTaban.write(tabanAci);
Hesaplanan açıyı servo motora gönderir.
Serial.print()
Robot kolun anlık açılarını Seri Monitör’de gösterir.
Örnek çıktı:
Taban : 93 Omuz : 110 Dirsek : 74 Tutucu : 42
Joystick Kontrol Tablosu
| Joystick | Yön | Servo | Hareket |
|---|---|---|---|
| Joystick 1 X | Sol / Sağ | Servo 1 | Taban döner |
| Joystick 1 Y | Yukarı / Aşağı | Servo 2 | Omuz hareketi |
| Joystick 2 X | Sol / Sağ | Servo 3 | Dirsek hareketi |
| Joystick 2 Y | Yukarı / Aşağı | Servo 4 | Tutucu aç / kapa |
Performans İyileştirmeleri
Daha profesyonel bir robot kol için aşağıdaki geliştirmeler önerilir:
- Yumuşak hızlanma ve yavaşlama (Acceleration/Deceleration) ile daha doğal hareketler.
- Servo easing algoritmaları (ör. ServoEasing kütüphanesi) kullanarak sarsıntısız geçişler.
- EEPROM desteği ile servo konumlarını enerji kesildiğinde hafızada saklama.
- Hareket kaydetme ve tekrar oynatma (Teach & Repeat) modu.
- Ters kinematik (Inverse Kinematics) desteği ile uç efektörün (gripper) koordinata göre otomatik hareketi.
- ESP32 + Bluetooth/Wi-Fi üzerinden mobil uygulama ile kablosuz kontrol.
- OLED/LCD ekran ile servo açılarını ve çalışma modunu görüntüleme.
- Acil durdurma (Emergency Stop) ve mekanik limit anahtarları ile güvenli çalışma.
- PS2 gamepad veya Xbox kolu ile joystick yerine oyun kumandası kontrolü.
Bu geliştirmelerle proje, eğitim amaçlı bir robot koldan, endüstriyel robot mantığını simüle eden daha ileri seviye bir platforma dönüştürülebilir.
Sık Karşılaşılan Sorunlar ve Çözümleri
| Sorun | Muhtemel Neden | Çözüm |
|---|---|---|
| Servo titriyor | Yetersiz akım | Harici 5V 3A güç kaynağı kullanın |
| Servo hareket etmiyor | Yanlış pin bağlantısı | Bağlantıları kontrol edin |
| Robot kol rastgele hareket ediyor | Ortak GND eksik | Arduino ile güç kaynağının GND uçlarını birleştirin |
| Servo açıları hatalı | Yanlış map() değerleri |
Kalibrasyon yapın |
| Arduino yeniden başlıyor | Servo akımı USB’yi zorluyor | Servoları harici besleyin |
Önemli Not: Servo motorları doğrudan Arduino’nun 5V pininden beslemek yerine, yeterli akım sağlayan harici bir 5V güç kaynağı kullanmanız önerilir. Güç kaynağının GND hattı ile Arduino’nun GND hattı mutlaka ortaklanmalıdır.
Robot Kol Projesinin Eğitimde Önemi
Arduino Joystick Kontrollü Robot Kol Projesi, öğrencilerin yalnızca elektronik devre kurmasını değil; aynı zamanda mekanik tasarım, kontrol sistemleri ve yazılım geliştirme süreçlerini bir arada deneyimlemesini sağlar. Teorik bilgilerin somut bir ürüne dönüşmesi, öğrenme motivasyonunu artırırken mühendislik bakış açısının gelişmesine de katkı sunar.
Bu proje, ortaokuldan üniversite seviyesine kadar farklı eğitim kademelerine uyarlanabilir. Daha ileri seviyelerde ters kinematik, görüntü işleme, yapay zekâ tabanlı nesne takibi ve uzaktan kontrol gibi özelliklerle zenginleştirilerek gerçek endüstriyel robot sistemlerine yakın uygulamalar geliştirilebilir.
Sonuç
Arduino Joystick Kontrollü Robot Kol Projesi; Arduino programlama, servo motor kontrolü, analog veri işleme, PWM sinyalleri ve temel robotik kinematik konularını bir araya getiren kapsamlı bir eğitim uygulamasıdır. Düşük maliyeti, modüler yapısı ve geliştirilebilir olması sayesinde hem bireysel öğrenme hem de okul atölyeleri için ideal bir projedir.
İstanbul İz Atölye Eğitim Çözümleri San. ve Tic. Ltd. Şti., eğitim kurumlarına yönelik yenilikçi atölye kurulumlarıyla öne çıkan, proje geliştirme ve uygulama süreçlerinde uçtan uca destek sunan bir çözüm ortağıdır. Robotik kodlama, yazılım, ahşap tasarım, STEM ve sanal gerçeklik gibi farklı alanlarda modern, sürdürülebilir ve eğitim odaklı atölye ortamları tasarlar. Kurumların ihtiyaçlarına özel analizler yaparak en uygun ekipman, içerik ve altyapıyı belirler; kurulum sürecinden eğitmen eğitimine kadar tüm aşamalarda aktif rol alır. Ayrıca ulusal ve uluslararası hibe programlarına yönelik proje yazımı, danışmanlık ve uygulama desteği sağlayarak kurumların hem teknik hem de finansal açıdan güçlenmesine katkıda bulunur.
📞 Proje Desteği İçin Bize Ulaşın ( 0850 840 4783 )
🚀 Projeni Hayata Geçir! ( WhatsApp )
İz Atölye olarak sadece atölye kurmuyor, kurumunuza özel sürdürülebilir eğitim ekosistemleri tasarlıyor; doğru ekipman, güçlü içerik ve uçtan uca proje desteğiyle süreci zahmetsiz ve verimli hale getiriyoruz.
Deneyim, hız ve sonuç odaklı yaklaşımımızla yatırımınızı kısa sürede somut çıktılara dönüştürüyoruz.

Yorum ekle