12_han_meiji / Mbed 2 deprecated 7_motor_roll_test

Dependencies:   mbed

Committer:
maenoshin
Date:
Wed Dec 11 08:16:26 2019 +0000
Revision:
1:1b3526a1ae3f
Parent:
0:ef944a0446ee
1;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
komachiangel72 0:ef944a0446ee 1 #include "mbed.h"
komachiangel72 0:ef944a0446ee 2
komachiangel72 0:ef944a0446ee 3
komachiangel72 0:ef944a0446ee 4 PwmOut AIN1(D6);
komachiangel72 0:ef944a0446ee 5 PwmOut AIN2(D5);
komachiangel72 0:ef944a0446ee 6 PwmOut BIN1(D9);
komachiangel72 0:ef944a0446ee 7 PwmOut BIN2(D10);
komachiangel72 0:ef944a0446ee 8
komachiangel72 0:ef944a0446ee 9
komachiangel72 0:ef944a0446ee 10 //ブレーキ
komachiangel72 0:ef944a0446ee 11 void motorStop(PwmOut IN1,PwmOut IN2) {
komachiangel72 0:ef944a0446ee 12 IN1 = 1;
komachiangel72 0:ef944a0446ee 13 IN2 = 1;
komachiangel72 0:ef944a0446ee 14 }
komachiangel72 0:ef944a0446ee 15
komachiangel72 0:ef944a0446ee 16 //逆転
komachiangel72 0:ef944a0446ee 17 void motorReverse(PwmOut IN1,PwmOut IN2,float duty) {
komachiangel72 0:ef944a0446ee 18 IN1 = 0;
komachiangel72 0:ef944a0446ee 19 IN2 = duty;
komachiangel72 0:ef944a0446ee 20 }
komachiangel72 0:ef944a0446ee 21
komachiangel72 0:ef944a0446ee 22 InterruptIn enc_R(D12);//フォトインタラプタ右
komachiangel72 0:ef944a0446ee 23 InterruptIn enc_L(D11);//フォトインタラプタ左
komachiangel72 0:ef944a0446ee 24
komachiangel72 0:ef944a0446ee 25
komachiangel72 0:ef944a0446ee 26 float counter_R =0;
komachiangel72 0:ef944a0446ee 27 float pre_counter_R = 0; //左右の回転数変化量を読み取るための前値
komachiangel72 0:ef944a0446ee 28 void event_handler_R(void){
komachiangel72 0:ef944a0446ee 29 counter_R++;
komachiangel72 0:ef944a0446ee 30 }
komachiangel72 0:ef944a0446ee 31
komachiangel72 0:ef944a0446ee 32 float counter_L =0;
komachiangel72 0:ef944a0446ee 33 float pre_counter_L = 0;
komachiangel72 0:ef944a0446ee 34 void event_handler_L(void){//左モーター
komachiangel72 0:ef944a0446ee 35 counter_L++;
komachiangel72 0:ef944a0446ee 36 }
komachiangel72 0:ef944a0446ee 37 //AnalogIn photo(A0);
komachiangel72 0:ef944a0446ee 38 //AnalogIn schmitt(A5);
komachiangel72 0:ef944a0446ee 39 int main() {
komachiangel72 0:ef944a0446ee 40
maenoshin 1:1b3526a1ae3f 41
komachiangel72 0:ef944a0446ee 42 motorStop(AIN1,AIN2);
komachiangel72 0:ef944a0446ee 43 motorStop(BIN1,BIN2);
komachiangel72 0:ef944a0446ee 44 float pre_counter_R = 0;
komachiangel72 0:ef944a0446ee 45 float pre_counter_L = 0;
maenoshin 1:1b3526a1ae3f 46
komachiangel72 0:ef944a0446ee 47
komachiangel72 0:ef944a0446ee 48 while(1) {//組み込み型のプログラムは無限ループになるようにする。(終わってはいけない)
maenoshin 1:1b3526a1ae3f 49 float duty = 0.50;
maenoshin 1:1b3526a1ae3f 50
maenoshin 1:1b3526a1ae3f 51 motorReverse(AIN1,AIN2,duty);//逆転のほうが制御しやすいので前進時は逆転を使用
maenoshin 1:1b3526a1ae3f 52 motorReverse(BIN1,BIN2,duty);
maenoshin 1:1b3526a1ae3f 53 printf("ready\n");
maenoshin 1:1b3526a1ae3f 54 wait(3);
maenoshin 1:1b3526a1ae3f 55 printf("go\n");
maenoshin 1:1b3526a1ae3f 56 for(duty;duty>0.0;duty-=0.01){
maenoshin 1:1b3526a1ae3f 57 enc_R.rise(&event_handler_R);
maenoshin 1:1b3526a1ae3f 58 enc_R.fall(&event_handler_R);
maenoshin 1:1b3526a1ae3f 59 enc_L.rise(&event_handler_L);
maenoshin 1:1b3526a1ae3f 60 enc_L.fall(&event_handler_L);
komachiangel72 0:ef944a0446ee 61 motorReverse(AIN1,AIN2,duty);//逆転のほうが制御しやすいので前進時は逆転を使用
komachiangel72 0:ef944a0446ee 62 motorReverse(BIN1,BIN2,duty);
komachiangel72 0:ef944a0446ee 63 wait(2);//回転が安定するまで待つ
komachiangel72 0:ef944a0446ee 64 printf("duty value:%f\n",duty);
komachiangel72 0:ef944a0446ee 65 printf("rotations per second(R_tire):%f\n",(counter_R-pre_counter_R)/24.0/38.2);//1秒間あたりのタイヤの回転数
komachiangel72 0:ef944a0446ee 66 printf("rotations per second(L_tire):%f\n",(counter_L-pre_counter_L)/24.0/38.2);
maenoshin 1:1b3526a1ae3f 67 pre_counter_R = counter_R;
maenoshin 1:1b3526a1ae3f 68 pre_counter_L = counter_L;
komachiangel72 0:ef944a0446ee 69 }
komachiangel72 0:ef944a0446ee 70
komachiangel72 0:ef944a0446ee 71 }
komachiangel72 0:ef944a0446ee 72 }