Library for using the TLC5940 as a servo controller.
Diff: TLC5940Servo.cpp
- Revision:
- 5:56daa8c0697d
- Parent:
- 2:1d2251574d35
- Child:
- 6:b001282e967b
--- a/TLC5940Servo.cpp Tue Oct 21 06:14:58 2014 +0000 +++ b/TLC5940Servo.cpp Tue Oct 21 06:26:25 2014 +0000 @@ -87,14 +87,17 @@ write(0.5); } -// used source code, but converted pwm pulse to 12 bit value -// assuming 20ms period, divide to get percentage and multiply to get value void TLC5940Servo::Servo::write(float percent) { float offset = _range * 2.0 * (percent - 0.5); _pw = (int)(4095 - ((0.0015 + clamp(offset, -_range, _range))/0.02 * 4096.0)); _p = clamp(percent, 0.0, 1.0); } +void TLC5940Servo::Servo::position(float degrees) { + float offset = _range * (degrees / _degrees); + _pw = (int)(4095 - ((0.0015 + clamp(offset, -_range, _range))/0.02 * 4096.0)); +} + void TLC5940Servo::Servo::calibrate(float range, float degrees) { _range = range; _degrees = degrees; @@ -113,6 +116,11 @@ return *this; } +TLC5940Servo::Servo& TLC5940Servo::Servo::operator= (TLC5940Servo::Servo& rhs) { + write(rhs.read()); + return *this; +} + TLC5940Servo::Servo::operator float() { return read(); }