Hi,
Is there a way for me to slow down the speed of a servo?
It’s not the end of the world, but it’s running a bit fast which means it’s making a lot of noise.
It’s a normal 180* servo, not a continuous one, which I know would be easy to do, but I want it to be precise in it’s movements.
Here’s my code, if you can help I’d really appreciate it.
Thanks
Tim
Servo timservo;
Servo louservo;// create servo object to control a servo
// a maximum of eight servo objects can be created
int timpos = 0; // variable to store the servo position for timservo
int loupos = 0; // variable to store the servo position for louservo
void setup()
{
//Setup the Servo to the function
Particle.function("timservo", updatetimServo);
//Set pin D0 to be an output
pinMode(D0, OUTPUT);
//Attach the servo to D0
timservo.attach(D0);
//Setup the Servo to the function
Particle.function("louservo", updatelouServo);
//Set pin D0 to be an output
pinMode(D1, OUTPUT);
//Attach the servo to D0
louservo.attach(D0);
//Take control over the LED on the board
RGB.control(true);
//Turn off the LED - we dont want it flashing behind the photo frame at night
//There may be a better way to do this like turning it off, I found it just as easy to set the colour to nothing
RGB.color(0, 0, 0);
}
void loop()
{
// We don't need to do anything here
}
//This function is triggered by IFTTT - the 'command' word represents the object used to store the 'position' we send to the function.
//The 'position' we send represents where we want the servo to move to
int updatetimServo(String command)
{
//Convert string to integer, the code after this requires the 'command' object to be in a number format. IFTTT however passes the object as a 'string' even if it is a 'number'.
uint8_t timpos = command.toInt();
//This tells the servo, attached to D0 to move to the position defined in the 'command' object that was passed when we triggered this function from IFTTT
timservo.write(timpos);
//Flash the LED on so we can see that a message has been recieved - just because we can
RGB.color(255, 0, 0);
//Remember to add the delay for 2 seconds, otherwise the LED will just flash for a period of time too small for us to see
delay(2000);
//Now set the LED back to off
RGB.color(0, 0, 0);
//We return something to signify the end of the function - doesn't really matter what it is
return 1;
}
//This function is triggered by IFTTT - the 'command' word represents the object used to store the 'position' we send to the function.
//The 'position' we send represents where we want the servo to move to
int updatelouServo(String command)
{
//Convert string to integer, the code after this requires the 'command' object to be in a number format. IFTTT however passes the object as a 'string' even if it is a 'number'.
uint8_t loupos = command.toInt();
//This tells the servo, attached to D1 to move to the position defined in the 'command' object that was passed when we triggered this function from IFTTT
delay(5000);
louservo.write(loupos);
//Flash the LED on so we can see that a message has been recieved - just because we can
RGB.color(0, 0, 255);
//Remember to add the delay for 2 seconds, otherwise the LED will just flash for a period of time too small for us to see
delay(2000);
//Now set the LED back to off
RGB.color(0, 0, 0);
//We return something to signify the end of the function - doesn't really matter what it is
return 1;
}