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
Revision 4:9a48389dcf50, committed 2018-05-20
- 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 |
diff -r 36b69a7ced07 -r 9a48389dcf50 Servo.cpp --- 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) {