サーボモーターを回すライブラリです。
Dependents: Hybrid_ServoMotor Hybrid_main_FirstEdtion
Servo.h@1:ed0ec5b8516c, 2017-01-24 (annotated)
- Committer:
- Gaku0606
- Date:
- Tue Jan 24 22:34:57 2017 +0000
- Revision:
- 1:ed0ec5b8516c
- Parent:
- 0:7ba85d855519
?????????????
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 | 1:ed0ec5b8516c | 13 | @param _pin pin's name |
Gaku0606 | 1:ed0ec5b8516c | 14 | @param _maxPulse Max pulse width in seconds |
Gaku0606 | 1:ed0ec5b8516c | 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 | 1:ed0ec5b8516c | 20 | @bref rotate servo motor's horn set angle |
Gaku0606 | 1:ed0ec5b8516c | 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 | 1:ed0ec5b8516c | 26 | @bref read current servo position |
Gaku0606 | 1:ed0ec5b8516c | 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 | 1:ed0ec5b8516c | 32 | @bref Set pulse width in max and min |
Gaku0606 | 1:ed0ec5b8516c | 33 | @param maxPulse [double] Max pulse width in seconds |
Gaku0606 | 1:ed0ec5b8516c | 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 | 1:ed0ec5b8516c | 39 | @bref Set pulse width in zero [degree] |
Gaku0606 | 1:ed0ec5b8516c | 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 | 1:ed0ec5b8516c | 45 | @bref Set never over angle |
Gaku0606 | 1:ed0ec5b8516c | 46 | @param maxAngle [double] max servo position |
Gaku0606 | 1:ed0ec5b8516c | 47 | @param minAngle [double] min servo position |
Gaku0606 | 1:ed0ec5b8516c | 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 | 1:ed0ec5b8516c | 53 | @bref use '=' operater, you can write() |
Gaku0606 | 1:ed0ec5b8516c | 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 | 1:ed0ec5b8516c | 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 |