×
Cara Kontrol Sudut Putar Servo Motor dengan Joystick

Kontrol pergerakan sudut putar Servo Motor menggunakan Arduino dan Joystick Shield

Cara cepat untuk mengetahui servo motor masih dalam kondisi OK atau tidak, kemudian range kerja/ rentang kerja dari servo motor dapat dengan mudah kita kerjakan dengan menghubungkan servo motor dan arduino joystick shield seperti video dibawah ini :

Cara melakukan kendali servo motor dengan joystick arduino

Langkah-langkah detail pada diperoleh pada video diatas, sedangkan untuk secara garis besar yang perlu kita siapkan adalah peralatan sebagai berikut :

Adapun script arduino yang digunakan sebagai berikut :

#include <Servo.h>
#include <math.h>

Servo servo_1; // servo controller (multiple can exist)

int servo_pin = 3; // PWM pin for servo control
int joy_pin_x = A0; // pin for x-dir joystick
int joy_pin_y = A1; // pin for y-dir joystick
int offset_x = 0; // subtracting the initial joystick x-location
int offset_y = 0; // subtracting the initial joystick y-location
int pos = 90;    // servo starting position aligned with joystick
int prev_deg = 0; // bound for reducing jitter
int x_prev = 0; // bound for reducing jitter
int y_prev = 0; // reducing jitter

void setup() {
  servo_1.attach(servo_pin); // start servo control
  Serial.begin(9600);
  servo_1.write(pos); // move to center (joystick neutral)
  Serial.println("Positioned at 90 Degrees");  
  offset_x = analogRead(joy_pin_x); // initial joystick x-val
  offset_y = analogRead(joy_pin_y); // initial joystick y-val
}

void loop() {
  int x_val = analogRead(joy_pin_x)-offset_x; // relative joystick x
  int y_val = analogRead(joy_pin_y)-offset_y; // relative joystick y
  if (abs(x_prev-x_val)<10 and abs(y_prev-y_val)<10){
    // reduce jitter
  } else {
    x_prev = x_val;
    y_prev = y_val;
    float deg = 180-(int(atan2(x_val,y_val)*(180.0/PI))+90); // angle calc
    if (abs(deg-prev_deg)>2 and deg>0 and deg<180){
      servo_1.write(deg); // move servo to joystick location
      delay(abs(deg-prev_deg)*(10.0/6.0));
      prev_deg = deg;
      Serial.println(deg); // print out degree
    }
  }
}

Untuk koneksi dari Arduino Joystick shield cukup sederhana, yaitu pin Digital no.3 (D3) pada Arduino Joystick shield dihubungkan ke Data Signal Servo Motor. Lalu untuk Tegangan / Vcc dan Ground/ Gnd dari Servo Motor dihubungkan ke pin yang tersedia pada board juga. Klinik Robot memberikan training gratis berikut penjelasan detail untuk setiap produk yang pelanggan beli. Terima kasih.

Selamat mencoba!