サーボモーターを回すライブラリです。

Dependents:   Hybrid_ServoMotor Hybrid_main_FirstEdtion

Servo.cpp

Committer:
Gaku0606
Date:
2017-01-24
Revision:
1:ed0ec5b8516c
Parent:
0:7ba85d855519

File content as of revision 1:ed0ec5b8516c:

#include "Servo.h"



Servo::Servo(PinName pin, double maxPulse, double minPulse) : _pwm(pin){
    _pinName = pin;
    _pwm.period(0.020);//20ms 周期
    _maxPulse = maxPulse;
    _minPulse = minPulse;
    setAngleRange();//Max 90° min -90°に設定
    setZeroPulse((maxPulse + minPulse)/2.0);
    write(0.0f);//初期位置に
}

void Servo::write(double angle){
    //error check
    if(angle > _maxAngle)    angle = _maxAngle;
    else if(angle < _minAngle)   angle = _minAngle;
    //make pulse value
    double pulse = _zeroPulse + angle * ((_maxPulse - _zeroPulse) / 90.0);
    _pwm.pulsewidth(pulse);
    
    currentAngle = angle;//register set angle   
}

double Servo::read(){
    return currentAngle;   
}
void Servo::setRange(double maxPulse, double minPulse){
    _maxPulse = maxPulse;
    _minPulse = minPulse;
}

void Servo::setZeroPulse(double zeroPulse){
    _zeroPulse = zeroPulse; 
}

void Servo::setAngleRange(double maxAngle, double minAngle){
    _maxAngle = maxAngle;
    _minAngle = minAngle;
}

Servo& Servo::operator=(double dValue){
    write(dValue);
    return *this;   
}

double Servo::operator()(void){
    return read();   
}