A class to control a model R/C servo, using a PwmOut
Dependents: Brute_TS_Controller_2018_11
Diff: Servo.cpp
- Revision:
- 6:917d115add54
- Parent:
- 5:c7143247a1e7
diff -r c7143247a1e7 -r 917d115add54 Servo.cpp --- 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(); }