Arduino Projeleri
#27Gelişmiş

Joystick Kontrollü Robot Kol

~2-3 saat (mekanik montaj dahil)Çoklu servo senkronizasyonu kavramı

Proje Amacı

2 eksenli bir joystick ile 2-3 servo motoru kontrol ederek basit bir robot kolun omuz/dirsek/tutucu eklemlerini yönlendirir; joystick'in X/Y eksenleri doğrudan iki servo açısına eşlenir, kol ucunun uzaydaki gerçek konumu hesaba katılmaz (bkz. Alternatif Çözümler — ters kinematik).

Gerekli Malzemeler

  • Arduino Uno
  • 2 Eksenli Joystick Modülü
  • 3x SG90 Servo
  • Robot Kol Kaide/Kiti
  • Breadboard

Gerekli Kütüphaneler

Servo — Arduino IDE ile birlikte gelir, ekstra kurulum gerekmez.

Pin Bağlantıları

Bileşen PiniBağlantı
Joystick VRx
A0
Joystick VRy
A1
Joystick SW (buton)
D2
Omuz Servo
D9
Dirsek Servo
D10
Tutucu Servo
D11

Devre Şeması

Arduino Kodu

arduino-27-joystick-kontrollu-robot-kol.ino
1#include <Servo.h>
2Servo omuz, dirsek, tutucu;
3const int vrx=A0, vry=A1, sw=2;
4
5void setup(){
6 omuz.attach(9); dirsek.attach(10); tutucu.attach(11);
7 pinMode(sw, INPUT_PULLUP);
8 omuz.write(90); dirsek.write(90); tutucu.write(0);
9}
10
11void loop(){
12 int x = analogRead(vrx);
13 int y = analogRead(vry);
14 bool butonBasili = digitalRead(sw) == LOW;
15
16 int omuzAcisi = map(x, 0, 1023, 0, 180);
17 int dirsekAcisi = map(y, 0, 1023, 0, 180);
18
19 omuz.write(omuzAcisi);
20 dirsek.write(dirsekAcisi);
21 tutucu.write(butonBasili ? 90 : 0);
22
23 delay(20);
24}

Çalışma Açıklaması

3 servo birden Arduino 5V'undan beslenirse akım yetersiz kalabilir, servolar titreyebilir; ayrı 5V/6V güç kaynağı (ortak GND ile) önerilir. Robot kolun mekanik yapısı ayrıca temin edilmeli veya 3D yazdırılmalıdır.

Test Bilgisi

Devreyi kurun, kodu yükleyin. Joystick'i x/y yönlerinde hareket ettirip omuz ve dirsek servolarının buna orantılı döndüğünü gözlemleyin. Joystick butonuna basınca tutucu servonun kapandığını doğrulayın.

Olası Sorunlar ve Çözümleri

Servolar titriyorsa: 3 servonun aynı anda çektiği akımın Arduino 5V'unu zorladığından şüphelenin, ayrı güç kaynağı kullanın. Hareketler ters yönde oluyorsa: map() fonksiyonundaki min/max değerlerini (0,1023,0,180) ters çevirerek yön düzeltilebilir. Tutucu servo tam kapanmıyorsa: tutucu.write() değerlerini (0-90 aralığı) mekanik yapınıza göre kalibre edin. Kol zamanla (10-15 dakika sonra) yavaş yavaş hedefine gelmemeye başlıyorsa: bu ucuz SG90 klonlarında sık görülen bir dişli aşınması belirtisidir, servo ısınıp mekanik oyun (backlash) artar — metal dişlili bir servoya geçmek kalıcı çözümdür.

Alternatif Çözümler

3 eksenli basit kol yerine 4-5 servo ile daha gerçekçi bir insan koluna benzer hareket kabiliyeti eklenebilir. Joystick yerine önceden kaydedilmiş hareket dizileri (sequence/playback) ile otomatik tekrar eden hareketler programlanabilir. Ters kinematik (inverse kinematics) hesaplamalarıyla kolun ucunu belirli bir X-Y-Z koordinatına götürecek şekilde gelişmiş kontrol eklenebilir (ileri seviye matematik gerektirir).

Bu projenin kodunu AI ile özelleştir

Farklı pin, ek özellik ya da başka bir sensör mü istiyorsun?