A class to control a model R/C servo, using a PwmOut. Modified to account for PWM inversion that occurs with level-shifting on custom PCB.

Fork of Servo by Simon Ford

Files at this revision

API Documentation at this revision

Comitter:
villetiukuvaara
Date:
Sun May 20 02:54:53 2018 +0000
Parent:
3:36b69a7ced07
Commit message:
Changed pulse width to invert, accounting for inversion that happens in hardware level conversion.

Changed in this revision

Servo.cpp 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	Sun May 20 02:54:53 2018 +0000
@@ -41,13 +41,13 @@
 
 void Servo::write(float percent) {
     float offset = _range * 2.0 * (percent - 0.5);
-    _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
+    _pwm.pulsewidth(0.02 - (0.0015 + clamp(offset, -_range, _range)));
     _p = clamp(percent, 0.0, 1.0);
 }
 
 void Servo::position(float degrees) {
     float offset = _range * (degrees / _degrees);
-    _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
+    _pwm.pulsewidth(0.02 - (0.0015 + clamp(offset, -_range, _range)));
 }
 
 void Servo::calibrate(float range, float degrees) {