ロボカップジュニアサッカー IRM2121を用いた専用パルスボールを検知するためのライブラリ
Dependents: BallCheck_IRM2121_InterrputInAdd CatPot_SensorRight
Pingのライブラリを参考にしました。 RoboCupJuniorSoccerにおけるボール検知をまとめて行うために作成したライブラリ。
距離に応じて微妙に値が変わるようになりました。 まともに使えます。
なお、このライブラリには、interruptinの機能を拡張するためのライブラリが含まれています。 そのため、必要なときだけピン変化割り込みに入ることが可能となっています。
値に応じて関数ポインタとかすれば距離によって値かわるようにできるかも if文で十分かもしれません
IRM2121.h@2:40101fcb6d44, 2015-01-05 (annotated)
- Committer:
- ryuna
- Date:
- Mon Jan 05 05:51:24 2015 +0000
- Revision:
- 2:40101fcb6d44
- Parent:
- 1:b25c8ac20d5b
- Child:
- 3:711dde7b4c12
??????????????????????; ; ???????????busy,valid???????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryuna | 0:fd5c1ea78a7c | 1 | |
ryuna | 0:fd5c1ea78a7c | 2 | |
ryuna | 0:fd5c1ea78a7c | 3 | #ifndef MBED_IRM_H |
ryuna | 0:fd5c1ea78a7c | 4 | #define MBED_IRM_H |
ryuna | 0:fd5c1ea78a7c | 5 | |
ryuna | 0:fd5c1ea78a7c | 6 | #include "mbed.h" |
ryuna | 1:b25c8ac20d5b | 7 | #include "interruptin_mod.h" |
ryuna | 0:fd5c1ea78a7c | 8 | /** IRM2121 class, based on an InterruptIn pin, and a timer |
ryuna | 0:fd5c1ea78a7c | 9 | * use RoboCup Junior Soccer to find PULSE BALL. |
ryuna | 0:fd5c1ea78a7c | 10 | |
ryuna | 0:fd5c1ea78a7c | 11 | |
ryuna | 0:fd5c1ea78a7c | 12 | * Example: |
ryuna | 0:fd5c1ea78a7c | 13 | * @code |
ryuna | 0:fd5c1ea78a7c | 14 | * // Set interrupt and read sensor. |
ryuna | 0:fd5c1ea78a7c | 15 | * #include "mbed.h" |
ryuna | 0:fd5c1ea78a7c | 16 | * #include "IRM2121.h" |
ryuna | 0:fd5c1ea78a7c | 17 | * IRM2121 IR(p21); |
ryuna | 0:fd5c1ea78a7c | 18 | * |
ryuna | 0:fd5c1ea78a7c | 19 | * int main() { |
ryuna | 2:40101fcb6d44 | 20 | * int length; |
ryuna | 0:fd5c1ea78a7c | 21 | |
ryuna | 0:fd5c1ea78a7c | 22 | * while(1) { |
ryuna | 0:fd5c1ea78a7c | 23 | * |
ryuna | 1:b25c8ac20d5b | 24 | * IR.Set(); |
ryuna | 2:40101fcb6d44 | 25 | * wait_ms(20); //check _Busy 1 &_Valid 0 ....config just wait time. |
ryuna | 2:40101fcb6d44 | 26 | * length = IR.Read(); |
ryuna | 0:fd5c1ea78a7c | 27 | * } |
ryuna | 0:fd5c1ea78a7c | 28 | * } |
ryuna | 0:fd5c1ea78a7c | 29 | * @endcode |
ryuna | 0:fd5c1ea78a7c | 30 | */ |
ryuna | 0:fd5c1ea78a7c | 31 | class IRM2121 { |
ryuna | 0:fd5c1ea78a7c | 32 | public: |
ryuna | 0:fd5c1ea78a7c | 33 | /** Create a IRM2121 object connected to the specified InterruptIn pin |
ryuna | 0:fd5c1ea78a7c | 34 | * |
ryuna | 0:fd5c1ea78a7c | 35 | * @param IRM_PIN InterruptIn pin to connect to |
ryuna | 0:fd5c1ea78a7c | 36 | */ |
ryuna | 0:fd5c1ea78a7c | 37 | IRM2121(PinName IRM_PIN); |
ryuna | 0:fd5c1ea78a7c | 38 | |
ryuna | 2:40101fcb6d44 | 39 | |
ryuna | 0:fd5c1ea78a7c | 40 | /** Set a IRM2121 Interrupt Pin |
ryuna | 0:fd5c1ea78a7c | 41 | * |
ryuna | 0:fd5c1ea78a7c | 42 | * @param none |
ryuna | 0:fd5c1ea78a7c | 43 | */ |
ryuna | 0:fd5c1ea78a7c | 44 | void Set(void); |
ryuna | 2:40101fcb6d44 | 45 | |
ryuna | 0:fd5c1ea78a7c | 46 | /** Read the result |
ryuna | 0:fd5c1ea78a7c | 47 | * |
ryuna | 0:fd5c1ea78a7c | 48 | * @param none |
ryuna | 0:fd5c1ea78a7c | 49 | */ |
ryuna | 0:fd5c1ea78a7c | 50 | int Read(void); |
ryuna | 0:fd5c1ea78a7c | 51 | |
ryuna | 2:40101fcb6d44 | 52 | /** |
ryuna | 2:40101fcb6d44 | 53 | * Check two flags( _Valid, _Busy ) |
ryuna | 2:40101fcb6d44 | 54 | * |
ryuna | 2:40101fcb6d44 | 55 | * @param none |
ryuna | 2:40101fcb6d44 | 56 | */ |
ryuna | 2:40101fcb6d44 | 57 | void ReturnVB(bool *valid, bool *busy); |
ryuna | 2:40101fcb6d44 | 58 | |
ryuna | 2:40101fcb6d44 | 59 | |
ryuna | 0:fd5c1ea78a7c | 60 | protected: |
ryuna | 0:fd5c1ea78a7c | 61 | |
ryuna | 1:b25c8ac20d5b | 62 | interruptin_mod _event; |
ryuna | 1:b25c8ac20d5b | 63 | Timer _timer; |
ryuna | 0:fd5c1ea78a7c | 64 | |
ryuna | 0:fd5c1ea78a7c | 65 | bool _Flag; |
ryuna | 0:fd5c1ea78a7c | 66 | bool _Valid; |
ryuna | 0:fd5c1ea78a7c | 67 | bool _Busy; |
ryuna | 2:40101fcb6d44 | 68 | unsigned int _Time; |
ryuna | 0:fd5c1ea78a7c | 69 | |
ryuna | 0:fd5c1ea78a7c | 70 | void _Start(void); |
ryuna | 0:fd5c1ea78a7c | 71 | void _Stop (void); |
ryuna | 0:fd5c1ea78a7c | 72 | |
ryuna | 0:fd5c1ea78a7c | 73 | }; |
ryuna | 0:fd5c1ea78a7c | 74 | |
ryuna | 0:fd5c1ea78a7c | 75 | #endif |