Matthias Grob
/
FlyBed2
My fully self designed first stable working Quadrocopter Software.
Servo/Servo.h@10:14390c90c3f5, 2015-08-31 (annotated)
- Committer:
- maetugr
- Date:
- Mon Aug 31 20:20:50 2015 +0000
- Revision:
- 10:14390c90c3f5
- Parent:
- 5:06e978fd147a
before changing to MPU9250
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
maetugr | 5:06e978fd147a | 1 | // based on http://mbed.org/users/jdenkers/code/Servo/ |
maetugr | 5:06e978fd147a | 2 | |
maetugr | 5:06e978fd147a | 3 | #ifndef SERVO_H |
maetugr | 5:06e978fd147a | 4 | #define SERVO_H |
maetugr | 5:06e978fd147a | 5 | |
maetugr | 5:06e978fd147a | 6 | #include "mbed.h" |
maetugr | 5:06e978fd147a | 7 | |
maetugr | 5:06e978fd147a | 8 | /** Class to control a servo on any pin, without using pwm |
maetugr | 5:06e978fd147a | 9 | * |
maetugr | 5:06e978fd147a | 10 | * Example: |
maetugr | 5:06e978fd147a | 11 | * @code |
maetugr | 5:06e978fd147a | 12 | * // Keep sweeping servo from left to right |
maetugr | 5:06e978fd147a | 13 | * #include "mbed.h" |
maetugr | 5:06e978fd147a | 14 | * #include "Servo.h" |
maetugr | 5:06e978fd147a | 15 | * |
maetugr | 5:06e978fd147a | 16 | * Servo Servo1(p20); |
maetugr | 5:06e978fd147a | 17 | * |
maetugr | 5:06e978fd147a | 18 | * Servo1.Enable(1500,20000); |
maetugr | 5:06e978fd147a | 19 | * |
maetugr | 5:06e978fd147a | 20 | * while(1) { |
maetugr | 5:06e978fd147a | 21 | * for (int pos = 1000; pos < 2000; pos += 25) { |
maetugr | 5:06e978fd147a | 22 | * Servo1.SetPosition(pos); |
maetugr | 5:06e978fd147a | 23 | * wait_ms(20); |
maetugr | 5:06e978fd147a | 24 | * } |
maetugr | 5:06e978fd147a | 25 | * for (int pos = 2000; pos > 1000; pos -= 25) { |
maetugr | 5:06e978fd147a | 26 | * Servo1.SetPosition(pos); |
maetugr | 5:06e978fd147a | 27 | * wait_ms(20); |
maetugr | 5:06e978fd147a | 28 | * } |
maetugr | 5:06e978fd147a | 29 | * } |
maetugr | 5:06e978fd147a | 30 | * @endcode |
maetugr | 5:06e978fd147a | 31 | */ |
maetugr | 5:06e978fd147a | 32 | |
maetugr | 5:06e978fd147a | 33 | class Servo { |
maetugr | 5:06e978fd147a | 34 | |
maetugr | 5:06e978fd147a | 35 | public: |
maetugr | 5:06e978fd147a | 36 | /** Create a new Servo object on any mbed pin |
maetugr | 5:06e978fd147a | 37 | * |
maetugr | 5:06e978fd147a | 38 | * @param Pin Pin on mbed to connect servo to |
maetugr | 5:06e978fd147a | 39 | */ |
maetugr | 5:06e978fd147a | 40 | Servo(PinName Pin, int frequency); |
maetugr | 5:06e978fd147a | 41 | void SetFrequency(int frequency); |
maetugr | 5:06e978fd147a | 42 | |
maetugr | 5:06e978fd147a | 43 | /** Change the position of the servo. Position in us |
maetugr | 5:06e978fd147a | 44 | * |
maetugr | 5:06e978fd147a | 45 | * @param NewPos The new value of the servos position (us) |
maetugr | 5:06e978fd147a | 46 | */ |
maetugr | 5:06e978fd147a | 47 | void SetPosition(int NewPos); |
maetugr | 5:06e978fd147a | 48 | |
maetugr | 5:06e978fd147a | 49 | /** Enable the servo. Without enabling the servo won't be running. Startposition and period both in us. |
maetugr | 5:06e978fd147a | 50 | * |
maetugr | 5:06e978fd147a | 51 | * @param StartPos The position of the servo to start (us) |
maetugr | 5:06e978fd147a | 52 | * @param Period The time between every pulse. 20000 us = 50 Hz(standard) (us) |
maetugr | 5:06e978fd147a | 53 | */ |
maetugr | 5:06e978fd147a | 54 | void Enable(int StartPos, int Period); |
maetugr | 5:06e978fd147a | 55 | |
maetugr | 5:06e978fd147a | 56 | //Disable the servo. After disabling the servo won't get any signal anymore |
maetugr | 5:06e978fd147a | 57 | void Disable(); |
maetugr | 5:06e978fd147a | 58 | |
maetugr | 5:06e978fd147a | 59 | //operator for confortable positioning |
maetugr | 5:06e978fd147a | 60 | void operator=(int position); |
maetugr | 5:06e978fd147a | 61 | |
maetugr | 5:06e978fd147a | 62 | |
maetugr | 5:06e978fd147a | 63 | private: |
maetugr | 5:06e978fd147a | 64 | void StartPulse(); |
maetugr | 5:06e978fd147a | 65 | void EndPulse(); |
maetugr | 5:06e978fd147a | 66 | |
maetugr | 5:06e978fd147a | 67 | int Position; |
maetugr | 5:06e978fd147a | 68 | DigitalOut ServoPin; |
maetugr | 5:06e978fd147a | 69 | Ticker Pulse; |
maetugr | 5:06e978fd147a | 70 | Timeout PulseStop; |
maetugr | 5:06e978fd147a | 71 | }; |
maetugr | 5:06e978fd147a | 72 | |
maetugr | 5:06e978fd147a | 73 | #endif |