version 3 通信方式,マイコン等に変更あり
Dependencies: AQM0802A PID Servo mbed
main.h
00001 00002 /*PID処理*/ 00003 #define RATE 0.052//52 00004 #define PID_BIAS 0.2 00005 #define REFERENCE 180.0 00006 #define MINIMUM 0.0 00007 #define MAXIMUM 359.0 00008 #define P_GAIN 1.4//1.4 //0.78 00009 #define I_GAIN 0.0 //0.0 00010 #define D_GAIN 0.05 //0.009 00011 #define OUT_LIMIT 40.0 00012 #define MAX_POW 100 00013 #define MIN_POW -100 00014 #define PID_CYCLE 0.05 //s 00015 00016 /*Servoなんか*/ 00017 #define WAIT_TIME 0.20 00018 00019 /*Serial Mbed間*/ 00020 #define ADDRESS 0xAA 00021 00022 00023 /*BusIn sw 入力値*/ 00024 #define StartS 0x01 00025 #define Debug1 0x02 00026 #define Debug2 0x04 00027 #define Debug3 0x08 00028 #define Debug12 0x06 00029 #define Debug23 0x0C 00030 #define Kicker 0x10 00031 00032 #define CW 1 00033 #define CCW -1 00034 #define ENTER 0 00035 #define EXIT 1 00036 00037 Serial Mbed(p9,p10);//tx,rx 00038 00039 BusIn Sw(p22,p23,p24,p25,p26); 00040 BusIn Line(p5,p6,p7,p8);//No reading line → 0b1111 ,not pull up 00041 DigitalOut Led[4] = {LED1,LED2,LED3,LED4}; 00042 DigitalOut Kick(p29); 00043 Servo S555(p21); 00044 AQM0802A Lcd(p28,p27);//sda,scl 00045 Serial Motor(p13,p14);//tx,rx 00046 Serial pc(USBTX,USBRX); 00047 00048 00049 /*Compass PID SetUp*/ 00050 PID pid(P_GAIN,I_GAIN,D_GAIN, RATE); 00051 Ticker pidupdate; 00052 00053 00054 /*Servo timer */ 00055 Timeout STimer; 00056 00057 extern string StringFIN; 00058 extern void array(int,int,int,int); 00059 extern void micon_rx(void); 00060 00061 int speed[4] = {0}; 00062 00063 00064 00065 double SetDegree = 0; 00066 00067 /*Mbed sensor data */ 00068 uint8_t IrData[3] = {0},IrNum = 0; 00069 uint8_t PingData[4]={0}; 00070 int Compass = 0; 00071 unsigned int CompassDef = 0; 00072 double SetC = 0, InputPID = 180.0, CompassPID = 0.0; 00073 00074 bool WaitFlag = 0; 00075 00076 /* motor driver*/ 00077 00078 enum {FRONT = 1, RIGHT, BACK, LEFT, NA} Direction; 00079 00080 /*mbed sensor data */ 00081 00082 volatile int Angle[180] = { 00083 0 , 1 , 2 , 3 , 00084 4 , 5 , 6 , 7 , 00085 8 , 9 , 10 , 11 , 00086 12 , 13 , 14 , 15 , 00087 16 , 17 , 18 , 19 , 00088 20 , 21 , 22 , 23 , 00089 24 , 25 , 26 , 27 , 00090 28 , 29 , 30 , 31 , 00091 32 , 33 , 34 , 35 , 00092 36 , 37 , 38 , 39 , 00093 40 , 41 , 42 , 43 , 00094 44 , 45 , 46 , 47 , 00095 48 , 49 , 50 , 51 , 00096 52 , 53 , 54 , 55 , 00097 56 , 57 , 58 , 59 , 00098 60 , 61 , 62 , 63 , 00099 64 , 65 , 66 , 67 , 00100 68 , 69 , 70 , 71 , 00101 72 , 73 , 74 , 75 , 00102 76 , 77 , 78 , 79 , 00103 80 , 81 , 82 , 83 , 00104 84 , 85 , 86 , 87 , 00105 88 , 89 , 90 , -89 , 00106 -88 , -87 , -86 , -85 , 00107 -84 , -83 , -82 , -81 , 00108 -80 , -79 , -78 , -77 , 00109 -76 , -75 , -74 , -73 , 00110 -72 , -71 , -70 , -69 , 00111 -68 , -67 , -66 , -65 , 00112 -64 , -63 , -62 , -61 , 00113 -60 , -59 , -58 , -57 , 00114 -56 , -55 , -54 , -53 , 00115 -52 , -51 , -50 , -49 , 00116 -48 , -47 , -46 , -45 , 00117 -44 , -43 , -42 , -41 , 00118 -40 , -39 , -38 , -37 , 00119 -36 , -35 , -34 , -33 , 00120 -32 , -31 , -30 , -29 , 00121 -28 , -27 , -26 , -25 , 00122 -24 , -23 , -22 , -21 , 00123 -20 , -19 , -18 , -17 , 00124 -16 , -15 , -14 , -13 , 00125 -12 , -11 , -10 , -9 , 00126 -8 , -7 , -6 , -5 , 00127 -4 , -3 , -2 , -1 }; 00128 00129 volatile int DegreeToVector[5] = {1,-1,-1,1,1}; 00130 00131 int wrapDegree[24] = { 0,// 00132 30,//15 00133 60,//30 00134 90,//45 00135 130,//60 00136 140,//75 00137 170,//90 00138 170,//105 00139 170,//120 00140 180,//135 00141 200,//150 00142 220,//165 00143 90, //180 or270 00144 130,//195 00145 150,//210 00146 180,//225 00147 175,//240 00148 195,//255 00149 195,//270 00150 240,//285 00151 230,//300 00152 270,//315 00153 290,//330 00154 320//345 00155 }; 00156 00157 00158 00159 00160 00161 /* 00162 | | 00163 | | 00164 | o | 00165 | | 00166 | | 00167 |---------------p,q 00168 00169 00170 */
Generated on Wed Jul 20 2022 04:02:24 by 1.7.2