takasou

Dependencies:   QEI omni_wheel PID R1370 Controller ikarashiMDC OmniPosition sample

main.cpp

Committer:
piroro4560
Date:
2019-07-16
Revision:
0:377bc90d362c

File content as of revision 0:377bc90d362c:

#include "mbed.h"           //wheel_test6
#include "ikarashiMDC.h"    //sampleライブラリ -> 成功
#include "omni_wheel.h"
#include "sample02.h"
#include "OmniPosition.h"

OmniWheel omni(4);
OmniPosition posi(PC_12, PD_2);
Serial serial(PC_6, PC_7, 115200);
DigitalOut serialcontrol(D10);
RawSerial pc(USBTX, USBRX, 115200);
DigitalOut sw(PC_2);


ikarashiMDC motor[]=
{
    ikarashiMDC(&serialcontrol,0,0,SM,&serial),
    ikarashiMDC(&serialcontrol,0,1,SM,&serial),
    ikarashiMDC(&serialcontrol,0,2,SM,&serial),
    ikarashiMDC(&serialcontrol,0,3,SM,&serial),
};

Sample sample(1500, 1500, 0.4, 0.14);


double sign(double a){
    return(a>0)-(a<0);
}


int main()
{
    motor[0].braking = true;
    double valueX, valueY, value[4];
    omni.wheel[0].setRadian(PI * 1.0 / 4.0);
    omni.wheel[1].setRadian(PI * 3.0 / 4.0);
    omni.wheel[2].setRadian(PI * 5.0 / 4.0);
    omni.wheel[3].setRadian(PI * 7.0 / 4.0);
    sample.target_xy(0, 4000, posi.getX(), posi.getY());
    while(1){
        sw = 1;
        sample.calculate(posi.getX(), posi.getY());
        valueX = sample.getvalue_x();
        valueY = sample.getvalue_y();
        omni.computeXY(valueX,valueY,0);
         
        pc.printf("x:%d || y:%d || a:%f || vector:%f ||   ", posi.getX(), posi.getY(), posi.getTheta(), sample.vector);
        for(int i = 0; i < 4; i++){
            value[i] = omni.wheel[i];
            pc.printf("%.2f || ",value[i]);
        }
        int a = sample.nowDis > (sample.accdis+sample.middledis);
        pc.printf(" now:%f || %f\r\n",sample.nowDis, sample.counter);
        for(int i = 0; i < 4; i++)motor[i].setSpeed(omni.wheel[i]);
    }
}