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 directionservoPanPosition = constrain((servoPanPosition + joystickPanSpeed), 1, 180);
servoTiltPosition = constrain((servoTiltPosition + joystickTiltSpeed), 1, 180);
// constarin function to not exceed servo limitspanServo.write(servoPanPosition);
tiltServo.write(servoTiltPosition);delay(50);
// adjustable for overall speed
}Y como siempre el vídeo:Gracias de antemano.Un saludo.C.
este proyecto serviria para implementarlo a una silla de ruedas? para aplicar delante, tras, izq, derecha ? es una velocidad fija en estos servos?
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.
hola byktor, yo tambien entre a esta publicacion con la idea de hacer una silla de ruedas pero esta programacion claramente no sirve para eso, vos pudiste hacerla? me podrias compartir tu programacion? gracias y espero que veas esto.
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.
Excelente proyecto, Felicidades!!!
Alguien sabria como hacer que los servos funcionen mas lentamente? No soy capaz de conseguirlo
Me puedes explicarme en código