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: followCar script_voor_project
Fork of Servo by
Revision 4:b9fe7af92cd5, committed 2016-12-02
- Comitter:
- backman
- Date:
- Fri Dec 02 13:03:33 2016 +0000
- Parent:
- 3:36b69a7ced07
- Commit message:
- servo final;
Changed in this revision
| Servo.cpp | Show annotated file Show diff for this revision Revisions of this file |
| Servo.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 36b69a7ced07 -r b9fe7af92cd5 Servo.cpp
--- a/Servo.cpp Thu Sep 02 17:34:43 2010 +0000
+++ b/Servo.cpp Fri Dec 02 13:03:33 2016 +0000
@@ -24,51 +24,64 @@
#include "Servo.h"
#include "mbed.h"
-static float clamp(float value, float min, float max) {
- if(value < min) {
- return min;
- } else if(value > max) {
- return max;
- } else {
- return value;
- }
-}
Servo::Servo(PinName pin) : _pwm(pin) {
- calibrate();
- write(0.5);
-}
-
-void Servo::write(float percent) {
- float offset = _range * 2.0 * (percent - 0.5);
- _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
- _p = clamp(percent, 0.0, 1.0);
+
+ _pwm.period_ms(20);
+ wait(0.5);
}
-void Servo::position(float degrees) {
- float offset = _range * (degrees / _degrees);
- _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
-}
+
+
+/*
+
-void Servo::calibrate(float range, float degrees) {
- _range = range;
- _degrees = degrees;
-}
+
+ while(1){
+
+ p.pulsewidth(0.0010);
+ wait(1);
+
+ p.pulsewidth((0.0016+0.0009)/2);
+ wait(1);
+
+ p.pulsewidth(0.0015);
+ wait(1);
+
+
+
+
+ }
-float Servo::read() {
- return _p;
-}
+*/
+
+
+
-Servo& Servo::operator= (float percent) {
- write(percent);
- return *this;
-}
+
+
+void Servo::angle(float ang){
+
+// l45->0.0010 1000us
+// r45->0.0015 1500us
+
+
+//0.0010 0.0015
+// -45 0 45
+
+// m= 250/45 =5.556
-Servo& Servo::operator= (Servo& rhs) {
- write(rhs.read());
- return *this;
-}
+//ang*x=
-Servo::operator float() {
- return read();
-}
+ _pwm.pulsewidth_us(ang*5.556+1250);
+
+
+
+
+
+
+
+
+
+
+}
\ No newline at end of file
diff -r 36b69a7ced07 -r b9fe7af92cd5 Servo.h
--- a/Servo.h Thu Sep 02 17:34:43 2010 +0000
+++ b/Servo.h Fri Dec 02 13:03:33 2016 +0000
@@ -25,30 +25,6 @@
#include "mbed.h"
-/** Servo control class, based on a PwmOut
- *
- * Example:
- * @code
- * // 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);
- * }
- * }
- * }
- * @endcode
- */
class Servo {
public:
@@ -62,37 +38,12 @@
*
* @param percent A normalised number 0.0-1.0 to represent the full range.
*/
- void write(float percent);
-
- /** Read the servo motors current position
- *
- * @param returns A normalised number 0.0-1.0 representing the full range.
- */
- float read();
-
- /** Set the servo position
- *
- * @param degrees Servo position in degrees
- */
- void position(float degrees);
-
- /** Allows calibration of the range and angles for a particular servo
- *
- * @param range Pulsewidth range from center (1.5ms) to maximum/minimum position in seconds
- * @param degrees Angle from centre to maximum/minimum position in degrees
- */
- void calibrate(float range = 0.0005, float degrees = 45.0);
-
- /** Shorthand for the write and read functions */
- Servo& operator= (float percent);
- Servo& operator= (Servo& rhs);
- operator float();
+ void angle(float ang);
+
protected:
PwmOut _pwm;
- float _range;
- float _degrees;
- float _p;
+
};
#endif
