ロボカップジュニアサッカー IRM2121を用いた専用パルスボールを検知するためのライブラリ

Dependents:   BallCheck_IRM2121_InterrputInAdd CatPot_SensorRight

Pingのライブラリを参考にしました。 RoboCupJuniorSoccerにおけるボール検知をまとめて行うために作成したライブラリ。

距離に応じて微妙に値が変わるようになりました。 まともに使えます。

なお、このライブラリには、interruptinの機能を拡張するためのライブラリが含まれています。 そのため、必要なときだけピン変化割り込みに入ることが可能となっています。

値に応じて関数ポインタとかすれば距離によって値かわるようにできるかも if文で十分かもしれません

Revision:
2:40101fcb6d44
Parent:
1:b25c8ac20d5b
Child:
3:711dde7b4c12
--- a/IRM2121.h	Fri Dec 05 14:51:05 2014 +0000
+++ b/IRM2121.h	Mon Jan 05 05:51:24 2015 +0000
@@ -17,13 +17,13 @@
  * IRM2121 IR(p21);
  * 
  * int main() {
- *     int range;
+ *     int length;
  
  *     while(1) {
  *  
  *        IR.Set();    
- *        wait_ms(10);
- *        range = IR.Read();
+ *        wait_ms(20); //check _Busy 1 &_Valid 0 ....config just wait time.
+ *        length = IR.Read();
  *     }
  * }
  * @endcode
@@ -36,18 +36,27 @@
     */
     IRM2121(PinName IRM_PIN);
     
+    
      /** Set a IRM2121 Interrupt Pin 
       *
       * @param none
       */
     void Set(void);
+    
     /** Read the result 
       *
       * @param none
       */
-
     int Read(void);
     
+    /**
+      * Check two flags( _Valid, _Busy )
+      *
+      * @param none
+      */
+    void ReturnVB(bool *valid, bool *busy);
+    
+    
   protected:
     
     interruptin_mod    _event;
@@ -56,7 +65,7 @@
     bool _Flag;
     bool _Valid;
     bool _Busy;
-    int  _Time;
+    unsigned int _Time;
       
     void _Start(void);
     void _Stop (void);