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

Dependents:   BallCheck_IRM2121_InterrputInAdd CatPot_SensorRight

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

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

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

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

Revision:
2:40101fcb6d44
Parent:
1:b25c8ac20d5b
Child:
3:711dde7b4c12
--- a/IRM2121.cpp	Fri Dec 05 14:51:05 2014 +0000
+++ b/IRM2121.cpp	Mon Jan 05 05:51:24 2015 +0000
@@ -12,22 +12,24 @@
 IRM2121::IRM2121(PinName IRM_PIN)
         : _event(IRM_PIN)
         , _timer()
-        {           
+        {          
         } 
         
 void IRM2121::_Start(void)
 {
-    _timer.start();
-    _Time  = _timer.read_us();
-    _Valid = false;  
-    _Busy  = true; 
-    _event.fall_disable(this,&IRM2121::_Start);
-    _event.rise(this,&IRM2121::_Stop);  
+    if(_Valid && _Busy ){
+        _timer.start();
+        _Time  = _timer.read_us();
+        _Valid = false;  
+        _Busy  = true; 
+        _event.fall_disable(this,&IRM2121::_Start);
+        _event.rise(this,&IRM2121::_Stop);  
+    }
 }
 
 void IRM2121::_Stop(void)
 {
-    if(~_Valid && _Busy){ 
+    if(!_Valid && _Busy){ 
         _Valid = true;  // When it stops, update the time
         _Busy  = false;
         _Time  = _timer.read_us()-_Time;
@@ -35,19 +37,33 @@
     }
 }
 
-void IRM2121::Set()
+void IRM2121::Set(void)
 {
-    _event.fall(this,&IRM2121::_Start );    
+    _Valid = true;
+    _Busy = true;
+    _event.fall(this,&IRM2121::_Start );
+    
+       
+     
 }
 
-int IRM2121::Read()
-// 1 means not valid.
+int IRM2121::Read(void)
+// 0 means not valid.
 {
-    if(_Valid && ~_Busy){ 
-        return (_Time);
-    }else{ 
+    if(_Valid && !_Busy){ 
+        return _Time;
+
+    }else { 
         _event.fall_disable(this,&IRM2121::_Start);
         _event.rise_disable(this,&IRM2121::_Stop);
-        return 1;
+        return 0;
     }
 }
+
+
+void IRM2121::ReturnVB(bool *valid, bool *busy){
+    //use after read_function. this is flag checker. 
+    *valid = _Valid;
+    *busy  = _Busy;
+       
+}
\ No newline at end of file