A library to control a CYS S8218 servo
CYS8218Controller.cpp
- Committer:
- Kerneels Bezuidenhout
- Date:
- 2016-09-07
- Revision:
- 1:c42f4b73e85c
- Parent:
- 0:23a6381d15ff
- Child:
- 2:695c74c6d483
File content as of revision 1:c42f4b73e85c:
#include "CYS8218Controller.hpp" CYS8218Controller::CYS8218Controller(PinName pwmPin, float initAngle) : _servo(pwmPin) { _angle = initAngle; ZEROPW = 0.0015f; //1500us default position PW_PER_DEG = 0.0005f/45.0f; //500us -> 45deg default _servo.period_us(5000); SetServo(); } void CYS8218Controller::SetServo() { float pw = ZEROPW+_angle*PW_PER_DEG; pw = ( pw < MIN_PW ? MIN_PW : pw > MAX_PW ? MAX_PW : pw); _servo.pulsewidth(pw); } void CYS8218Controller::SaveZero() { ZEROPW = (ZEROPW+_angle*PW_PER_DEG); } void CYS8218Controller::Calibrate(float actualAngle) { PW_PER_DEG = (_angle*PW_PER_DEG)/actualAngle; } void CYS8218Controller::Set(float angle) { _angle = angle; SetServo(); } void CYS8218Controller::Move(float relAngle) { _angle += relAngle; SetServo(); }