#include <Servo.h>
// Definición de pines
const int joystickXPin = A1; // Pin analógico para el eje X del joystick
const int joystickYPin = A0; // Pin analógico para el eje Y del joystick
const int servoXPin = 9; // Pin digital para el servo del eje X
const int servoYPin = 10; // Pin digital para el servo del eje Y
// Crear objetos Servo
Servo servoX;
Servo servoY;
// Variables para almacenar los valores del joystick
int xValue = 0;
int yValue = 0;
// Variables para almacenar los ángulos de los servos
int xAngle = 90; // Posición inicial (centro)
int yAngle = 90; // Posición inicial (centro)
void setup() {
// Inicializar comunicación serial (para depuración)
Serial.begin(9600);
// Adjuntar servos a los pines correspondientes
servoX.attach(servoXPin);
servoY.attach(servoYPin);
// Mover servos a posición inicial
servoX.write(xAngle);
servoY.write(yAngle);
delay(1000); // Pequeña pausa para estabilización
}
void loop() {
// Leer valores del joystick (0-1023)
xValue = analogRead(joystickXPin);
yValue = analogRead(joystickYPin);
// Mapear valores del joystick a ángulos del servo (0-180)
// El joystick normalmente devuelve 512 en el centro
xAngle = map(xValue, 0, 1023, 0, 180);
yAngle = map(yValue, 0, 1023, 0, 180);
// Mover servos a las nuevas posiciones
servoX.write(xAngle);
servoY.write(yAngle);
// Opcional: Mostrar valores en el monitor serial
Serial.print("X: ");
Serial.print(xValue);
Serial.print(" -> ");
Serial.print(xAngle);
Serial.print(" grados | Y: ");
Serial.print(yValue);
Serial.print(" -> ");
Serial.print(yAngle);
Serial.println(" grados");
delay(20); // Pequeño retardo para evitar fluctuaciones
}