aa

Dependencies:   HMC6352 PID mbed

Committer:
akudohune
Date:
Mon Jun 17 00:12:40 2013 +0000
Revision:
0:e9b97faa3e37
zaaa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akudohune 0:e9b97faa3e37 1
akudohune 0:e9b97faa3e37 2
akudohune 0:e9b97faa3e37 3 #define RATE 0.052
akudohune 0:e9b97faa3e37 4 #define Long 1.0
akudohune 0:e9b97faa3e37 5 #define ENTER 0
akudohune 0:e9b97faa3e37 6 #define EXIT 1
akudohune 0:e9b97faa3e37 7 #define X 0
akudohune 0:e9b97faa3e37 8 #define Y 1
akudohune 0:e9b97faa3e37 9 #define MOT_NUM 4
akudohune 0:e9b97faa3e37 10 #define MOTDRIVER_WAIT 300 //ms
akudohune 0:e9b97faa3e37 11 #define BAUD_RATE 115200
akudohune 0:e9b97faa3e37 12 #define BAUD_RATE2 19200
akudohune 0:e9b97faa3e37 13 #define BUT_WAIT 0.3 //s
akudohune 0:e9b97faa3e37 14 #define ON 1
akudohune 0:e9b97faa3e37 15 #define OFF 0
akudohune 0:e9b97faa3e37 16
akudohune 0:e9b97faa3e37 17 #define PING_ERROR 0xFFFF
akudohune 0:e9b97faa3e37 18 #define PI 3.14159265
akudohune 0:e9b97faa3e37 19
akudohune 0:e9b97faa3e37 20 #define MOT1 1.0
akudohune 0:e9b97faa3e37 21 #define MOT2 1.0
akudohune 0:e9b97faa3e37 22 #define MOT3 1.0
akudohune 0:e9b97faa3e37 23 #define MOT4 1.0
akudohune 0:e9b97faa3e37 24
akudohune 0:e9b97faa3e37 25 #define PID_BIAS 0.0
akudohune 0:e9b97faa3e37 26 #define REFERENCE 180.0
akudohune 0:e9b97faa3e37 27 #define MINIMUM 0.0
akudohune 0:e9b97faa3e37 28 #define MAXIMUM 360.0
akudohune 0:e9b97faa3e37 29
akudohune 0:e9b97faa3e37 30 #define PID_CYCLE 0.06 //s
akudohune 0:e9b97faa3e37 31
akudohune 0:e9b97faa3e37 32 #define P_GAIN 0.80 //0.78
akudohune 0:e9b97faa3e37 33 #define I_GAIN 0.0 //0.0
akudohune 0:e9b97faa3e37 34 #define D_GAIN 0.0095 //0.009
akudohune 0:e9b97faa3e37 35
akudohune 0:e9b97faa3e37 36 #define OUT_LIMIT 40.0
akudohune 0:e9b97faa3e37 37 #define MAX_POW 100
akudohune 0:e9b97faa3e37 38 #define MIN_POW -100
akudohune 0:e9b97faa3e37 39
akudohune 0:e9b97faa3e37 40 DigitalOut led1(LED1);
akudohune 0:e9b97faa3e37 41 DigitalOut led2(LED2);
akudohune 0:e9b97faa3e37 42 DigitalOut led3(LED3);
akudohune 0:e9b97faa3e37 43 DigitalOut led4(LED4);
akudohune 0:e9b97faa3e37 44 BusOut mbedleds(LED4,LED3,LED2,LED1);
akudohune 0:e9b97faa3e37 45 HMC6352 compass(p9, p10);
akudohune 0:e9b97faa3e37 46 Serial driver(p28, p27); // tx, rx
akudohune 0:e9b97faa3e37 47 Serial device2(p13, p14); // tx, rx
akudohune 0:e9b97faa3e37 48 Serial pc(USBTX, USBRX); // tx, rx
akudohune 0:e9b97faa3e37 49 DigitalIn StartButton(p21);
akudohune 0:e9b97faa3e37 50 DigitalIn CalibEnterButton(p22);
akudohune 0:e9b97faa3e37 51 DigitalIn CalibExitButton(p23);
akudohune 0:e9b97faa3e37 52 DigitalIn EEPROMButton(p24);
akudohune 0:e9b97faa3e37 53 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
akudohune 0:e9b97faa3e37 54 Ticker pidUpdata;
akudohune 0:e9b97faa3e37 55 Ticker irDistanceUpdata;
akudohune 0:e9b97faa3e37 56 Timer timer1;
akudohune 0:e9b97faa3e37 57 Timer Survtimer;
akudohune 0:e9b97faa3e37 58 LocalFileSystem local("local"); // マウントポイントを定義(ディレクトリパスになる)
akudohune 0:e9b97faa3e37 59
akudohune 0:e9b97faa3e37 60 enum{
akudohune 0:e9b97faa3e37 61 NORMAL,
akudohune 0:e9b97faa3e37 62 LEFT_OUT,
akudohune 0:e9b97faa3e37 63 RIGHT_OUT,
akudohune 0:e9b97faa3e37 64 FRONT_OUT,
akudohune 0:e9b97faa3e37 65 BACK_OUT,
akudohune 0:e9b97faa3e37 66 };
akudohune 0:e9b97faa3e37 67
akudohune 0:e9b97faa3e37 68 enum{
akudohune 0:e9b97faa3e37 69 HOME_WAIT,
akudohune 0:e9b97faa3e37 70 DIFFENCE,
akudohune 0:e9b97faa3e37 71 WARNING,
akudohune 0:e9b97faa3e37 72 HOLD,
akudohune 0:e9b97faa3e37 73 };
akudohune 0:e9b97faa3e37 74
akudohune 0:e9b97faa3e37 75 PinName adc_num[6] = {
akudohune 0:e9b97faa3e37 76 p15,
akudohune 0:e9b97faa3e37 77 p16,
akudohune 0:e9b97faa3e37 78 p17,
akudohune 0:e9b97faa3e37 79 p18,
akudohune 0:e9b97faa3e37 80 p19,
akudohune 0:e9b97faa3e37 81 p20,
akudohune 0:e9b97faa3e37 82 };
akudohune 0:e9b97faa3e37 83 double standTu = 0;
akudohune 0:e9b97faa3e37 84 int speed[MOT_NUM] = {0};
akudohune 0:e9b97faa3e37 85 uint8_t hold_flag = 0;
akudohune 0:e9b97faa3e37 86 uint8_t state = HOME_WAIT;
akudohune 0:e9b97faa3e37 87 uint8_t lineState = NORMAL;
akudohune 0:e9b97faa3e37 88
akudohune 0:e9b97faa3e37 89 double inputPID = 180.0;
akudohune 0:e9b97faa3e37 90 static double standard;
akudohune 0:e9b97faa3e37 91 double compassPID = 0.0;
akudohune 0:e9b97faa3e37 92
akudohune 0:e9b97faa3e37 93 extern int diff;
akudohune 0:e9b97faa3e37 94
akudohune 0:e9b97faa3e37 95 extern string StringFIN;
akudohune 0:e9b97faa3e37 96
akudohune 0:e9b97faa3e37 97 extern uint8_t direction;
akudohune 0:e9b97faa3e37 98 extern uint8_t Distance;
akudohune 0:e9b97faa3e37 99 extern uint8_t IR_found;
akudohune 0:e9b97faa3e37 100 extern uint8_t xbee;
akudohune 0:e9b97faa3e37 101 extern int irDistance[6];
akudohune 0:e9b97faa3e37 102
akudohune 0:e9b97faa3e37 103 extern void array(int,int,int,int);
akudohune 0:e9b97faa3e37 104
akudohune 0:e9b97faa3e37 105 extern void dev_rx(void);
akudohune 0:e9b97faa3e37 106 extern void dev_tx(void);
akudohune 0:e9b97faa3e37 107
akudohune 0:e9b97faa3e37 108 extern uint16_t ultrasonicVal[4];
akudohune 0:e9b97faa3e37 109
akudohune 0:e9b97faa3e37 110 int stand[6];
akudohune 0:e9b97faa3e37 111 uint8_t compFlag = 0;
akudohune 0:e9b97faa3e37 112
akudohune 0:e9b97faa3e37 113 #define FRONT_SONIC ultrasonicVal[0]
akudohune 0:e9b97faa3e37 114 #define BACK_SONIC ultrasonicVal[2]
akudohune 0:e9b97faa3e37 115 #define RIGHT_SONIC ultrasonicVal[1]
akudohune 0:e9b97faa3e37 116 #define LEFT_SONIC ultrasonicVal[3]
akudohune 0:e9b97faa3e37 117
akudohune 0:e9b97faa3e37 118