A simple API/Software interface to the LPC17xx PWM peripheral to provide control to up to six RC type servo controllers.
Diff: inc/example1.h
- Revision:
- 0:c680385286e3
- Child:
- 1:fbb8acf19e77
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/inc/example1.h Mon May 02 18:38:45 2011 +0000 @@ -0,0 +1,67 @@ + + +#include "mbed.h" +#include "SimpleRCservos.h" + +#define N_90 -90.0 +#define P_90 +90.0 + +SimpleRCservos servos; + +int main() { + double position = 0; + + // The default scaling range is -1.0 to +1.0 + // Alter the scaling range to -90.0 to +90.0 + servos.setLimits(SimpleRCservos::Servo6, N_90, P_90); // Mbed p21 + servos.setLimits(SimpleRCservos::Servo5, N_90, P_90); // Mbed p22 + servos.setLimits(SimpleRCservos::Servo4, N_90, P_90); // Mbed p23 + + // The default range is 1ms to 2ms with 1.5ms being the neutral. + // This line isn't actually needed as 1ms/2ms is the library's + // default but is included here to show how altering it may be + // achieved. + servos.setRange(SimpleRCservos::Servo6, 1000, 2000); // Servo4 uses p21 + + // Add a servo pulse range, 900us to 2.1ms, neutral 1.5ms. + servos.setRange(SimpleRCservos::Servo5, 900, 2100); // Servo4 uses p22 + + // Add a servo pulse range, 600us to 2.4ms, neutral 1.5ms. + servos.setRange(SimpleRCservos::Servo4, 600, 2400); // Servo4 uses p23 + + // Enable the Servo (starts producing pulses). + servos.enable(SimpleRCservos::Servo6); + servos.enable(SimpleRCservos::Servo5); + servos.enable(SimpleRCservos::Servo4); + + while(1) { + + // Slide up to max + for(position = 0; position < P_90; position += 0.1) { + servos.position(SimpleRCservos::Servo6, position); + servos.position(SimpleRCservos::Servo5, position); + servos.position(SimpleRCservos::Servo4, position); + wait(0.005); + } + wait(2); + + // Slide down to min + for(position = P_90; position > N_90; position -= 0.1) { + servos.position(SimpleRCservos::Servo6, position); + servos.position(SimpleRCservos::Servo5, position); + servos.position(SimpleRCservos::Servo4, position); + wait(0.005); + } + wait(2); + + // Slide back up to neutral + for(position = N_90; position < 0; position += 0.1) { + servos.position(SimpleRCservos::Servo6, position); + servos.position(SimpleRCservos::Servo5, position); + servos.position(SimpleRCservos::Servo4, position); + wait(0.005); + } + wait(2); + } +} +