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

Dependents:   Hybrid_ServoMotor Hybrid_main_FirstEdtion

Servo.h

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

File content as of revision 1:ed0ec5b8516c:

#ifndef SERVO_H_
#define SERVO_H_
#include "mbed.h"

/**
* @author Matsumoto Gaku
* @note サーボモーターを回すライブラリです。0~180度のやつを対象としています。
*/
class   Servo{
    
    public:
        /**
           @param  _pin    pin's name
           @param  _maxPulse   Max pulse width in seconds
           @param  _minPulse   min pulse width in seconds
        */
        Servo(PinName pin, double maxPulse = 0.00245f, double minPulse = 0.00065f);
        
        /**
           @bref  rotate servo motor's horn set angle 
           @param  _angle[double]  Servo position in degree
        */
        void write(double angle);
        
        /**
           @bref  read current servo position
           @param  [double] Return angle in degree
        */
        double read();
        
        /**
           @bref  Set pulse width in max and min
           @param  maxPulse [double]   Max pulse width in seconds
           @param  minPulse [double]   min pulse width in seconds
        */
        void setRange(double maxPulse, double minPulse);
        
        /**
           @bref  Set pulse width in zero [degree]
           @param  zeroPulse [double]  pulse width in zero position
        */
        void setZeroPulse(double zeroPulse = 0.00160f);
        
        /**
           @bref  Set never over angle
           @param  maxAngle [double]   max servo position
           @param  minAngle [double]   min servo position
           @note   もし90,0と設定すると,絶対に0°から90°の範囲から出なくなります
        */
        void setAngleRange(double maxAngle = 90.0f, double minAngle = -90.0f);
        
        /**
           @bref  use '=' operater, you can write()
           @param  dValue [double]  angle in degree
        */
        Servo& operator= (double dValue);
       
        /**
           @bref  Return currnet angle, so the same of read()
        */
        double operator()(void);
       
    private:
        
        PwmOut _pwm;
        double currentAngle;
        double _maxPulse;
        double _minPulse;
        PinName _pinName;
        double _maxAngle;
        double _minAngle;
        double _zeroPulse;
};

#endif