自分用QEI

Dependents:   FourOmniMecha

エンコーダの回転方向はデフォの状態の反対を正としたいならrotReverce()を呼び出すと反対になる.

22020/3/6 移動平均を使ってパルスを平滑化し,RPSを算出している. useAvePRS()を書くことで,エンコーダのパルスを時間平均しそのままRPSを算出する関数MoveAve_pulse_to_RPS()がタイマー割り込みで呼び出される.移動平均を使うことでエンコーダのパルスのばらつきを無くし,平均をとらないとガタガタになるRPSがそこそこ綺麗になる.3000usごとの割り込み.この時間が長いほど精度は高い.あとclass内で配列の格納数をconst int で定義しているため黄色いエラーが出るけど無視. この方法でとったRPSの呼び出しはgetRPS()を使う.

Revision:
4:13f78735242e
Parent:
3:4f69bb55ab4a
Child:
5:01e1a1dfbd5e
--- a/QEI.h	Fri Mar 20 14:33:11 2020 +0000
+++ b/QEI.h	Mon Apr 13 05:57:14 2020 +0000
@@ -9,31 +9,49 @@
 public:
     //引数は(A相のピン,B相のピン,1回転のパルスPPR,timerインスタンス,tickerインスタンス)
     QEI(PinName A,PinName B,int PPR,Timer *timer,Ticker *ticker);
-    
+
     //初期設定
     void init();
-    
+
     //MoveAve_pulse_to_RPSを使う場合に記述.3333usごとの割り込み
     void useAvePRS();
-    
+
     //パルスカウント
-    void CountPulse();
-    
+    void PulseCount();
+
     //移動平均とるだけ
     void MoveAve_pulse();
-    
+
     //移動平均を使ったRPS算出
     void MoveAve_pulse_to_RPS();
-    
+
     //MoveAve_pulse_to_RPSで出したRPS値を返す
     double getRPS();
-    
+
     //オドメトリ用関数
     double Odometry(double WheelDia);
-    
+
     //返し値を反転させることができる
     void rotReverce();
 
+    //パルスの確認
+    int returnPulse();
+
+    //********************処理をもっと頭良さげにしたものが2********************
+    //*********************違いはコメントアウトで説明*************************
+    void useAvePRS2();//をタイマー割り込みで使用
+
+    void PulseCount2();//エンコーダの表を参照するようになった
+
+    void rotReverce2();//表自体を反転させることで正転方向を変更する
+
+    void MoveAve_pulse_to_RPS2();//表を参照した移動平均とrps.多分こっちのが処理少し軽い
+
+    double getRPS2();//MoveAve_pulse_to_RPS2で出したRPS値を返す
+
+    double Odometry2(double WheelDia);//オドメトリ用関数2
+
+
 private:
     InterruptIn chA;
     InterruptIn chB;