A simple API/Software interface to the LPC17xx PWM peripheral to provide control to up to six RC type servo controllers.
inc/example1.h
- Committer:
- AjK
- Date:
- 2011-05-02
- Revision:
- 0:c680385286e3
- Child:
- 1:fbb8acf19e77
File content as of revision 0:c680385286e3:
#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); } }