DECS @UNIST / Mbed 2 deprecated Anybaro_ver_7

Dependencies:   mbed

Committer:
whutsup
Date:
Fri Jun 22 12:16:52 2018 +0000
Revision:
0:cbbc3528eb59
Child:
1:a003b900b810
button start(0622)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whutsup 0:cbbc3528eb59 1 #include "mbed.h"
whutsup 0:cbbc3528eb59 2
whutsup 0:cbbc3528eb59 3 Serial bc(PA_9,PA_10); // USART1 Bluetooth (Tx, Rx)
whutsup 0:cbbc3528eb59 4 Serial pc(PA_2,PA_3); // USART2 pc (Tx, Rx)
whutsup 0:cbbc3528eb59 5
whutsup 0:cbbc3528eb59 6 DigitalOut led(LED2); // LED
whutsup 0:cbbc3528eb59 7 DigitalOut enable(PB_12); // Motor enable
whutsup 0:cbbc3528eb59 8 DigitalOut p1(PB_13); // Motor dir1 up
whutsup 0:cbbc3528eb59 9 DigitalOut p2(PB_14); // Motor dir2 down
whutsup 0:cbbc3528eb59 10
whutsup 0:cbbc3528eb59 11 DigitalIn up(PC_8); // Burton Motor control
whutsup 0:cbbc3528eb59 12 DigitalIn down(PC_9);
whutsup 0:cbbc3528eb59 13
whutsup 0:cbbc3528eb59 14 AnalogIn disSensor(PA_7); // Distance Sensor
whutsup 0:cbbc3528eb59 15
whutsup 0:cbbc3528eb59 16 Ticker timer1; //
whutsup 0:cbbc3528eb59 17 Ticker timer2; //
whutsup 0:cbbc3528eb59 18
whutsup 0:cbbc3528eb59 19 /*------------------ ReadData Variables -------------------*/
whutsup 0:cbbc3528eb59 20
whutsup 0:cbbc3528eb59 21 uint8_t rx_buf[8]; // < _ _ _ _ _ _ > 8Byte
whutsup 0:cbbc3528eb59 22 char RX_command[4] = {0,}; // _ _ _
whutsup 0:cbbc3528eb59 23 char RX_data[4] = {0,}; // _ _ _
whutsup 0:cbbc3528eb59 24 char flag_RX = 0;
whutsup 0:cbbc3528eb59 25 event_callback_t Test;
whutsup 0:cbbc3528eb59 26
whutsup 0:cbbc3528eb59 27 int targetDis;
whutsup 0:cbbc3528eb59 28
whutsup 0:cbbc3528eb59 29 /*------------------ Callback Functions -------------------*/
whutsup 0:cbbc3528eb59 30
whutsup 0:cbbc3528eb59 31 void ReadData(int events)
whutsup 0:cbbc3528eb59 32 {
whutsup 0:cbbc3528eb59 33 bc.printf("Read The Data!!\n");
whutsup 0:cbbc3528eb59 34
whutsup 0:cbbc3528eb59 35
whutsup 0:cbbc3528eb59 36 if (rx_buf[0] == '<' && rx_buf[7] == '>')
whutsup 0:cbbc3528eb59 37 {
whutsup 0:cbbc3528eb59 38 flag_RX = 1;
whutsup 0:cbbc3528eb59 39
whutsup 0:cbbc3528eb59 40 RX_command[0] = rx_buf[1];
whutsup 0:cbbc3528eb59 41 RX_command[1] = rx_buf[2];
whutsup 0:cbbc3528eb59 42 RX_command[2] = rx_buf[3];
whutsup 0:cbbc3528eb59 43 RX_data[0] = rx_buf[4];
whutsup 0:cbbc3528eb59 44 RX_data[1] = rx_buf[5];
whutsup 0:cbbc3528eb59 45 RX_data[2] = rx_buf[6];
whutsup 0:cbbc3528eb59 46 }
whutsup 0:cbbc3528eb59 47
whutsup 0:cbbc3528eb59 48
whutsup 0:cbbc3528eb59 49 }
whutsup 0:cbbc3528eb59 50
whutsup 0:cbbc3528eb59 51 void ControlLED(int mode)
whutsup 0:cbbc3528eb59 52 {
whutsup 0:cbbc3528eb59 53 bc.printf("mode = %d\n",mode);
whutsup 0:cbbc3528eb59 54
whutsup 0:cbbc3528eb59 55 switch (mode)
whutsup 0:cbbc3528eb59 56 {
whutsup 0:cbbc3528eb59 57 case 0 :
whutsup 0:cbbc3528eb59 58
whutsup 0:cbbc3528eb59 59 led = 0;
whutsup 0:cbbc3528eb59 60
whutsup 0:cbbc3528eb59 61 break;
whutsup 0:cbbc3528eb59 62
whutsup 0:cbbc3528eb59 63 case 1 :
whutsup 0:cbbc3528eb59 64 led = 1;
whutsup 0:cbbc3528eb59 65
whutsup 0:cbbc3528eb59 66 break;
whutsup 0:cbbc3528eb59 67
whutsup 0:cbbc3528eb59 68 case 2 :
whutsup 0:cbbc3528eb59 69 bc.printf("ANYBARO");
whutsup 0:cbbc3528eb59 70
whutsup 0:cbbc3528eb59 71 break;
whutsup 0:cbbc3528eb59 72
whutsup 0:cbbc3528eb59 73 }
whutsup 0:cbbc3528eb59 74
whutsup 0:cbbc3528eb59 75 }
whutsup 0:cbbc3528eb59 76
whutsup 0:cbbc3528eb59 77
whutsup 0:cbbc3528eb59 78 void MotorTest(int mode)
whutsup 0:cbbc3528eb59 79 {
whutsup 0:cbbc3528eb59 80
whutsup 0:cbbc3528eb59 81 bc.printf("mode = %d\n",mode);
whutsup 0:cbbc3528eb59 82
whutsup 0:cbbc3528eb59 83 switch (mode)
whutsup 0:cbbc3528eb59 84
whutsup 0:cbbc3528eb59 85 {
whutsup 0:cbbc3528eb59 86 case 0 : //stop
whutsup 0:cbbc3528eb59 87
whutsup 0:cbbc3528eb59 88 enable = 0;
whutsup 0:cbbc3528eb59 89
whutsup 0:cbbc3528eb59 90 break;
whutsup 0:cbbc3528eb59 91
whutsup 0:cbbc3528eb59 92 case 1 : // up
whutsup 0:cbbc3528eb59 93
whutsup 0:cbbc3528eb59 94 enable = 1;
whutsup 0:cbbc3528eb59 95 p1 = 0;
whutsup 0:cbbc3528eb59 96 p2 = 1;
whutsup 0:cbbc3528eb59 97
whutsup 0:cbbc3528eb59 98 break;
whutsup 0:cbbc3528eb59 99
whutsup 0:cbbc3528eb59 100 case 2 : // down
whutsup 0:cbbc3528eb59 101
whutsup 0:cbbc3528eb59 102 enable = 1;
whutsup 0:cbbc3528eb59 103 p1 = 1;
whutsup 0:cbbc3528eb59 104 p2 = 0;
whutsup 0:cbbc3528eb59 105
whutsup 0:cbbc3528eb59 106 break;
whutsup 0:cbbc3528eb59 107
whutsup 0:cbbc3528eb59 108 }
whutsup 0:cbbc3528eb59 109
whutsup 0:cbbc3528eb59 110 }
whutsup 0:cbbc3528eb59 111
whutsup 0:cbbc3528eb59 112 void ControlAng()
whutsup 0:cbbc3528eb59 113 {
whutsup 0:cbbc3528eb59 114 double d1 = disSensor.read();
whutsup 0:cbbc3528eb59 115 double d2 = 161.89*d1*d1*d1*d1-437.31*d1*d1*d1+440.89*d1*d1-207.4*d1+42.245;
whutsup 0:cbbc3528eb59 116
whutsup 0:cbbc3528eb59 117 bc.printf("%1.3f\n", d1);
whutsup 0:cbbc3528eb59 118
whutsup 0:cbbc3528eb59 119 // int ref_d = targetDis-d2;
whutsup 0:cbbc3528eb59 120 //
whutsup 0:cbbc3528eb59 121 // if(ref_d > 0.01)
whutsup 0:cbbc3528eb59 122 // {
whutsup 0:cbbc3528eb59 123 // enable = 1;
whutsup 0:cbbc3528eb59 124 // p1 = 1;
whutsup 0:cbbc3528eb59 125 // p2 = 0;
whutsup 0:cbbc3528eb59 126 //
whutsup 0:cbbc3528eb59 127 // }
whutsup 0:cbbc3528eb59 128 //
whutsup 0:cbbc3528eb59 129 // else if(ref_d < -0.01)
whutsup 0:cbbc3528eb59 130 // {
whutsup 0:cbbc3528eb59 131 //
whutsup 0:cbbc3528eb59 132 // enable = 1;
whutsup 0:cbbc3528eb59 133 // p1 = 0;
whutsup 0:cbbc3528eb59 134 // p2 = 1;
whutsup 0:cbbc3528eb59 135 //
whutsup 0:cbbc3528eb59 136 // }
whutsup 0:cbbc3528eb59 137 //
whutsup 0:cbbc3528eb59 138 // else
whutsup 0:cbbc3528eb59 139 // {
whutsup 0:cbbc3528eb59 140 //
whutsup 0:cbbc3528eb59 141 // enable = 0;
whutsup 0:cbbc3528eb59 142 // timer1.detach();
whutsup 0:cbbc3528eb59 143 //
whutsup 0:cbbc3528eb59 144 // }
whutsup 0:cbbc3528eb59 145 }
whutsup 0:cbbc3528eb59 146
whutsup 0:cbbc3528eb59 147 void MotorBurton()
whutsup 0:cbbc3528eb59 148 {
whutsup 0:cbbc3528eb59 149
whutsup 0:cbbc3528eb59 150 int a = up.read();
whutsup 0:cbbc3528eb59 151 int b = down.read();
whutsup 0:cbbc3528eb59 152 int c = a*2 + b;
whutsup 0:cbbc3528eb59 153
whutsup 0:cbbc3528eb59 154 bc.printf("%d %d %d\n ",a,b,c);
whutsup 0:cbbc3528eb59 155
whutsup 0:cbbc3528eb59 156 switch(c)
whutsup 0:cbbc3528eb59 157 {
whutsup 0:cbbc3528eb59 158 case 0 : //stop
whutsup 0:cbbc3528eb59 159
whutsup 0:cbbc3528eb59 160 enable = 0;
whutsup 0:cbbc3528eb59 161
whutsup 0:cbbc3528eb59 162 break;
whutsup 0:cbbc3528eb59 163
whutsup 0:cbbc3528eb59 164 case 1 : // down
whutsup 0:cbbc3528eb59 165
whutsup 0:cbbc3528eb59 166 enable = 1;
whutsup 0:cbbc3528eb59 167 p1 = 0;
whutsup 0:cbbc3528eb59 168 p2 = 1;
whutsup 0:cbbc3528eb59 169
whutsup 0:cbbc3528eb59 170 break;
whutsup 0:cbbc3528eb59 171
whutsup 0:cbbc3528eb59 172 case 2 : // up
whutsup 0:cbbc3528eb59 173
whutsup 0:cbbc3528eb59 174 enable = 1;
whutsup 0:cbbc3528eb59 175 p1 = 1;
whutsup 0:cbbc3528eb59 176 p2 = 0;
whutsup 0:cbbc3528eb59 177
whutsup 0:cbbc3528eb59 178 break;
whutsup 0:cbbc3528eb59 179
whutsup 0:cbbc3528eb59 180 case 3 : // stop
whutsup 0:cbbc3528eb59 181
whutsup 0:cbbc3528eb59 182 enable = 1;
whutsup 0:cbbc3528eb59 183 p1 = 0;
whutsup 0:cbbc3528eb59 184 p2 = 0;
whutsup 0:cbbc3528eb59 185
whutsup 0:cbbc3528eb59 186 break;
whutsup 0:cbbc3528eb59 187
whutsup 0:cbbc3528eb59 188 }
whutsup 0:cbbc3528eb59 189
whutsup 0:cbbc3528eb59 190
whutsup 0:cbbc3528eb59 191
whutsup 0:cbbc3528eb59 192 }
whutsup 0:cbbc3528eb59 193
whutsup 0:cbbc3528eb59 194
whutsup 0:cbbc3528eb59 195 int main()
whutsup 0:cbbc3528eb59 196 {
whutsup 0:cbbc3528eb59 197 bc.baud(9600);
whutsup 0:cbbc3528eb59 198 bc.printf("START 180622 Ver. \n");
whutsup 0:cbbc3528eb59 199
whutsup 0:cbbc3528eb59 200 up.mode(PullNone);
whutsup 0:cbbc3528eb59 201 down.mode(PullNone);
whutsup 0:cbbc3528eb59 202
whutsup 0:cbbc3528eb59 203 int modeLED;
whutsup 0:cbbc3528eb59 204 int modeMotor;
whutsup 0:cbbc3528eb59 205
whutsup 0:cbbc3528eb59 206 modeLED = 0;
whutsup 0:cbbc3528eb59 207 modeMotor = 0;
whutsup 0:cbbc3528eb59 208
whutsup 0:cbbc3528eb59 209 timer2.attach(&MotorBurton,0.1);
whutsup 0:cbbc3528eb59 210
whutsup 0:cbbc3528eb59 211 while(1)
whutsup 0:cbbc3528eb59 212 {
whutsup 0:cbbc3528eb59 213
whutsup 0:cbbc3528eb59 214 bc.read(rx_buf, 8, ReadData , SERIAL_EVENT_RX_COMPLETE, '\n');
whutsup 0:cbbc3528eb59 215
whutsup 0:cbbc3528eb59 216 // Readdata callback // int event = SERIAL_EVENT_RX_COMPLETE //
whutsup 0:cbbc3528eb59 217
whutsup 0:cbbc3528eb59 218 // analyze the recieved packets
whutsup 0:cbbc3528eb59 219
whutsup 0:cbbc3528eb59 220 if (1 == flag_RX)
whutsup 0:cbbc3528eb59 221 {
whutsup 0:cbbc3528eb59 222 flag_RX = 0;
whutsup 0:cbbc3528eb59 223
whutsup 0:cbbc3528eb59 224 if (0 == strcmp(RX_command,"LED"))
whutsup 0:cbbc3528eb59 225 {
whutsup 0:cbbc3528eb59 226 bc.printf("LED CONTROL MODE!!");
whutsup 0:cbbc3528eb59 227 modeLED = atoi(RX_data);
whutsup 0:cbbc3528eb59 228 ControlLED(modeLED);
whutsup 0:cbbc3528eb59 229 }
whutsup 0:cbbc3528eb59 230
whutsup 0:cbbc3528eb59 231 else if (0 == strcmp(RX_command,"MOT"))
whutsup 0:cbbc3528eb59 232 {
whutsup 0:cbbc3528eb59 233
whutsup 0:cbbc3528eb59 234 bc.printf("MOTOR CONTROL MODE!!");
whutsup 0:cbbc3528eb59 235 modeMotor = atoi(RX_data);
whutsup 0:cbbc3528eb59 236 MotorTest(modeMotor);
whutsup 0:cbbc3528eb59 237 timer1.attach(&ControlAng,0.1);
whutsup 0:cbbc3528eb59 238
whutsup 0:cbbc3528eb59 239 }
whutsup 0:cbbc3528eb59 240
whutsup 0:cbbc3528eb59 241
whutsup 0:cbbc3528eb59 242
whutsup 0:cbbc3528eb59 243 // else if (0 == strcmp(RX_command,"DIS"))
whutsup 0:cbbc3528eb59 244 // {
whutsup 0:cbbc3528eb59 245 //
whutsup 0:cbbc3528eb59 246 // bc.printf("MOTOR DISTANCE CONTROL MODE!!");
whutsup 0:cbbc3528eb59 247 // targetDis = atoi(RX_data);
whutsup 0:cbbc3528eb59 248 // timer1.attach(&ControlAng,0.1);
whutsup 0:cbbc3528eb59 249 //
whutsup 0:cbbc3528eb59 250 // }
whutsup 0:cbbc3528eb59 251
whutsup 0:cbbc3528eb59 252
whutsup 0:cbbc3528eb59 253 }
whutsup 0:cbbc3528eb59 254
whutsup 0:cbbc3528eb59 255 wait_ms(100);
whutsup 0:cbbc3528eb59 256
whutsup 0:cbbc3528eb59 257 }
whutsup 0:cbbc3528eb59 258
whutsup 0:cbbc3528eb59 259 }