A inclusão da Library VarSpeedServo com as alterações sugeridas não compila e não exibe mensagem clara de erro.
#include <VarSpeedServo.h>
#include <Servo.h>
#define ANGULO_INICIAL_MOTOR 90
int auxBase = ANGULO_INICIAL_MOTOR;
int auxBraco1 = ANGULO_INICIAL_MOTOR;
int auxBraco2 = ANGULO_INICIAL_MOTOR;
int auxGarra = ANGULO_INICIAL_MOTOR;
//--- Mapeamento dos Joysticks ---
#define joystick1X A0
#define joystick1Y A1
#define joystick2X A2
#define joystick2Y A3
// --- Mapeamento dos Servos ---
VarSpeedServo motorBase;
VarSpeedServo motorBraco1;
VarSpeedServo motorBraco2;
VarSpeedServo motorGarra;
// --- Inicialização ---
void setup() {
mapearPinosDosMotores();
inicializarAngulosDosMotores();
mapearJoysticksComoInput();
}
//--- Loop Infinito ---
void loop() {
moverBase();
moverBraco1();
moverBraco2();
moverGarra();
delay(100);
}
//---Funçãoes Auxiliares ---
//Mapear Pinos dos Servos Motores
void mapearPinosDosMotores(){
motorBase.attach(5);
motorBraco1.attach(6);
motorBraco2.attach(9);
motorGarra.attach(10);
}
//Inicializar Angulos iniciais dos Motores
void inicializarAngulosDosMotores(){
motorBase.write(ANGULO_INICIAL_MOTOR);
motorBraco1.write(ANGULO_INICIAL_MOTOR);
motorBraco2.write(ANGULO_INICIAL_MOTOR);
motorGarra.write(ANGULO_INICIAL_MOTOR);
}
//Mapear os pinos do Joystick como INPUT
void mapearJoysticksComoInput(){
pinMode(joystick1X, INPUT);
pinMode(joystick1Y, INPUT);
pinMode(joystick2X, INPUT);
pinMode(joystick2Y, INPUT);
}
//Mover Base
void moverBase(){
int pos1X = analogRead(joystick1X);
pos1X = map(pos1X, 0, 1023, 0, 180); //Aqui a mágica acontece
if(pos1X > 100){
auxBase+=10;
motorBase.write(auxBase,50);
}else if(pos1X <80){
auxBase-=10;
motorBase.write(auxBase,50);
}
}
//Mover Braco1
void moverBraco1(){
int pos1Y = analogRead(joystick1Y);
pos1Y = map(pos1Y, 0, 1023, 45, 135); //Aqui a mágica acontece
if(pos1Y > 100){
auxBraco1+=10;
motorBraco1.write(auxBraco1,50);
}else if(pos1Y <80){
auxBraco1-=10;
motorBraco1.write(auxBraco1,50);
}
}
//Mover Braco2
void moverBraco2(){
int pos2X = analogRead(joystick2X);
pos2X = map(pos2X, 0, 1023, 50, 90); //Aqui a mágica acontece
if(pos2X > 100){
auxBraco2+=10;
motorBraco2.write(auxBraco2,50);
}else if(pos2X <80){
auxBraco2-=10;
motorBraco2.write(auxBraco2,50);
}
}
//Mover Garra
void moverGarra() {
int pos2Y = analogRead(joystick2Y);
pos2Y = map(pos2Y, 0, 1023, 70, 130);
if(pos2Y > 100){
auxGarra+=10;
motorGarra.write(auxGarra,50);
}else if(pos2Y < 80){
auxGarra-=10;
motorGarra.write(auxGarra,50);
}
}