#include <Servo.h>

// 서보 객체 생성
Servo x_axis_servo;
Servo y_axis_servo;
Servo z_servo;


// 디지털 핀 할당
const int x_axis_pin = A0; // x축 조이스틱 연결 핀
const int y_axis_pin = A1; // y축 조이스틱 연결 핀
const int z_button_pin = 13;

// 조이스틱 값 범위
const int min_value = 0;
const int max_value = 1023;

// 서보 모터 각도 범위
const int min_angle = 0;
const int max_angle = 180;

int z_button_state = 0;

void setup() {
  // 시리얼 통신 시작
  Serial.begin(9600);

  // 서보에 핀 할당
  x_axis_servo.attach(2); // x축 서보 연결 핀
  y_axis_servo.attach(3); // y축 서보 연결 핀
  z_servo.attach(4);

  pinMode(z_button_pin, INPUT);
}

void loop() {
  // 조이스틱 값 읽기
  int x_axis_value = analogRead(x_axis_pin);
  int y_axis_value = analogRead(y_axis_pin);

  z_button_state = digitalRead(z_button_pin);
  
  // 서보 각도 계산
  int x_angle = map(x_axis_value, min_value, max_value, max_angle, min_angle);
  int y_angle = map(y_axis_value, min_value, max_value, min_angle, max_angle);
  int z_angle = z_button_state == HIGH ? max_angle : min_angle;

  // 서보 모터 제어
  x_axis_servo.write(x_angle);
  y_axis_servo.write(y_angle);
  z_servo.write(z_angle);
  
  // 잠시 대기
  delay(15);
}
$abcdeabcde151015202530fghijfghij