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