Joystick ile İki Servomotor Kontrolü

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şenArduino Pinleri
Joystick VRxA0
Joystick VRyA1
Joystick SWD4 (isteğe bağlı)
Servo Motor 1D5
Servo Motor 2D6
Joystick VCC5V
Joystick GNDGND

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);
}

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir