viernes, 17 de julio de 2015

Tutorial: Control de dos servos mediante Joystick



En este tutorial veremos el uso del Joystick para manejar dos servos usando un eje para un servo y otro eje para el otro.

Para nuestro tutorial de hoy usaremos:
- Tabla con protoboard y sujeción para Arduino UNO cedida por Electrohobby.
- Arduino UNO cedido por Electrohobby.
- Dos servos.
- Un Joystick de Playstation.
- Cables.

Seguidamente podremos ver el mapa de conexiones:


Como podéis ver, las conexiones son bastante sencillas:

Del Joystick salen 5 terminales. VCC (o 5V), GND, VRx (Horizontal), VRy (Vertical) y SW (Switch). VCC lo conectaremos con nuestros 5V del arduino. GND del Joystick con el GND del Arduino. Los pines VRx y VRy los leeremos por los pines analógicos y SW lo trataremos como un pulsador.




Código:

#include <Servo.h>

Servo panServo;//asignamos un eje a un servo y otro eje al otro servo      
Servo tiltServo;      

int servoPanPosition = 90;//posición de referencia
int servoTiltPosition = 90;
int joystickPanSpeed = 0;
int joystickTiltSpeed = 0;
int joystickPanPin = A0; //marcamos entradas analógicas que medirán el ángulo del joystick
int joystickTiltPin = A1;
int servoPanPin = 9;//declaramos los pines digitales por donde le entrará la instrucción del joystick al servo.
int servoTiltPin = 10;
int boton = 8;
void setup() {   pinMode(servoPanPin, OUTPUT);//se declara igual que declarariamos un led   pinMode(servoTiltPin, OUTPUT);   panServo.attach(servoPanPin);   tiltServo.attach(servoTiltPin); } void loop() {   joystickPanSpeed = (analogRead(joystickPanPin) - 512) / 50;     // -512 to provide equal +/- numbers   joystickTiltSpeed = (analogRead(joystickTiltPin) - 512) / -50;     // negative 50 to reverse direction   servoPanPosition = constrain((servoPanPosition + joystickPanSpeed), 1, 180);   servoTiltPosition = constrain((servoTiltPosition + joystickTiltSpeed), 1, 180);     // constarin function to not exceed servo limits   panServo.write(servoPanPosition);   tiltServo.write(servoTiltPosition);   delay(50);     // adjustable for overall speed }

Y como siempre el vídeo:


Gracias de antemano.

Un saludo.

C.

3 comentarios:

  1. este proyecto serviria para implementarlo a una silla de ruedas? para aplicar delante, tras, izq, derecha ? es una velocidad fija en estos servos?

    ResponderEliminar
    Respuestas
    1. hola muy buen proyecto me gusto mucho, te pregunto como podría implementar un led para que cuando el servomotor este en 0° y en 180° este se encienda y cuando no este en esos grados este led se apague,(esto para los dos servos),te lo agradecería mucho si me pudieras ayudar.

      Eliminar
  2. hola muy buen proyecto me gusto mucho, te pregunto como podría implementar un led para que cuando el servomotor este en 0° y en 180° este se encienda y cuando no este en esos grados este led se apague,(esto para los dos servos),te lo agradecería mucho si me pudieras ayudar.

    ResponderEliminar