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