driver

Dependencies:   HMC6352 PID mbed

Fork of ver3_1_0 by ryo seki

Committer:
akudohune
Date:
Wed Jun 19 08:42:55 2013 +0000
Revision:
0:bde8ed56b164
Child:
1:3b61675573b1
final_master

Who changed what in which revision?

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