2022交流ロボコン用 バージョン2

Dependencies:   mbed 2021Bcon ikarashiMDC_2byte_ver

main.cpp

Committer:
umekou
Date:
2022-03-27
Revision:
0:ca9732a3ae5c

File content as of revision 0:ca9732a3ae5c:

#include "mbed.h"
#include "ikarashiMDC.h"
#include "controller.h"
#include <math.h>

DigitalOut stop(D13);
Bcon mycon(PA_9,PA_10,004);//FEP004はコントローラーについてる方の番号
Serial serial(PC_10,PC_11,115200);
Serial pc(USBTX,USBRX,115200);

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


int main()
{
    mycon.StartReceive();
    stop=1;
    uint8_t b[8];//ボタン b[0]~b[7]の順に 左 黄色 青 赤 緑 右 赤 青 黄色 緑
    int16_t stick[4];//スティック
    double speed[7] = {0,0,0,0,0,0,0};//モータースピード
    double x,y;
    int i;
    while(1) {
        for (i=0; i<8; i++) b[i] = mycon.getButton(i);
        for (i=0; i<4; i++) stick[i] = mycon.getStick(i);
        x=stick[0];
        y=stick[1];
        if(x>20||x<-20||y>20||y<-20){
            for(i=0; i < 4; i++){
                speed[i] = sin(atan2(y,x)-3.14*(i*2-1) / 4);
            }
        } else {
            for(i=0; i < 4; i++){
                speed[i] = 0;
            }
        }
        //ここまでが全方位移動
        
        if(b[0]){
            speed[4] = 1.0;
        }else if(b[1]){
            speed[4] = -1.0;
        }else{
            speed[4] = 0.0;
        }
        //左 黄色と青
        
        if(b[2]){
            speed[5] = 1.0;
        }else if(b[3]){
            speed[5] = -1.0;
        }else{
            speed[5] = 0.0;
        }
        //左 赤と緑
        
        if(b[4]){
            speed[6] = 1.0;
        }else if(b[5]){
            speed[6] = -1.0;
        }else{
            speed[6] = 0.0;
        }
        //右 赤と青
        
        for(i=0; i < 4; i++){
            motor[i].setSpeed(speed[i]*0.5);
        }//足回り
        motor[4].setSpeed(speed[4]*0.3);
        motor[5].setSpeed(speed[5]);
        motor[6].setSpeed(speed[6]*0.5);
        //モータースピードの上げ下げは*0.5を大きくしたり小さくしたりで調整
        
        for (int i=0; i<8; i++) pc.printf("%d ", b[i]);
        pc.printf(" | ");
        for (int i=0; i<4; i++) pc.printf("%3d ", stick[i]);
        pc.printf(" | ");
        if (mycon.status) pc.printf("received\r\n");
        else pc.printf("anything error...\r\n");
        //コントローラーの状態を表示
        
    }
}