Dependents:   serial_connected_mcu_nucleo serial_connected_mcu_nucleo

servo.cpp

Committer:
inst
Date:
2016-06-25
Revision:
5:a4d580b86638
Parent:
4:31ed2ce96ca3

File content as of revision 5:a4d580b86638:

#include "servo.hpp"
#include "mbed.h"

const float servo::_min_position_msec = 0.75f;
const float servo::_max_position_msec = 2.15f;

servo::servo(PinName pin) : _pwm(pin) {
    _pwm.period(20.0f * 0.001f);
}

void servo::set_position(float pos) {
    if (pos >= 1.0f) {
        pos = 1.0f;
    } else if (pos <= -1.0f) {
        pos = -1.0f;
    }
    pos += 1.0f;
    pos *= 0.5f;
    
    float msec = (1.0f - pos) * _min_position_msec + pos * _max_position_msec;
    _pwm.pulsewidth(msec * 0.001f);
}