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.
este proyecto serviria para implementarlo a una silla de ruedas? para aplicar delante, tras, izq, derecha ? es una velocidad fija en estos servos?
ResponderEliminar