Servo de rotación continua FS90R - javierre/nodemcu GitHub Wiki
Servo de rotación continua FS90R
Si consultamos la librería servo, vemos que:
servo.write() allows a maximum of 180 servo positions (0->180)
servo.writeMicroseconds() allows a maximum of 1000 servo positions (1000->2000)
Ambas se pueden usar para controlar un servo de rotación continua, aunque si usamos writeMicroseconds tenemos mayor nivel de precisión a la hora de establecer la velocidad del motor. Para ello debemos saber que las velocidades varían entre writeMicroseconds(1000) y writeMicroseconds(2000), siendo 1500 el punto en el que el motor se para y los valores superiores lo hacen girar en sentido antihorario y los inferiores en sentido horario.
Hay que tener en cuenta que los motores no son perfectos y que, por tanto, puede ser que el valor de parada on sea 1500 y que sea algún valor cercano, como 1450. En este caso habrá que añadir un offset a los valores que se pasen al motor, es decir, habría que restar 50 a los valores transmitidos.
Velocidad | Sentido de giro | Imagen |
---|---|---|
1500 | Parado | |
>1500 | Antihorario | |
<1500 | Horario |
#include <Servo.h>
Servo servo1;
void setup() {
Serial.begin(9600);
servo1.attach(D6);
servo1.writeMicroseconds(1500); // Stop
}
void loop() {
Serial.println("Moving Clockwise");
servo1.write(1700); //C-Clockwise - Antihorario
delay(1000);
Serial.println("Stop");
servo1.write(1500); //Stop
delay(2000);
}