サーボモーターを回すライブラリです。
Dependents: Hybrid_ServoMotor Hybrid_main_FirstEdtion
Servo.h@0:7ba85d855519, 2017-01-18 (annotated)
- Committer:
- Gaku0606
- Date:
- Wed Jan 18 22:09:15 2017 +0000
- Revision:
- 0:7ba85d855519
- Child:
- 1:ed0ec5b8516c
ServoLib ver 1.0.5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Gaku0606 | 0:7ba85d855519 | 1 | #ifndef SERVO_H_ |
Gaku0606 | 0:7ba85d855519 | 2 | #define SERVO_H_ |
Gaku0606 | 0:7ba85d855519 | 3 | #include "mbed.h" |
Gaku0606 | 0:7ba85d855519 | 4 | |
Gaku0606 | 0:7ba85d855519 | 5 | /** |
Gaku0606 | 0:7ba85d855519 | 6 | * @author Matsumoto Gaku |
Gaku0606 | 0:7ba85d855519 | 7 | * @note サーボモーターを回すライブラリです。0~180度のやつを対象としています。 |
Gaku0606 | 0:7ba85d855519 | 8 | */ |
Gaku0606 | 0:7ba85d855519 | 9 | class Servo{ |
Gaku0606 | 0:7ba85d855519 | 10 | |
Gaku0606 | 0:7ba85d855519 | 11 | public: |
Gaku0606 | 0:7ba85d855519 | 12 | /** |
Gaku0606 | 0:7ba85d855519 | 13 | * @param _pin pin's name |
Gaku0606 | 0:7ba85d855519 | 14 | * @param _maxPulse Max pulse width in seconds |
Gaku0606 | 0:7ba85d855519 | 15 | * @param _minPulse min pulse width in seconds |
Gaku0606 | 0:7ba85d855519 | 16 | */ |
Gaku0606 | 0:7ba85d855519 | 17 | Servo(PinName pin, double maxPulse = 0.00245f, double minPulse = 0.00065f); |
Gaku0606 | 0:7ba85d855519 | 18 | |
Gaku0606 | 0:7ba85d855519 | 19 | /** |
Gaku0606 | 0:7ba85d855519 | 20 | * @bref rotate servo motor's horn set angle |
Gaku0606 | 0:7ba85d855519 | 21 | * @param _angle[double] Servo position in degree |
Gaku0606 | 0:7ba85d855519 | 22 | */ |
Gaku0606 | 0:7ba85d855519 | 23 | void write(double angle); |
Gaku0606 | 0:7ba85d855519 | 24 | |
Gaku0606 | 0:7ba85d855519 | 25 | /** |
Gaku0606 | 0:7ba85d855519 | 26 | * @bref read current servo position |
Gaku0606 | 0:7ba85d855519 | 27 | * @param [double] Return angle in degree |
Gaku0606 | 0:7ba85d855519 | 28 | */ |
Gaku0606 | 0:7ba85d855519 | 29 | double read(); |
Gaku0606 | 0:7ba85d855519 | 30 | |
Gaku0606 | 0:7ba85d855519 | 31 | /** |
Gaku0606 | 0:7ba85d855519 | 32 | * @bref Set pulse width in max and min |
Gaku0606 | 0:7ba85d855519 | 33 | * @param maxPulse [double] Max pulse width in seconds |
Gaku0606 | 0:7ba85d855519 | 34 | * @param minPulse [double] min pulse width in seconds |
Gaku0606 | 0:7ba85d855519 | 35 | */ |
Gaku0606 | 0:7ba85d855519 | 36 | void setRange(double maxPulse, double minPulse); |
Gaku0606 | 0:7ba85d855519 | 37 | |
Gaku0606 | 0:7ba85d855519 | 38 | /** |
Gaku0606 | 0:7ba85d855519 | 39 | * @bref Set pulse width in zero [degree] |
Gaku0606 | 0:7ba85d855519 | 40 | * @param zeroPulse [double] pulse width in zero position |
Gaku0606 | 0:7ba85d855519 | 41 | */ |
Gaku0606 | 0:7ba85d855519 | 42 | void setZeroPulse(double zeroPulse = 0.00160f); |
Gaku0606 | 0:7ba85d855519 | 43 | |
Gaku0606 | 0:7ba85d855519 | 44 | /** |
Gaku0606 | 0:7ba85d855519 | 45 | * @bref Set never over angle |
Gaku0606 | 0:7ba85d855519 | 46 | * @param maxAngle [double] max servo position |
Gaku0606 | 0:7ba85d855519 | 47 | * @param minAngle [double] min servo position |
Gaku0606 | 0:7ba85d855519 | 48 | * @note もし90,0と設定すると,絶対に0°から90°の範囲から出なくなります |
Gaku0606 | 0:7ba85d855519 | 49 | */ |
Gaku0606 | 0:7ba85d855519 | 50 | void setAngleRange(double maxAngle = 90.0f, double minAngle = -90.0f); |
Gaku0606 | 0:7ba85d855519 | 51 | |
Gaku0606 | 0:7ba85d855519 | 52 | /** |
Gaku0606 | 0:7ba85d855519 | 53 | * @bref use '=' operater, you can write() |
Gaku0606 | 0:7ba85d855519 | 54 | * @param dValue [double] angle in degree |
Gaku0606 | 0:7ba85d855519 | 55 | */ |
Gaku0606 | 0:7ba85d855519 | 56 | Servo& operator= (double dValue); |
Gaku0606 | 0:7ba85d855519 | 57 | |
Gaku0606 | 0:7ba85d855519 | 58 | /** |
Gaku0606 | 0:7ba85d855519 | 59 | * @bref Return currnet angle, so the same of read() |
Gaku0606 | 0:7ba85d855519 | 60 | */ |
Gaku0606 | 0:7ba85d855519 | 61 | double operator()(void); |
Gaku0606 | 0:7ba85d855519 | 62 | |
Gaku0606 | 0:7ba85d855519 | 63 | private: |
Gaku0606 | 0:7ba85d855519 | 64 | |
Gaku0606 | 0:7ba85d855519 | 65 | PwmOut _pwm; |
Gaku0606 | 0:7ba85d855519 | 66 | double currentAngle; |
Gaku0606 | 0:7ba85d855519 | 67 | double _maxPulse; |
Gaku0606 | 0:7ba85d855519 | 68 | double _minPulse; |
Gaku0606 | 0:7ba85d855519 | 69 | PinName _pinName; |
Gaku0606 | 0:7ba85d855519 | 70 | double _maxAngle; |
Gaku0606 | 0:7ba85d855519 | 71 | double _minAngle; |
Gaku0606 | 0:7ba85d855519 | 72 | double _zeroPulse; |
Gaku0606 | 0:7ba85d855519 | 73 | }; |
Gaku0606 | 0:7ba85d855519 | 74 | |
Gaku0606 | 0:7ba85d855519 | 75 | #endif |