#include <Servo.h>
// Define los pines para el joystick y los servos
const int joystickXPin = A0; // Conecta el eje X del joystick a A0
const int joystickYPin = A1; // Conecta el eje Y del joystick a A1
const int servoXPin = 5; // Conecta el servomotor X al pin digital 5
const int servoYPin = 6; // Conecta el servomotor Y al pin digital 6
// Crea objetos Servo
Servo servoX;
Servo servoY;
// Define la zona muerta para evitar movimientos involuntarios cerca del centro
const int zonaMuerta = 10; // Ajusta este valor según sea necesario
void setup() {
// Inicializa los servomotores
servoX.attach(servoXPin);
servoY.attach(servoYPin);
}
void loop() {
// Lee los valores del joystick en los ejes X e Y
int joystickXValue = analogRead(joystickXPin);
int joystickYValue = analogRead(joystickYPin);
// Control del servomotor X (eje X)
int direccionX = 0; // 0: Detenido, 1: Giro hacia un lado, -1: Giro hacia el otro lado
if (joystickXValue < (512 - zonaMuerta)) {
// Mover hacia un lado
direccionX = -1;
} else if (joystickXValue > (512 + zonaMuerta)) {
// Mover hacia el otro lado
direccionX = 1;
} else {
// En la zona muerta, detener el servo
direccionX = 0;
}
int velocidadX = map(abs(joystickXValue - 512), 0, 512 - zonaMuerta, 0, 180);
servoX.write(90 + (direccionX * velocidadX));
// Control del servomotor Y (eje Y)
int anguloY = map(joystickYValue, 0, 1023, 0, 180);
servoY.write(anguloY);
// Espera un breve periodo antes de leer nuevamente el joystick
delay(15);
}