Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: mbed-for-McuComm RTOS_Controller RTOS_Controller_v2 RTOS_Controller_v3 ... more
Diff: Servo.h
- Revision:
- 0:24148c673250
- Child:
- 2:8995c167f399
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Servo.h Mon Nov 16 18:24:16 2009 +0000
@@ -0,0 +1,95 @@
+/* mbed R/C Servo
+ * Copyright (c) 2007-2009 sford, cstyles
+ * Released under the MIT License: http://mbed.org/license/mit
+ */
+
+#ifndef MBED_SERVO_H
+#define MBED_SERVO_H
+
+#include "mbed.h"
+
+/* Class: Servo
+ * Abstraction on top of PwmOut to control the position of a servo motor
+ *
+ * Example:
+ * > // Continuously sweep the servo through it's full range
+ * > #include "mbed.h"
+ * > #include "Servo.h"
+ * >
+ * > Servo myservo(p21);
+ * >
+ * > int main() {
+ * > while(1) {
+ * > for(int i=0; i<100; i++) {
+ * > myservo = i/100.0;
+ * > wait(0.01);
+ * > }
+ * > for(int i=100; i>0; i--) {
+ * > myservo = i/100.0;
+ * > wait(0.01);
+ * > }
+ * > }
+ * > }
+ */
+class Servo {
+
+public:
+ /* Constructor: Servo
+ * Create a servo object connected to the specified PwmOut pin
+ *
+ * Variables:
+ * pin - PwmOut pin to connect to
+ */
+ Servo(PinName pin);
+
+ /* Function: write
+ * Set the servo position, normalised to it's full range
+ *
+ * Variables:
+ * percent - A normalised number 0.0-1.0 to represent the full range.
+ */
+ void write(float percent);
+
+ /* Function: read
+ * Read the servo motors current position
+ *
+ * Variables:
+ * returns - A normalised number 0.0-1.0 representing the full range.
+ */
+ float read();
+
+ /* Function: position
+ * Set the servo position
+ *
+ * Variables:
+ * degrees - Servo position in degrees
+ */
+ void position(float degrees);
+
+ /* Function: calibrate
+ * Allows calibration of the range and angles for a particular servo
+ *
+ *
+ * Variables:
+ * range - Pulsewidth range from center (1.5ms) to maximum/minimum position in seconds
+ * degrees - Angle from centre to maximum/minimum position in degrees
+ */
+ void calibrate(float range = 0.0005, float degrees = 45.0);
+
+ /* Function: operator=
+ * Shorthand for the write and read functions
+ */
+ Servo& operator= (float percent);
+ Servo& operator= (Servo& rhs);
+ operator float();
+
+protected:
+ PwmOut _pwm;
+ float _range;
+ float _degrees;
+ float _p;
+};
+
+
+
+#endif