Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ExtendedServo.h@6:8364e8639b4e, 2014-10-26 (annotated)
- Committer:
- YosukeK
- Date:
- Sun Oct 26 05:12:20 2014 +0000
- Revision:
- 6:8364e8639b4e
- Parent:
- 5:8223f5a154e2
Fixed bug of moveServo(): reverse angle caluculation is wrong.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
YosukeK | 0:916047fa0d8b | 1 | #ifndef __EXTENDEDSERVO_H__ |
YosukeK | 0:916047fa0d8b | 2 | #define __EXTENDEDSERVO_H__ |
YosukeK | 0:916047fa0d8b | 3 | |
YosukeK | 0:916047fa0d8b | 4 | #include "PwmServo.h" |
YosukeK | 0:916047fa0d8b | 5 | |
YosukeK | 5:8223f5a154e2 | 6 | /** |
YosukeK | 5:8223f5a154e2 | 7 | * 拡張サーボクラス |
YosukeK | 5:8223f5a154e2 | 8 | * サーボに任意の原点、方向、角度の上下限を設定するクラス |
YosukeK | 5:8223f5a154e2 | 9 | * @author yosuke kirihata |
YosukeK | 5:8223f5a154e2 | 10 | */ |
YosukeK | 3:198ec91cec19 | 11 | class ExtendedServo : public PwmServo |
YosukeK | 0:916047fa0d8b | 12 | { |
YosukeK | 0:916047fa0d8b | 13 | public: |
YosukeK | 5:8223f5a154e2 | 14 | /** |
YosukeK | 5:8223f5a154e2 | 15 | * コンストラクタ |
YosukeK | 5:8223f5a154e2 | 16 | */ |
YosukeK | 0:916047fa0d8b | 17 | ExtendedServo(PinName pin); |
YosukeK | 5:8223f5a154e2 | 18 | |
YosukeK | 5:8223f5a154e2 | 19 | /** |
YosukeK | 5:8223f5a154e2 | 20 | * コンストラクタ |
YosukeK | 5:8223f5a154e2 | 21 | */ |
YosukeK | 0:916047fa0d8b | 22 | ExtendedServo(PinName pin, int upperLimit , int lowerLimit); |
YosukeK | 5:8223f5a154e2 | 23 | |
YosukeK | 5:8223f5a154e2 | 24 | /** |
YosukeK | 5:8223f5a154e2 | 25 | * コンストラクタ |
YosukeK | 5:8223f5a154e2 | 26 | */ |
YosukeK | 0:916047fa0d8b | 27 | ExtendedServo(PinName pin, int upperLimitAngle ,int lowerLimitAngle, |
YosukeK | 1:74a29b62a144 | 28 | int offsetAngle, bool isReverse); |
YosukeK | 5:8223f5a154e2 | 29 | /** |
YosukeK | 5:8223f5a154e2 | 30 | * デストラクタ |
YosukeK | 5:8223f5a154e2 | 31 | */ |
YosukeK | 0:916047fa0d8b | 32 | ~ExtendedServo(); |
YosukeK | 5:8223f5a154e2 | 33 | |
YosukeK | 0:916047fa0d8b | 34 | //setter,getter |
YosukeK | 0:916047fa0d8b | 35 | void setOffsetAngle(int angle); |
YosukeK | 0:916047fa0d8b | 36 | int getOffsetAngle(); |
YosukeK | 0:916047fa0d8b | 37 | void setDirection(bool isReverse); |
YosukeK | 6:8364e8639b4e | 38 | bool getDirection(); |
YosukeK | 0:916047fa0d8b | 39 | void setUpperLimit(int angle); |
YosukeK | 0:916047fa0d8b | 40 | int getUpperLimit(); |
YosukeK | 0:916047fa0d8b | 41 | void setLowerLimit(int angle); |
YosukeK | 0:916047fa0d8b | 42 | int getLowerLimit(); |
YosukeK | 5:8223f5a154e2 | 43 | |
YosukeK | 5:8223f5a154e2 | 44 | /** |
YosukeK | 5:8223f5a154e2 | 45 | * 角度変換 |
YosukeK | 5:8223f5a154e2 | 46 | * @param angle 角度 |
YosukeK | 5:8223f5a154e2 | 47 | * @return |
YosukeK | 5:8223f5a154e2 | 48 | */ |
YosukeK | 0:916047fa0d8b | 49 | int convertAngle(int angle); |
YosukeK | 5:8223f5a154e2 | 50 | |
YosukeK | 5:8223f5a154e2 | 51 | /** |
YosukeK | 5:8223f5a154e2 | 52 | * 角度反転 |
YosukeK | 5:8223f5a154e2 | 53 | * @param angle 角度 |
YosukeK | 5:8223f5a154e2 | 54 | * @param isReverse 方向フラグ |
YosukeK | 5:8223f5a154e2 | 55 | * @return |
YosukeK | 5:8223f5a154e2 | 56 | */ |
YosukeK | 0:916047fa0d8b | 57 | int reverseAngle(int angle, bool isReverse); |
YosukeK | 5:8223f5a154e2 | 58 | |
YosukeK | 5:8223f5a154e2 | 59 | /** |
YosukeK | 5:8223f5a154e2 | 60 | * 角度設定 |
YosukeK | 5:8223f5a154e2 | 61 | * @param angle 目標角度 |
YosukeK | 5:8223f5a154e2 | 62 | * @return |
YosukeK | 5:8223f5a154e2 | 63 | */ |
YosukeK | 0:916047fa0d8b | 64 | int roundAngle(int angle, int upperLimit, int lowerLimit); |
YosukeK | 5:8223f5a154e2 | 65 | |
YosukeK | 5:8223f5a154e2 | 66 | /** |
YosukeK | 5:8223f5a154e2 | 67 | * 角度設定 |
YosukeK | 5:8223f5a154e2 | 68 | * @param angle 目標角度 |
YosukeK | 5:8223f5a154e2 | 69 | */ |
YosukeK | 0:916047fa0d8b | 70 | void setAngle(int angle); |
YosukeK | 5:8223f5a154e2 | 71 | |
YosukeK | 5:8223f5a154e2 | 72 | /** |
YosukeK | 5:8223f5a154e2 | 73 | * 原点回帰 |
YosukeK | 5:8223f5a154e2 | 74 | */ |
YosukeK | 0:916047fa0d8b | 75 | void backToStartPoint(); |
YosukeK | 0:916047fa0d8b | 76 | |
YosukeK | 0:916047fa0d8b | 77 | private: |
YosukeK | 5:8223f5a154e2 | 78 | int mOffsetAngle; /** @brief 角度のオフセット値 */ |
YosukeK | 5:8223f5a154e2 | 79 | bool mIsReverse; /** @brief 方向フラグ */ |
YosukeK | 5:8223f5a154e2 | 80 | int mUpperLimit; /** @brief 角度上限値 */ |
YosukeK | 5:8223f5a154e2 | 81 | int mLowerLimit; /** @brief 角度下限値 */ |
YosukeK | 0:916047fa0d8b | 82 | }; |
YosukeK | 0:916047fa0d8b | 83 | |
YosukeK | 0:916047fa0d8b | 84 | #endif /* __EXTENDEDSERVO_H__ */ |