Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
8 years, 11 months ago.
How to control two independent servos?
Hello, I'm trying to operate two or more TowerPro MG995 servos using the PWM pins, all with period of 20 miliseconds, but I don't get how to write the code to control them independently at the same time. I have tried using Ticker, but just one of the PWM pins work. Here's my code:
- include "mbed.h"
void servo1(void); void servo2(void); void servo3(void); Ticker time_up; PwmOut PWM1(p21); PwmOut PWM2(p22); PwmOut PWM3(p23);
void servo1(){ PWM1.period(0.020); while (1) { PWM1=0.035; -90° wait(1); PWM1=0.05; -45° wait(1); PWM1=0.075; 0° wait(1); PWM1=0.1; 45° wait(1); PWM1=0.125; 90° wait(2); } }
void servo2(){ PWM2.period(0.020); while (1) { PWM2=0.125; -90° wait(1); PWM2=0.1; -45° wait(1); PWM2=0.075; 0° wait(1); PWM2=0.05; 45° wait(1); PWM2=0.035; 90° wait(2); } }
void servo3(){ PWM3.period(0.020); while (1) { PWM3=0.035; -90° wait(1); PWM3=0.05; -45° wait(1); PWM3=0.075; 0° wait(1); PWM3=0.1; 45° wait(1); PWM3=0.125; 90° wait(2); } }
int main() { time_up.attach(&servo2, 0.01); time_up.attach(&servo1, 0.01); time_up.attach(&servo3, 0.01); }