← Volver a Formación Arduino
Intermedio



← Volver a Formación Arduino
18. Control de servo con joystick
Mueve un servo girando un joystick. La base del control manual de robots y mecanismos.
🧰 Lista de materiales
Arduino Uno R3 (ATmega328P)
Lee el joystick, manda el servo
Joystick analógico doble eje HW-504
Control de posición (2 ejes + botón)
Microservo SG90 9 g
Se mueve según el eje X
Breadboard 830 puntos
Montaje
🎯 Qué vas a aprender
A leer un joystick analógico (dos potenciómetros + botón) y traducir su posición en ángulo de servo. Es el ladrillo del control manual: brazos, torretas, cámaras.
📚 Teoría: el joystick por dentro
Un joystick HW-504 son dos potenciómetros perpendiculares (ejes X e Y) y un pulsador al presionarlo. En reposo, cada eje da ~512 (centro de 0–1023). Mapeamos ese rango al ángulo del servo (0–180°).
🔌 Conexiones
| Joystick | Pin |
|---|---|
| VCC / GND | 5 V / GND |
| VRx | A0 |
| VRy | A1 |
| SW (botón) | D2 |
| Servo señal | D9 (~) |
| Servo VCC/GND | 5 V / GND |
💻 Código completo
// Servo controlado por el eje X de un joystick
#include
Servo servo;
const int VRX = A0;
const int SW = 2;
void setup() {
servo.attach(9);
pinMode(SW, INPUT_PULLUP);
}
void loop() {
int x = analogRead(VRX); // 0..1023
int angulo = map(x, 0, 1023, 0, 180); // a grados
servo.write(angulo);
if (digitalRead(SW) == LOW) {
servo.write(90); // centra al pulsar
delay(300);
}
delay(15); // da tiempo al servo
} 💡 ConsejoSi el servo «vibra» en reposo, añade una zona muerta alrededor del centro (ignora valores entre 480 y 540).
🛠️ Montaje paso a paso
- Cablea el joystick (VCC, GND, VRx→A0, VRy→A1, SW→D2).
- Conecta el servo (señal→D9, alimentación 5 V/GND).
- Sube el sketch y mueve el joystick en horizontal.
- Pulsa el joystick para centrar.
🧩 Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| Servo al revés | Eje invertido | Cambia map(...,180,0) |
| Tiembla parado | Ruido analógico | Añade zona muerta central |
| Se reinicia el Arduino | Servo tira mucha corriente | Aliméntalo aparte |
🚀 Para ir más lejos
- Usa el eje Y para un segundo servo (proyecto 19, pan-tilt).
- Sustituye el SG90 por el MG90S de engranaje metálico para más par.