自分用ロータリーエンコーダのライブラリ. Z相のパルスは一切使用していない. タイマ割り込みを使ってRPSをとる場合,MvgAve的なものが含まれる関数によって可能だが,正直いらない気がする.

Revision:
2:d9c01c9e0957
Parent:
1:4aca4f190ab1
Child:
3:82af76bc5a6e
diff -r 4aca4f190ab1 -r d9c01c9e0957 QEI.cpp
--- a/QEI.cpp	Tue Nov 03 13:19:45 2020 +0000
+++ b/QEI.cpp	Tue Nov 03 15:34:38 2020 +0000
@@ -1,6 +1,8 @@
 #include "QEI.h"
 #define PI 3.141592653589793
 
+//const int mvgave_array_size = 30;//移動平均をとるためのパルスデータ格納数
+#define mvgave_array_size  30
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 //~~~~~~~~~~~~~~~~~~インスタンス生成~~~~~~~~~~~~~~~~~~~~
@@ -70,7 +72,7 @@
 // 変数リセット
 void QEI::resetVariable()
 {
-    for(int i =0; i<data_sizeof; i++) pulse_data[i] = 0;
+    for(int i =0; i<mvgave_array_size; i++) pulse_data[i] = 0;
     pre_state_ab = (ch_a.read() << 1) | ch_b.read();
     mvg_ave_rps = 0;
     pulse = 0;
@@ -167,10 +169,10 @@
 
     //移動平均算出
     pulse_data[editing_num] = pulse;
-    editing_num == data_sizeof-1 ? editing_num = 0 : editing_num++;//editing_numが配列以上になったら0に戻す
+    editing_num == mvgave_array_size-1 ? editing_num = 0 : editing_num++;//editing_numが配列以上になったら0に戻す
     pulse_average = 0;
-    for(int i =0; i < data_sizeof; i++) pulse_average += pulse_data[i];
-    pulse_average /= data_sizeof;
+    for(int i =0; i < mvgave_array_size; i++) pulse_average += pulse_data[i];
+    pulse_average /= mvgave_array_size;
     pulse = 0; // オーバーフロー対策.この処理をするため,他の機能が使えなくなる.
 
     //RPS算出