LCD表示系の整理。現状の問題としては、配列への左右移動距離の記憶ができていない様子。2走目で常にHIGH_SPEEDとなってしまうので、エンコーダパルス関係の蓄積がうまくできているか?左右同じ情報が演算されていないか?といった部分を疑ってデバッグする必要がある。

Dependencies:   mbed AQM0802 CRotaryEncoder TB6612FNG

Committer:
yusaku0125
Date:
Mon Aug 26 04:55:44 2019 +0000
Revision:
1:19e2241a7aa7
Parent:
0:df99e50ed3fd
Child:
2:a28ca7c25ed1
test;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yusaku0125 0:df99e50ed3fd 1 //エンコーダの動作確認。
yusaku0125 0:df99e50ed3fd 2 //左右モータの回転数を検出するプログラム
yusaku0125 0:df99e50ed3fd 3 #include "mbed.h"
yusaku0125 0:df99e50ed3fd 4 #include "CRotaryEncoder.h"
yusaku0125 0:df99e50ed3fd 5
yusaku0125 1:19e2241a7aa7 6 #define PULSE_TO_UM 10 //エンコーダ1パルス当たりのタイヤ移動距離[um]
yusaku0125 1:19e2241a7aa7 7 //実測で値を調整する。
yusaku0125 1:19e2241a7aa7 8
yusaku0125 1:19e2241a7aa7 9
yusaku0125 0:df99e50ed3fd 10 Serial PC(USBTX,USBRX);
yusaku0125 0:df99e50ed3fd 11 CRotaryEncoder encoder_a(D1,D0); //モータAのエンコーダ
yusaku0125 0:df99e50ed3fd 12 CRotaryEncoder encoder_b(D11,D12); //モータBのエンコーダ
yusaku0125 0:df99e50ed3fd 13
yusaku0125 0:df99e50ed3fd 14
yusaku0125 0:df99e50ed3fd 15 int main(){
yusaku0125 0:df99e50ed3fd 16 int enc_count_a=0,enc_count_b=0; //エンコーダパルス数を格納
yusaku0125 1:19e2241a7aa7 17 int distance_a=0,distance_b=0; //タイヤ移動距離を格納[mm]
yusaku0125 0:df99e50ed3fd 18 while(1)
yusaku0125 0:df99e50ed3fd 19 {
yusaku0125 0:df99e50ed3fd 20 enc_count_a=encoder_a.Get(); //エンコーダパルス数を取得
yusaku0125 0:df99e50ed3fd 21 enc_count_b=encoder_b.Get();
yusaku0125 1:19e2241a7aa7 22 distance_a=(enc_count_a*PULSE_TO_UM)/1000; //移動距離をmm単位で格納
yusaku0125 1:19e2241a7aa7 23 distance_b=(enc_count_b*PULSE_TO_UM)/1000;
yusaku0125 1:19e2241a7aa7 24 PC.printf("dis_a:%d dis_b:%d\r\n",distance_a,distance_b);//表示
yusaku0125 0:df99e50ed3fd 25 wait(0.5);
yusaku0125 0:df99e50ed3fd 26 }
yusaku0125 0:df99e50ed3fd 27 }