driver

Dependencies:   HMC6352 PID mbed

Fork of ver3_1_0 by ryo seki

main.h

Committer:
yusuke_robocup
Date:
2014-01-24
Revision:
1:3b61675573b1
Parent:
0:bde8ed56b164

File content as of revision 1:3b61675573b1:



#define RATE    0.052
#define Long    1.0
#define ENTER   0
#define EXIT    1
#define X       0
#define Y       1
#define MOT_NUM 4
#define MOTDRIVER_WAIT  300 //ms
#define BAUD_RATE       115200
#define BAUD_RATE2      19200
#define BUT_WAIT        0.3 //s
#define ON      1
#define OFF     0

#define PING_ERROR  0xFFFF
#define PI          3.14159265

#define MOT1    1.0
#define MOT2    1.0
#define MOT3    1.0
#define MOT4    1.0

#define PID_BIAS    0.0
#define REFERENCE   180.0
#define MINIMUM     0.0
#define MAXIMUM     360.0

#define PID_CYCLE   0.06    //s

#define P_GAIN  0.65    //0.78   
#define I_GAIN  0.0     //0.0
#define D_GAIN  0.009   //0.009
    
#define OUT_LIMIT   30.0
#define MAX_POW     100
#define MIN_POW     -100

DigitalOut led1(LED1); 
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);
BusOut mbedleds(LED4,LED3,LED2,LED1); 
HMC6352 compass(p9, p10);
Serial driver(p28, p27);    // tx, rx 
Serial device2(p13, p14);   // tx, rx
Serial pc(USBTX, USBRX);    // tx, rx 
DigitalIn StartButton(p21);
DigitalIn CalibEnterButton(p22);
DigitalIn CalibExitButton(p23);
DigitalIn EEPROMButton(p24);
PID pid(P_GAIN,I_GAIN,D_GAIN, RATE);      //battery is low power version 30.0 0.58 1.0 0.015    battery is high power version   30.0 0.42, 1.0, 0.013   power is low but perfect 20.0 0.45, 0.0, 0.010
Ticker pidUpdata;
Ticker irDistanceUpdata;
Ticker underIR;
Timer timer1;
Timer Survtimer;
Timer lasttimer;
LocalFileSystem local("local");  // マウントポイントを定義(ディレクトリパスになる)

enum{
    XNORMAL,
    LEFT_OUT,
    RIGHT_OUT,
};

enum{
    YNORMAL,
    FRONT_OUT,
    BACK_OUT,
};

enum{
    HOME_WAIT,
    DIFFENCE,
    WARNING,
    HOLD,
};

enum{
    NONE,
    ATTACK,
    SNAKE,
    SEARCH
};

PinName adc_num[6] = {
    p15,
    p16,
    p17,
    p18,
    p19,
    p20,
};

int under_val[6] = {0};

int whiteout_flag = 0;

double standTu = 0;
int speed[MOT_NUM] = {0};
uint8_t hold_flag = 0;
uint8_t state = HOME_WAIT;
uint8_t lineStateY = YNORMAL;
uint8_t lineStateX = XNORMAL;

double inputPID = 180.0;
static double standard;
double compassPID = 0.0;

int whiteout;
int whitevalue;

extern int diff;

extern string StringFIN;

extern uint8_t direction;
extern uint8_t Distance;
extern uint8_t IR_found;
extern uint8_t xbee;
extern int irDistance[6];

extern void array(int,int,int,int);

extern void dev_rx(void);
extern void dev_tx(void);

extern uint16_t ultrasonicVal[4];

int stand[6];
uint8_t compFlag = 0;

#define FRONT_SONIC ultrasonicVal[0]
#define BACK_SONIC  ultrasonicVal[2]
#define RIGHT_SONIC ultrasonicVal[1]
#define LEFT_SONIC  ultrasonicVal[3]    


double ball_sankaku[16][2] = {
    {0     , 1    },
    {0.390 , 0.920},
    {0.866 , 0.500},
    {0.927 , 0.374},
    {1     , 0    },
    {0.920 ,-0.390},
    {0.707 ,-0.707},
    {0.374 ,-0.927},
    {0     ,-1    },
    {-0.390,-0.920},
    {-0.707,-0.707},
    {-0.927,-0.374},
    {-1    , 0    },
    {-0.920, 0.390},
    {-0.866, 0.500},
    {-0.374, 0.927}
};

double turn_sankaku[16][2] = {
    { 0    ,0      },
    /*{ 1    ,0      },*/{ 0.920,-0.390 },
    { 0.707,-0.707 }, //{ 0.500,-0.866 },
    { 0.374,-0.927 },
    { 0    ,-0.8   },
    {-0.390,-0.920 },
    {-0.707,-0.707 },
    {-0.927,-0.374 },
    {-0.927,-0.374 },
    {0.920 ,-0.390 },
    {0.707 ,-0.707 },
    {0.374 ,-0.927 },
    {0     ,-0.8   },
    {-0.390,-0.920 },
    {-0.707,-0.707 }, //{-0.500,-0.866 },
    /*{-1    ,0      }*/{-0.927,-0.374 }
};