#include <Servo.h>
#define pinServo1 11
#define pinManDerIz A0
int SERVOMIN = 5, SERVOMAX = 185;
int posServo1 = 90, posServo1Ant = -1; // Posicion actual del servo 1]
unsigned long t_anterior, t_actual;
Servo myservo; // create servo object to control a servo
void setup() {
Serial.begin(115200);
myservo.attach(pinServo1); // attaches the servo on pin 9 to the servo object
}
bool moverServo(int pinJ, int &posServo, int &posServoAnt ) {
int eje, incremento = 0;
eje = analogRead(pinJ);
Serial.print(posServo);
Serial.print(" - ");
Serial.println(eje);
Serial.println("");
if (eje > 532) {
if (eje > 949) {
incremento = 4;
}
else if (eje > 607) {
incremento = 2;
}
else {
incremento = 1;
}
if((posServo - incremento) >= SERVOMIN) posServo -= incremento;
} else if (eje < 492) {
if (eje < 75) {
incremento = 4;
}
else if (eje < 417) {
incremento = 2;
}
else {
incremento = 1;
}
if ((posServo + incremento) <= SERVOMAX) posServo += incremento;
}
if (posServo != posServoAnt) { //Si el valor de la posicion del servo actual es distinta a la anterior, mueve el servo a la nueva posicion.
posServoAnt = posServo;
return true;
}
else {
return false;
}
}
void loop() {
if (moverServo(pinManDerIz, posServo1, posServo1Ant)) {
myservo.write(posServo1);
}
/* t_actual = millis();
Serial.print(" - ");
Serial.println(t_actual);*/
delay(50);
}