Jon Freeman / Servo

Dependents:   Brute_TS_Controller_2018_11

Files at this revision

API Documentation at this revision

Comitter:
JonFreeman
Date:
Wed May 09 15:06:16 2018 +0000
Parent:
3:36b69a7ced07
Commit message:
changed floats to double in servo

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
--- a/Servo.cpp	Thu Sep 02 17:34:43 2010 +0000
+++ b/Servo.cpp	Wed May 09 15:06:16 2018 +0000
@@ -24,7 +24,7 @@
 #include "Servo.h"
 #include "mbed.h"
 
-static float clamp(float value, float min, float max) {
+static double clamp(double value, double min, double max) {
     if(value < min) {
         return min;
     } else if(value > max) {
@@ -36,30 +36,30 @@
 
 Servo::Servo(PinName pin) : _pwm(pin) {
     calibrate();
-    write(0.5);
+//    write(0.5);   //  Edited out 04 May 2018 J Freeman. This to avoid throttle kick on powerup
 }
 
-void Servo::write(float percent) {
-    float offset = _range * 2.0 * (percent - 0.5);
+void Servo::write(double percent) {
+    double offset = _range * 2.0 * (percent - 0.5);
     _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
     _p = clamp(percent, 0.0, 1.0);
 }
 
-void Servo::position(float degrees) {
-    float offset = _range * (degrees / _degrees);
+void Servo::position(double degrees) {
+    double offset = _range * (degrees / _degrees);
     _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
 }
 
-void Servo::calibrate(float range, float degrees) {
+void Servo::calibrate(double range, double degrees) {
     _range = range;
     _degrees = degrees;
 }
 
-float Servo::read() {
+double Servo::read() {
     return _p;
 }
 
-Servo& Servo::operator= (float percent) { 
+Servo& Servo::operator= (double percent) { 
     write(percent);
     return *this;
 }
@@ -69,6 +69,6 @@
     return *this;
 }
 
-Servo::operator float() {
+Servo::operator double() {
     return read();
 }
--- a/Servo.h	Thu Sep 02 17:34:43 2010 +0000
+++ b/Servo.h	Wed May 09 15:06:16 2018 +0000
@@ -62,37 +62,37 @@
      *
      * @param percent A normalised number 0.0-1.0 to represent the full range.
      */
-    void write(float percent);
+    void write(double percent);
     
     /**  Read the servo motors current position
      *
      * @param returns A normalised number 0.0-1.0  representing the full range.
      */
-    float read();
+    double read();
     
     /** Set the servo position
      *
      * @param degrees Servo position in degrees
      */
-    void position(float degrees);
+    void position(double 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); 
+    void calibrate(double range = 0.0005, double degrees = 45.0); 
         
     /**  Shorthand for the write and read functions */
-    Servo& operator= (float percent);
+    Servo& operator= (double percent);
     Servo& operator= (Servo& rhs);
-    operator float();
+    operator double();
 
 protected:
     PwmOut _pwm;
-    float _range;
-    float _degrees;
-    float _p;
+    double _range;
+    double _degrees;
+    double _p;
 };
 
 #endif