Dependencies:   mbed

Committer:
alex89
Date:
Sun Dec 06 12:56:50 2009 +0000
Revision:
0:05ddd3ecad81

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alex89 0:05ddd3ecad81 1 /* mbed Microcontroller Library - Servo
alex89 0:05ddd3ecad81 2 * Copyright (c) 2007-2008, sford
alex89 0:05ddd3ecad81 3 */
alex89 0:05ddd3ecad81 4
alex89 0:05ddd3ecad81 5 #ifndef MBED_SERVO_H
alex89 0:05ddd3ecad81 6 #define MBED_SERVO_H
alex89 0:05ddd3ecad81 7
alex89 0:05ddd3ecad81 8 #include "Servo.h"
alex89 0:05ddd3ecad81 9
alex89 0:05ddd3ecad81 10 #include "mbed.h"
alex89 0:05ddd3ecad81 11 #include "platform.h"
alex89 0:05ddd3ecad81 12
alex89 0:05ddd3ecad81 13
alex89 0:05ddd3ecad81 14 namespace mbed {
alex89 0:05ddd3ecad81 15
alex89 0:05ddd3ecad81 16 /* Class: Servo
alex89 0:05ddd3ecad81 17 * Abstraction on top of PwmOut to control the position of a servo motor
alex89 0:05ddd3ecad81 18 *
alex89 0:05ddd3ecad81 19 * Example:
alex89 0:05ddd3ecad81 20 * > // Continuously sweep the servo through it's full range
alex89 0:05ddd3ecad81 21 * >
alex89 0:05ddd3ecad81 22 * > #include "mbed.h"
alex89 0:05ddd3ecad81 23 * > #include "Servo.h"
alex89 0:05ddd3ecad81 24 * >
alex89 0:05ddd3ecad81 25 * > Servo myServo (p21);
alex89 0:05ddd3ecad81 26 * > int main() {
alex89 0:05ddd3ecad81 27 * > int i;
alex89 0:05ddd3ecad81 28 * > while (1) {
alex89 0:05ddd3ecad81 29 * > for (i=0 ; i<100 ; i++){
alex89 0:05ddd3ecad81 30 * > myServo = i/100.0;
alex89 0:05ddd3ecad81 31 * > wait (0.01);
alex89 0:05ddd3ecad81 32 * > }
alex89 0:05ddd3ecad81 33 * > for (i=100 ; i>0 ; i--){
alex89 0:05ddd3ecad81 34 * > myServo = i/100.0;
alex89 0:05ddd3ecad81 35 * > wait (0.01);
alex89 0:05ddd3ecad81 36 * > }
alex89 0:05ddd3ecad81 37 * > }
alex89 0:05ddd3ecad81 38 * >}
alex89 0:05ddd3ecad81 39 */
alex89 0:05ddd3ecad81 40
alex89 0:05ddd3ecad81 41
alex89 0:05ddd3ecad81 42 class Servo : public Base {
alex89 0:05ddd3ecad81 43
alex89 0:05ddd3ecad81 44 public:
alex89 0:05ddd3ecad81 45 /* Constructor: Servo
alex89 0:05ddd3ecad81 46 * Create a servo object connected to the specified PwmOut pin
alex89 0:05ddd3ecad81 47 *
alex89 0:05ddd3ecad81 48 * Variables:
alex89 0:05ddd3ecad81 49 * pin - PwmOut pin to connect to
alex89 0:05ddd3ecad81 50 */
alex89 0:05ddd3ecad81 51 Servo(PinName pin, const char* = NULL);
alex89 0:05ddd3ecad81 52
alex89 0:05ddd3ecad81 53 /* Function: write
alex89 0:05ddd3ecad81 54 * Set the servo position, normalised to it's full range
alex89 0:05ddd3ecad81 55 *
alex89 0:05ddd3ecad81 56 * Variables:
alex89 0:05ddd3ecad81 57 * percent - A normalised number 0.0-1.0 to represent the full range.
alex89 0:05ddd3ecad81 58 */
alex89 0:05ddd3ecad81 59 void write(float percent);
alex89 0:05ddd3ecad81 60 /* Function: read
alex89 0:05ddd3ecad81 61 * Read the servo motors current position
alex89 0:05ddd3ecad81 62 *
alex89 0:05ddd3ecad81 63 * Variables:
alex89 0:05ddd3ecad81 64 * returns - A normalised number 0.0-1.0 representing the full range.
alex89 0:05ddd3ecad81 65 */
alex89 0:05ddd3ecad81 66 float read();
alex89 0:05ddd3ecad81 67 /* Function: operator=
alex89 0:05ddd3ecad81 68 * Shorthand for the write and read functions
alex89 0:05ddd3ecad81 69 */
alex89 0:05ddd3ecad81 70 Servo& operator= (float percent);
alex89 0:05ddd3ecad81 71 Servo& operator= (Servo& rhs);
alex89 0:05ddd3ecad81 72 operator float();
alex89 0:05ddd3ecad81 73
alex89 0:05ddd3ecad81 74 #ifdef MBED_RPC
alex89 0:05ddd3ecad81 75 virtual const struct rpc_method *get_rpc_methods();
alex89 0:05ddd3ecad81 76 static struct rpc_class *get_rpc_class();
alex89 0:05ddd3ecad81 77 #endif
alex89 0:05ddd3ecad81 78
alex89 0:05ddd3ecad81 79 protected:
alex89 0:05ddd3ecad81 80
alex89 0:05ddd3ecad81 81 PwmOut _pwm;
alex89 0:05ddd3ecad81 82 float _p;
alex89 0:05ddd3ecad81 83 };
alex89 0:05ddd3ecad81 84
alex89 0:05ddd3ecad81 85 }
alex89 0:05ddd3ecad81 86
alex89 0:05ddd3ecad81 87 #endif