Library is coded to control servo This library is part of my project which is built on FRDM-KL25Z and motor shield l293D v1
ServoMotorControl.cpp
- Committer:
- vtqNhi
- Date:
- 2017-09-24
- Revision:
- 0:22a971e060ed
File content as of revision 0:22a971e060ed:
#include "mbed.h" #include "ServoMotorControl.h" static float clamp(float value, float min, float max) { if(value < min) { return min; } else if(value > max) { return max; } else { return value; } } Servo::Servo(PinName pwm) : _pwm(pwm) { _pwm = 0; } void Servo::turn2Angle(int degree) { float angle2value; switch (degree){ case 0: angle2value = 1; break; case 15: angle2value = 1.25; break; case 30: angle2value = 1.5; break; case 45: angle2value = 1.75; break; case 60: angle2value = 2; break; case 75: angle2value = 2.25; break; case 90: angle2value = 2.5; break; case 105: angle2value = 2.75; break; case 120: angle2value = 3; break; case 135: angle2value = 3.25; break; case 150: angle2value = 3.5; break; case 165: angle2value = 3.75; break; case 180: angle2value = 4; break; default: angle2value = 1; break;} turn2pulse(angle2value); } void Servo::turn2pulse(float value) { //0 1 //30 1.5 //60 2 //90 2.5 //120 3 //150 3.5 //180 4 if (value < 1) { value = 1; } else if (value > 4) { value = 4; } value = value / 1500; _pwm.pulsewidth(value); } float Servo::positionRead() { return _position; }