f3rc 3班のエンコーダのプログラムです。

Dependencies:   EC2 Math mbed

Committer:
nobu0103
Date:
Mon Sep 03 05:00:04 2018 +0000
Revision:
0:da183064372e
Child:
1:0ff59878537a
f3rc 3??????????????????????; ???????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nobu0103 0:da183064372e 1 #include "mbed.h"
nobu0103 0:da183064372e 2 #include "Math.h"
nobu0103 0:da183064372e 3 #include "Ec.h"
nobu0103 0:da183064372e 4 #include "SpeedController.h"
nobu0103 0:da183064372e 5 DigitalIn cylinder(p9,PullUp);
nobu0103 0:da183064372e 6 DigitalIn cylindert(p10,PullUp);
nobu0103 0:da183064372e 7 DigitalIn encoder1a(p11);
nobu0103 0:da183064372e 8 DigitalIn encoder1b(p12);
nobu0103 0:da183064372e 9 DigitalIn encoder2a(p13);
nobu0103 0:da183064372e 10 DigitalIn encoder2b(p14);
nobu0103 0:da183064372e 11 AnalogIn LBR1(p17,PullUp);
nobu0103 0:da183064372e 12 AnalogIn LBR2(p18,PullUp);
nobu0103 0:da183064372e 13 AnalogIn LBR3(p19,PullUp);
nobu0103 0:da183064372e 14 AnalogIn LBR4(p20,PullUp);
nobu0103 0:da183064372e 15 PwmOut servo12(p21);
nobu0103 0:da183064372e 16 PwmOut servo3(p22);
nobu0103 0:da183064372e 17 PwmOut motor1(p25);
nobu0103 0:da183064372e 18 PwmOut motor2(p26);
nobu0103 0:da183064372e 19 DigitalIn motor1cw(p27,PullUp);
nobu0103 0:da183064372e 20 DigitalIn motor2cw(p28,PullUp);
nobu0103 0:da183064372e 21
nobu0103 0:da183064372e 22 EC wheel_1 (p11,p12,/*z相*/,/*分解能*/,0.05)
nobu0103 0:da183064372e 23 EC wheel_2 (p13,p14,/*z相*/,/*分解能*/,0.05)
nobu0103 0:da183064372e 24 //SpeedControl (p11,p12,/*z相*/,/*分解能*/,0.05,,) pwmでないのでscは使えないかも
nobu0103 0:da183064372e 25 //SpeedControl (p13,p14,/*z相*/,/*分解能*/,0.05,,) pwmでないのでscは使えないかも
nobu0103 0:da183064372e 26
nobu0103 0:da183064372e 27 /*直進*/
nobu0103 0:da183064372e 28 void straight(double t,int l) //t=時間 l=移動距離
nobu0103 0:da183064372e 29 {
nobu0103 0:da183064372e 30 mortor1.period_us(50);
nobu0103 0:da183064372e 31 mortor2.period_us(50);
nobu0103 0:da183064372e 32 double EC1_omega = wheel_1.getOmega();
nobu0103 0:da183064372e 33 double EC2_omega = wheel_2.getOmega();
nobu0103 0:da183064372e 34 double L_1 = EC1_omega*"ecの半径"*t;
nobu0103 0:da183064372e 35 double L_2 = EC2_omega*"ecの半径"*t;
nobu0103 0:da183064372e 36 while(L_1 <= l && L_2 <= l) {
nobu0103 0:da183064372e 37 motor1 = ;
nobu0103 0:da183064372e 38 motor2 = ;
nobu0103 0:da183064372e 39 motor1cw = ;
nobu0103 0:da183064372e 40 motor2cw = ;
nobu0103 0:da183064372e 41 }
nobu0103 0:da183064372e 42 }
nobu0103 0:da183064372e 43
nobu0103 0:da183064372e 44 /*右回転*/
nobu0103 0:da183064372e 45 void right(double t,int l) //t=時間 l=機体の中心を回転中心としたときのエンコーダの移動距離
nobu0103 0:da183064372e 46 {
nobu0103 0:da183064372e 47 mortor1.period_us(50);
nobu0103 0:da183064372e 48 mortor2.period_us(50);
nobu0103 0:da183064372e 49 double EC1_omega = wheel_1.getOmega();
nobu0103 0:da183064372e 50 double EC2_omega = wheel_2.getOmega();
nobu0103 0:da183064372e 51 double L_1 = EC1_omega*"ecの半径"*t;
nobu0103 0:da183064372e 52 double L_2 = EC2_omega*"ecの半径"*t;
nobu0103 0:da183064372e 53 while(L_1 <= l && L_2 <= -1*l) {
nobu0103 0:da183064372e 54 motor1 = ;
nobu0103 0:da183064372e 55 motor2 = ;
nobu0103 0:da183064372e 56 motor1cw = ;
nobu0103 0:da183064372e 57 motor2cw = ;
nobu0103 0:da183064372e 58 }
nobu0103 0:da183064372e 59 }
nobu0103 0:da183064372e 60
nobu0103 0:da183064372e 61 /*左回転*/
nobu0103 0:da183064372e 62 void left(double t,int l) //t=時間 l=l=機体の中心を回転中心としたときのエンコーダの移動距離
nobu0103 0:da183064372e 63 {
nobu0103 0:da183064372e 64 mortor1.period_us(50);
nobu0103 0:da183064372e 65 mortor2.period_us(50);
nobu0103 0:da183064372e 66 double EC1_omega = wheel_1.getOmega();
nobu0103 0:da183064372e 67 double EC2_omega = wheel_2.getOmega();
nobu0103 0:da183064372e 68 double L_1 = EC1_omega*"ecの半径"*t;
nobu0103 0:da183064372e 69 double L_2 = EC2_omega*"ecの半径"*t;
nobu0103 0:da183064372e 70 while(L_1 <= -1*l && L_2 <= l) {
nobu0103 0:da183064372e 71 motor1 = ;
nobu0103 0:da183064372e 72 motor2 = ;
nobu0103 0:da183064372e 73 motor1cw = ;
nobu0103 0:da183064372e 74 motor2cw = ;
nobu0103 0:da183064372e 75 }
nobu0103 0:da183064372e 76 }