#include <Servo.h> // Include the Servo library
Servo servo1;
Servo servo2;
int led_horizontal = 6;
int led_vertical = 7;
int x_key = A1; // X-axis of the joystick
int y_key = A0; // Y-axis of the joystick
int x_pos;
int y_pos;
int servo1_pin = 8;
int servo2_pin = 9;
int initial_position = 90;
int initial_position1 = 90;
bool isTurning = false;
// Function declarations with proper names
void updateXaxis(int value, int high_value, int &XinitialPos, int x_pos);
void updateYaxis(int value, int high_value, int &YinitialPos, int y_pos);
void blinking(int led_direction, bool isturning);
void setup() {
Serial.begin(9600);
servo1.attach(servo1_pin);
servo2.attach(servo2_pin);
servo1.write(initial_position);
servo2.write(initial_position1);
pinMode(led_horizontal, OUTPUT);
pinMode(led_vertical, OUTPUT);
pinMode(x_key, INPUT);
pinMode(y_key, INPUT);
}
void loop() {
x_pos = analogRead(x_key);
y_pos = analogRead(y_key);
// Horizontal updates for the X-axis servo
updateXaxis(300, 700, initial_position, x_pos);
// Vertical updates for the Y-axis servo
updateYaxis(300, 700, initial_position1, y_pos);
}
// Function to update the X-axis servo
void updateXaxis(int value, int high_value, int &XinitialPos, int x_pos) {
if (x_pos < value) {
if (XinitialPos >= 10) {
XinitialPos = XinitialPos - 20;
servo1.write(XinitialPos);
delay(200);
blinking(led_horizontal, isTurning = true);
}
} else if (x_pos > high_value) {
if (XinitialPos <= 180) {
XinitialPos = XinitialPos + 20;
servo1.write(XinitialPos);
delay(200);
blinking(led_horizontal, isTurning = true);
}
}
}
// Function to update the Y-axis servo
void updateYaxis(int value, int high_value, int &YinitialPos, int y_pos) {
if (y_pos < value) {
if (YinitialPos >= 10) {
YinitialPos = YinitialPos - 20;
servo2.write(YinitialPos);
delay(200);
blinking(led_vertical, isTurning = true);
}
} else if (y_pos > high_value) {
if (YinitialPos <= 180) {
YinitialPos = YinitialPos + 20;
servo2.write(YinitialPos);
delay(200);
blinking(led_vertical, isTurning = true);
}
}
}
void blinking(int led_direction, bool isturning){
for (int i = 0; i < 5; i++) {
digitalWrite(led_direction, HIGH);
delay(80);
digitalWrite(led_direction, LOW);
isturning = false;
}
}