これが本体 スイッチ1→前後移動+サーボ スイッチ2→八の字移動 なお動作未検

Dependencies:   F3RC mbed

main.cpp

Committer:
aoikoizumi
Date:
2018-11-03
Revision:
0:a92631a4021d

File content as of revision 0:a92631a4021d:

#include "mbed.h"
#include "F3rc.h"

int main()
{
    gyro.initialize();    //main関数の最初に一度だけ実行
    gyro.acc_offset();    //やってもやらなくてもいい

    printf("start\r\n");
    motor_tick.attach(&calOmega,0.05);
    motorR.setDOconstant(30);
    motorL.setDOconstant(30);//c
    motorR.setPDparam(0.1,0);
    motorL.setPDparam(0.1,0);



    EC1.setDiameter_mm(48);//sokuteirinnhannkei
    double  getDistance_mm();
    void reset  ();
    EC1.reset();

    motor_f.period_ms(30);
    motor_b.period_ms(30);//arm

    while(1) {
        angle=gyro.getAngle()*(-1);    //角度の値を受け取る
        EC1.getDistance_mm();
        if(target_R==0) motorR.stop();
        else motorR.Sc(target_R);
        if(target_L==0) motorL.stop();
        else motorL.Sc(target_L);

        new_dist=EC1.getDistance_mm();
        d_dist=new_dist-old_dist;
        old_dist=new_dist;
        double d_x=d_dist*sin(angle*3.1415926535/180);
        double d_y=d_dist*cos(angle*3.1415926535/180);
        x=x+d_x;
        y=y+d_y;

        if(kai>=3) {
            pc.printf("R=%f L=%f",target_R,target_L);
            pc.printf("omg_R=%f omg_L=%f  \r\n",motorR.getOmega(),motorL.getOmega());
            pc.printf("i=%d\r\n",i);
            pc.printf("EC1=%f",EC1.getDistance_mm(),EC1.getCount());
            pc.printf("x=%f y=%f",x,y);
            //pc.printf("angle=%f\r\n",angle);
            //機体の進む方向、右モーターの角速度、左モーターの角速度を表示
            kai=0;
        }
        kai++;
        if(i==0) {
            servo.pulsewidth_us(950);
            if(reset_f.read()==0&&button.read()==0) {
                wait(0.05);
                if(reset_f.read()==0&&button.read()==0) {
                    denjiben=1;
                    x=0;
                    y=0;
                    i++;
                }
            }
            if(reset_a.read()==0&&button.read()==0) {
                wait(0.05);
                if(reset_a.read()==0&&button.read()==0) {
                    denjiben=1;
                    x=0;
                    y=0;
                    i=21;
                }
            }//x,y
        }
        if(i==1) {
            wait(3);
            servo.pulsewidth_us(950);
            wait(1);
            i++;
        }

        if(i==2) {
            susumu_y(1,1,1000);
        }
        if(i==3) {

            motorR.stop();
            motorL.stop();
            servo.pulsewidth_us(2200);
            wait(1);
            denjiben=0;
            wait(1);
            i++;
        }
        if(i==4) {
            servo.pulsewidth_us(950);
            wait(1);
            i++;
        }
        if(i==5) {
            susumu_y(-1,-1,200);
        }
        if(i==6) {
            motorR.stop();
            motorL.stop();
            denjiben=1;
            wait(1);
            i++;
        }

        if(i==7) {
            tgt(0,0);
        }
        if(i==10) {
            t.start();
            while(t<1) {
                motor_f=0.82;
                motor_b=0;
            }
            t.stop();
            t.reset();

            t.start();
            while(t<1) {
                motor_f=0;
                motor_b=0.82;
            }
            t.stop();
            t.reset();
            motor_f=0;
            motor_b=0;
            i++;
        }
        if(i==11) {
            susumu_y(1,1,1000);
        }
        if(i==12) {
            susumu_ang(0.5,1,90);
        }
        if(i==13){
            susumu_xl(1,1,500);
        }
        if(i==14){
            susumu_ang(0.5,1,180);
        }
        if(i==15) {
            susumu_y(1,1,415);
        }
        if(i==16) {
            susumu_ang(0.5,1,270);
        }
        if(i==17){
            susumu_xr(1,1,585);
        }
        if(i==18){
            susumu_ang(0.5,1,360);
        }
        if(i==19){
            i=11;
            }

        if(i==21) {
            susumu_y(1,1,300);
        }
        if(i==22) {
            susumu_ang(0.333,1,270);
        }
        if(i==23){
            susumu_xr(1,1,-300);
        }
        if(i==24){
            susumu_ang(1,0.333,0);
        }
        if(i==25) {
            susumu_y(1,1,300);
        }
        if(i==26) {
            susumu_ang(1,0.333,-270);
        }
        if(i==27){
            susumu_xl(1,1,300);
        }
        if(i==28){
            susumu_ang(0.333,1,0);
        }
        if(i==29){
            susumu_y(1,1,0);
            }








    }









}