Estoy intentando controlar 4 servo con dos joystick pero no hay manera, cuando compilo el codigo no me da ningun error me carga perfectamente en mi Arduino Uno, pero los servos estan quietos hacen ruido y una pequeña vibracion y ya esta.
Les pongo el codigo que estoy usando y una imagen Fritzing que he creado con las conexiones.
A ver si tengo suerte y lo soluciono.
Gracias.
/**
* PanTiltControl
*/
#include <Servo.h>
Servo horzServo; // Create a servo object for the pan (horizontal) servo
Servo vertServo; // Create a servo object for the tilt (vertical) servo
Servo horz1Servo; // Create a servo object for the pan (horizontal) servo
Servo vert1Servo; // Create a servo object for the tilt (vertical) servo
int horzPin = 2; // Analog input for the joystick horizontal axis
int vertPin = 3; // Analog input for the joystick vertical axis
int horz1Pin = 0; // Analog input for the joystick horizontal axis
int vert1Pin = 1; // Analog input for the joystick vertical axis
int vertVal; // Value read from the vertical axis
int horzVal; // Value read from the horizontal axis
int vert1Val; // Value read from the vertical axis
int horz1Val; // Value read from the horizontal axis
/**
* Setup
*/
void setup()
{
horzServo.attach(8); // Use pin 9 PWM output for horizontal servo
vertServo.attach(9); // Use pin 10 PWM output for vertical servoç
horz1Servo.attach(10); // Use pin 9 PWM output for horizontal servo
vert1Servo.attach(11); // Use pin 10 PWM output for vertical servo
}
/**
* Main program loop
*/
void loop()
{
horzVal = analogRead(horzPin); // Read joystick horizontal position
horzVal = map(horzVal, 0, 1023, 0, 179); // Scale reading to suit servo
horzServo.write(horzVal); // Move servo to required position
vertVal = analogRead(vertPin); // Read joystick vertical position
vertVal = map(vertVal, 0, 1023, 0, 179); // Scale reading to suit servo
vertServo.write(vertVal); // Move servo to required position
delay(15); // Give the servos time to settle
horz1Val = analogRead(horzPin); // Read joystick horizontal position
horz1Val = map(horzVal, 0, 1023, 0, 179); // Scale reading to suit servo
horz1Servo.write(horzVal); // Move servo to required position
vert1Val = analogRead(vertPin); // Read joystick vertical position
vert1Val = map(vertVal, 0, 1023, 0, 179); // Scale reading to suit servo
vert1Servo.write(vertVal); // Move servo to required position
delay(15); // Give the servos time to settle
}
Tambien me gustaria saber si podria controlar los cuatro servos usando la pulsacion del joystick para cambiar de servo.
int horzPin = 2; // Analog input for the joystick horizontal axis
int vertPin = 3; // Analog input for the joystick vertical axis
int horz1Pin = 0; // Analog input for the joystick horizontal axis
int vert1Pin = 1; // Analog input for the joystick vertical axis
debe ser asi
int horzPin = A2; // Analog input for the joystick horizontal axis
int vertPin = A3; // Analog input for the joystick vertical axis
int horz1Pin = A0; // Analog input for the joystick horizontal axis
int vert1Pin = A1; // Analog input for the joystick vertical axis
No estoy de acuerdo, eso tiene que funcionar. Si no lo hace es porque tienes algo mal conectado.
Acá junté todas las sugerencias
#include <Servo.h>
Servo ServoHorz0; // Create a servo object for the pan (horizontal) servo
Servo ServoVert0; // Create a servo object for the tilt (vertical) servo
Servo ServoHorz1; // Create a servo object for the pan (horizontal) servo
Servo ServoVert1; // Create a servo object for the tilt (vertical) servo
const byte s0horPin = 8;
const byte s0vertPin = 9;
const byte s1horPin = 10;
const byte s1vertPin = 11;
const byte horzPin = A2; // Analog input for the joystick horizontal axis
const byte vertPin = A3; // Analog input for the joystick vertical axis
const byte horz1Pin = A0; // Analog input for the joystick horizontal axis
const byte vert1Pin = A1; // Analog input for the joystick vertical axis
unsigned int horz0Val; // Value read from the horizontal axis
unsigned int vert0Val; // Value read from the vertical axis
unsigned int horz1Val; // Value read from the horizontal axis
unsigned int vert1Val; // Value read from the vertical axis
/* Setup */
void setup() {
ServoHorz0.attach(s0horPin); // Use pin 9 PWM output for horizontal servo
ServoVert0.attach(s0vertPin); // Use pin 10 PWM output for vertical servoç
ServoHorz1.attach(s1horPin); // Use pin 9 PWM output for horizontal servo
ServoVert1.attach(s1vertPin); // Use pin 10 PWM output for vertical servo
}
void loop() {
horz0Val = analogRead(horzPin); // Read joystick horizontal position
horz0Val = map(horz0Val, 0, 1023, 0, 179);// Scale reading to suit servo
ServoHorz0.write(s0horPin); // Move servo to required position
delay(15); // Give the servos time to settle
vert0Val = analogRead(vertPin); // Read joystick vertical position
vert0Val = map(vert0Val, 0, 1023, 0, 179);// Scale reading to suit servo
ServoVert0.write(s0vertPin); // Move servo to required position
delay(15); // Give the servos time to settle
horz1Val = analogRead(horzPin); // Read joystick horizontal position
horz1Val = map(horz1Val, 0, 1023, 0, 179);// Scale reading to suit servo
ServoHorz1.write(s1horPin); // Move servo to required position
delay(15); // Give the servos time to settle
vert1Val = analogRead(vertPin); // Read joystick vertical position
vert1Val = map(vert1Val, 0, 1023, 0, 179);// Scale reading to suit servo
ServoVert1.write(s1vertPin); // Move servo to required position
delay(15); // Give the servos time to settle
}
hola amigos alguien me puede hacer un skech de manejo de 4 servo motores sg90 con dos joytick
es para un colegio tenemos todo armado un brazo robotico con cuatro servos como puedo pasar una foto del mismo para que vean como es y como estan dispuestos los servos necesitamos ayuda ..ok gracias
No te podemos hacer nada planteado del modo que lo haces. Lee las normas del foro. El Foro no hace sketch, responde dudas y el que asi lo desea responde mas alla de estas dudas. Pero con tu planteo te aseguro que nadie va a responderte. De hecho acabas de revivir un hilo del 2017 1 año sin movimientos en un hilo abandonado. Eso implica que no has leído las normas asi que ya son dos faltas a las mismas. Voy a mover tu hilo y te recomiendo que te esperes buscando en Google o viendo en Documentación que hay muchos tutoriales de todo tipo. Suerte y esmérate un poco.