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
--- 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();
}