A class to control a model R/C servo, using a PwmOut

Dependents:   Brute_TS_Controller_2018_11

Revision:
6:917d115add54
Parent:
5:c7143247a1e7
--- a/Servo.cpp	Wed May 09 15:42:15 2018 +0000
+++ b/Servo.cpp	Wed May 09 17:11:54 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) {
@@ -39,27 +39,27 @@
 //    write(0.5);
 }
 
-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();
 }