OzerDrive / Mbed 2 deprecated mbed_blinky

Dependencies:   mbed Motor

Committer:
mksaga
Date:
Sat Apr 27 02:31:38 2019 +0000
Revision:
5:3b378e0659e9
Moves sensor code to sensor.cpp;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mksaga 5:3b378e0659e9 1 void sense() {
mksaga 5:3b378e0659e9 2 int num_pads = 5;
mksaga 5:3b378e0659e9 3 int pad_buffer_size = 5;
mksaga 5:3b378e0659e9 4
mksaga 5:3b378e0659e9 5 float s_w;
mksaga 5:3b378e0659e9 6 float s_e;
mksaga 5:3b378e0659e9 7 float s_s;
mksaga 5:3b378e0659e9 8 float s_n;
mksaga 5:3b378e0659e9 9 float s_c;
mksaga 5:3b378e0659e9 10
mksaga 5:3b378e0659e9 11 int avg_w;
mksaga 5:3b378e0659e9 12 int avg_e;
mksaga 5:3b378e0659e9 13 int avg_s;
mksaga 5:3b378e0659e9 14 int avg_n;
mksaga 5:3b378e0659e9 15 int avg_c;
mksaga 5:3b378e0659e9 16
mksaga 5:3b378e0659e9 17 int pad_w_i;
mksaga 5:3b378e0659e9 18 int pad_e_i;
mksaga 5:3b378e0659e9 19 int pad_s_i;
mksaga 5:3b378e0659e9 20 int pad_n_i;
mksaga 5:3b378e0659e9 21 int pad_c_i;
mksaga 5:3b378e0659e9 22
mksaga 5:3b378e0659e9 23 int* padw_data = new int[pad_buffer_size];
mksaga 5:3b378e0659e9 24 int* pade_data = new int[pad_buffer_size];
mksaga 5:3b378e0659e9 25 int* pads_data = new int[pad_buffer_size];
mksaga 5:3b378e0659e9 26 int* padn_data = new int[pad_buffer_size];
mksaga 5:3b378e0659e9 27 int* padc_data = new int[pad_buffer_size];
mksaga 5:3b378e0659e9 28
mksaga 5:3b378e0659e9 29 int newest_w;
mksaga 5:3b378e0659e9 30 int newest_e;
mksaga 5:3b378e0659e9 31 int newest_s;
mksaga 5:3b378e0659e9 32 int newest_n;
mksaga 5:3b378e0659e9 33 int newest_c;
mksaga 5:3b378e0659e9 34
mksaga 5:3b378e0659e9 35 int total_w;
mksaga 5:3b378e0659e9 36 int total_e;
mksaga 5:3b378e0659e9 37 int total_s;
mksaga 5:3b378e0659e9 38 int total_n;
mksaga 5:3b378e0659e9 39 int total_c;
mksaga 5:3b378e0659e9 40
mksaga 5:3b378e0659e9 41 int outlier_countW;
mksaga 5:3b378e0659e9 42 int outlier_countE;
mksaga 5:3b378e0659e9 43 int outlier_countS;
mksaga 5:3b378e0659e9 44 int outlier_countN;
mksaga 5:3b378e0659e9 45 int outlier_countC;
mksaga 5:3b378e0659e9 46
mksaga 5:3b378e0659e9 47 /*
mksaga 5:3b378e0659e9 48 0 : east
mksaga 5:3b378e0659e9 49 1 : north
mksaga 5:3b378e0659e9 50 2 : west
mksaga 5:3b378e0659e9 51 3 : south
mksaga 5:3b378e0659e9 52 4 : center
mksaga 5:3b378e0659e9 53 */
mksaga 5:3b378e0659e9 54
mksaga 5:3b378e0659e9 55 float* readings = new float[num_pads];
mksaga 5:3b378e0659e9 56 readings[0] = s_e;
mksaga 5:3b378e0659e9 57 readings[1] = s_n;
mksaga 5:3b378e0659e9 58 readings[2] = s_w;
mksaga 5:3b378e0659e9 59 readings[3] = s_s;
mksaga 5:3b378e0659e9 60 readings[4] = s_c;
mksaga 5:3b378e0659e9 61
mksaga 5:3b378e0659e9 62 int* averages = new int[num_pads];
mksaga 5:3b378e0659e9 63 averages[0] = avg_e;
mksaga 5:3b378e0659e9 64 averages[1] = avg_n;
mksaga 5:3b378e0659e9 65 averages[2] = avg_w;
mksaga 5:3b378e0659e9 66 averages[3] = avg_s;
mksaga 5:3b378e0659e9 67 averages[4] = avg_c;
mksaga 5:3b378e0659e9 68
mksaga 5:3b378e0659e9 69
mksaga 5:3b378e0659e9 70 int* indices = new int[num_pads];
mksaga 5:3b378e0659e9 71 indices[0] = pad_e_i;
mksaga 5:3b378e0659e9 72 indices[1] = pad_n_i;
mksaga 5:3b378e0659e9 73 indices[2] = pad_w_i;
mksaga 5:3b378e0659e9 74 indices[3] = pad_s_i;
mksaga 5:3b378e0659e9 75 indices[4] = pad_c_i;
mksaga 5:3b378e0659e9 76
mksaga 5:3b378e0659e9 77 int** data_arrs = new int*[num_pads];
mksaga 5:3b378e0659e9 78 data_arrs[0] = pade_data;
mksaga 5:3b378e0659e9 79 data_arrs[1] = padn_data;
mksaga 5:3b378e0659e9 80 data_arrs[2] = padw_data;
mksaga 5:3b378e0659e9 81 data_arrs[3] = pads_data;
mksaga 5:3b378e0659e9 82 data_arrs[4] = padc_data;
mksaga 5:3b378e0659e9 83
mksaga 5:3b378e0659e9 84 int* newest_vals = new int[num_pads];
mksaga 5:3b378e0659e9 85 newest_vals[0] = newest_e;
mksaga 5:3b378e0659e9 86 newest_vals[1] = newest_n;
mksaga 5:3b378e0659e9 87 newest_vals[2] = newest_w;
mksaga 5:3b378e0659e9 88 newest_vals[3] = newest_s;
mksaga 5:3b378e0659e9 89 newest_vals[4] = newest_c;
mksaga 5:3b378e0659e9 90
mksaga 5:3b378e0659e9 91 int* totals = new int[num_pads];
mksaga 5:3b378e0659e9 92 totals[0] = total_e;
mksaga 5:3b378e0659e9 93 totals[1] = total_n;
mksaga 5:3b378e0659e9 94 totals[2] = total_w;
mksaga 5:3b378e0659e9 95 totals[3] = total_s;
mksaga 5:3b378e0659e9 96 totals[4] = total_c;
mksaga 5:3b378e0659e9 97
mksaga 5:3b378e0659e9 98 int* outlier_cts = new int[num_pads];
mksaga 5:3b378e0659e9 99 outlier_cts[0] = outlier_countE;
mksaga 5:3b378e0659e9 100 outlier_cts[1] = outlier_countN;
mksaga 5:3b378e0659e9 101 outlier_cts[2] = outlier_countW;
mksaga 5:3b378e0659e9 102 outlier_cts[3] = outlier_countS;
mksaga 5:3b378e0659e9 103 outlier_cts[4] = outlier_countC;
mksaga 5:3b378e0659e9 104
mksaga 5:3b378e0659e9 105
mksaga 5:3b378e0659e9 106 /*
mksaga 5:3b378e0659e9 107 id1
mksaga 5:3b378e0659e9 108
mksaga 5:3b378e0659e9 109 id2 id4 id0
mksaga 5:3b378e0659e9 110
mksaga 5:3b378e0659e9 111 id3
mksaga 5:3b378e0659e9 112 */
mksaga 5:3b378e0659e9 113
mksaga 5:3b378e0659e9 114 //char* out = new char[40];
mksaga 5:3b378e0659e9 115
mksaga 5:3b378e0659e9 116
mksaga 5:3b378e0659e9 117 // specify period first
mksaga 5:3b378e0659e9 118 //pump.period(1.0f); // 4 second period
mksaga 5:3b378e0659e9 119 //pump.write(0.25f); // 50% duty cycle, relative to period
mksaga 5:3b378e0659e9 120 //led = 0.5f; // shorthand for led.write()
mksaga 5:3b378e0659e9 121 //led.pulsewidth(2); // alternative to led.write, set duty cycle time in seconds
mksaga 5:3b378e0659e9 122 //pump.write(1);
mksaga 5:3b378e0659e9 123
mksaga 5:3b378e0659e9 124
mksaga 5:3b378e0659e9 125
mksaga 5:3b378e0659e9 126 //int i;
mksaga 5:3b378e0659e9 127
mksaga 5:3b378e0659e9 128
mksaga 5:3b378e0659e9 129
mksaga 5:3b378e0659e9 130 //int avg;
mksaga 5:3b378e0659e9 131
mksaga 5:3b378e0659e9 132 /*
mksaga 5:3b378e0659e9 133 while(1) {
mksaga 5:3b378e0659e9 134
mksaga 5:3b378e0659e9 135 i++;
mksaga 5:3b378e0659e9 136 pump.write(1);
mksaga 5:3b378e0659e9 137 if (i == 1000) {
mksaga 5:3b378e0659e9 138 pump.write(0);
mksaga 5:3b378e0659e9 139 while(1) {};
mksaga 5:3b378e0659e9 140 }
mksaga 5:3b378e0659e9 141
mksaga 5:3b378e0659e9 142 }
mksaga 5:3b378e0659e9 143 */
mksaga 5:3b378e0659e9 144 /*
mksaga 5:3b378e0659e9 145 s_w = senseW.read();
mksaga 5:3b378e0659e9 146 s_e = senseE.read();
mksaga 5:3b378e0659e9 147 s_n = senseN.read();
mksaga 5:3b378e0659e9 148 s_s = senseS.read();
mksaga 5:3b378e0659e9 149 s_c = senseC.read();
mksaga 5:3b378e0659e9 150 */
mksaga 5:3b378e0659e9 151
mksaga 5:3b378e0659e9 152 /*
mksaga 5:3b378e0659e9 153 newest_w = (int) s_w * 100;
mksaga 5:3b378e0659e9 154 newest_e = (int) s_e * 100;
mksaga 5:3b378e0659e9 155 newest_n = (int) s_n * 100;
mksaga 5:3b378e0659e9 156 newest_s = (int) s_s * 100;
mksaga 5:3b378e0659e9 157 newest_c = (int) s_c * 100;
mksaga 5:3b378e0659e9 158 */
mksaga 5:3b378e0659e9 159
mksaga 5:3b378e0659e9 160 /*
mksaga 5:3b378e0659e9 161 printf(" %1.2f \n", s_n);
mksaga 5:3b378e0659e9 162 printf("%1.2f %1.2f %1.2f\n", s_w, s_c, s_e);
mksaga 5:3b378e0659e9 163 printf (" %1.2f \n\n", s_s);
mksaga 5:3b378e0659e9 164 */
mksaga 5:3b378e0659e9 165
mksaga 5:3b378e0659e9 166 /*
mksaga 5:3b378e0659e9 167 for (i=0; i<num_pads; i++) {
mksaga 5:3b378e0659e9 168
mksaga 5:3b378e0659e9 169 if (i==0) {
mksaga 5:3b378e0659e9 170 readings[0] = senseE.read();
mksaga 5:3b378e0659e9 171 } else if (i==1) {
mksaga 5:3b378e0659e9 172 readings[1] = senseN.read();
mksaga 5:3b378e0659e9 173 } else if (i==2) {
mksaga 5:3b378e0659e9 174 readings[2] = senseW.read();
mksaga 5:3b378e0659e9 175 } else if (i==3) {
mksaga 5:3b378e0659e9 176 readings[3] = senseS.read();
mksaga 5:3b378e0659e9 177 } else if (i==4) {
mksaga 5:3b378e0659e9 178 readings[4] = senseC.read();
mksaga 5:3b378e0659e9 179 }
mksaga 5:3b378e0659e9 180
mksaga 5:3b378e0659e9 181 // maybe << 7 to make this faster?
mksaga 5:3b378e0659e9 182 newest_vals[i] = readings[i] * 100;
mksaga 5:3b378e0659e9 183
mksaga 5:3b378e0659e9 184
mksaga 5:3b378e0659e9 185
mksaga 5:3b378e0659e9 186 if (indices[i] < pad_buffer_size - 1) {
mksaga 5:3b378e0659e9 187 data_arrs[i][indices[i]] = newest_vals[i];
mksaga 5:3b378e0659e9 188 totals[i] += newest_vals[i];
mksaga 5:3b378e0659e9 189 indices[i]++;
mksaga 5:3b378e0659e9 190 } else {
mksaga 5:3b378e0659e9 191 // get index of last updated value
mksaga 5:3b378e0659e9 192 indices[i] = (indices[i] + 1) % pad_buffer_size;
mksaga 5:3b378e0659e9 193 // remove oldest value from the total
mksaga 5:3b378e0659e9 194 totals[i] -= data_arrs[i][indices[i]];
mksaga 5:3b378e0659e9 195 // update loc. of oldest value with new value
mksaga 5:3b378e0659e9 196 data_arrs[i][indices[i]] = newest_vals[i];
mksaga 5:3b378e0659e9 197 // update total w/ newest value
mksaga 5:3b378e0659e9 198 totals[i] += newest_vals[i];
mksaga 5:3b378e0659e9 199 }
mksaga 5:3b378e0659e9 200 averages[i] = totals[i] / pad_buffer_size;
mksaga 5:3b378e0659e9 201 }
mksaga 5:3b378e0659e9 202 printf(" %2i \n", (int) newest_vals[1]);
mksaga 5:3b378e0659e9 203 printf("%2i %2i %2i\n", (int) newest_vals[2], (int) newest_vals[4], (int) newest_vals[0]);
mksaga 5:3b378e0659e9 204 printf (" %2i \n\n", (int) newest_vals[3]);
mksaga 5:3b378e0659e9 205
mksaga 5:3b378e0659e9 206 // is newest E value more than 1.5x average?
mksaga 5:3b378e0659e9 207 if (newest_vals[0] > averages[0] + (averages[0] / 2)) {
mksaga 5:3b378e0659e9 208 if (outlier_cts[0] == 2) {
mksaga 5:3b378e0659e9 209 led_e = 1;
mksaga 5:3b378e0659e9 210 } else {
mksaga 5:3b378e0659e9 211 outlier_cts[0]++;
mksaga 5:3b378e0659e9 212 }
mksaga 5:3b378e0659e9 213 } else {
mksaga 5:3b378e0659e9 214 outlier_cts[0] = 0;
mksaga 5:3b378e0659e9 215 led_e = 0;
mksaga 5:3b378e0659e9 216 }
mksaga 5:3b378e0659e9 217
mksaga 5:3b378e0659e9 218 if (newest_vals[1] > averages[1] + (averages[1] / 2)) {
mksaga 5:3b378e0659e9 219 if (outlier_cts[1] == 2) {
mksaga 5:3b378e0659e9 220 led_n = 1;
mksaga 5:3b378e0659e9 221 } else {
mksaga 5:3b378e0659e9 222 outlier_cts[1]++;
mksaga 5:3b378e0659e9 223 }
mksaga 5:3b378e0659e9 224 } else {
mksaga 5:3b378e0659e9 225 outlier_cts[1] = 0;
mksaga 5:3b378e0659e9 226 led_n = 0;
mksaga 5:3b378e0659e9 227 }
mksaga 5:3b378e0659e9 228
mksaga 5:3b378e0659e9 229 if (newest_vals[2] > averages[2] + (averages[2] / 2)) {
mksaga 5:3b378e0659e9 230 if (outlier_cts[2] == 2) {
mksaga 5:3b378e0659e9 231 led_w = 1;
mksaga 5:3b378e0659e9 232 } else {
mksaga 5:3b378e0659e9 233 outlier_cts[2]++;
mksaga 5:3b378e0659e9 234 }
mksaga 5:3b378e0659e9 235 } else {
mksaga 5:3b378e0659e9 236 outlier_cts[2] = 0;
mksaga 5:3b378e0659e9 237 led_w = 0;
mksaga 5:3b378e0659e9 238 }
mksaga 5:3b378e0659e9 239
mksaga 5:3b378e0659e9 240 if (newest_vals[3] > averages[3] + (averages[3] / 2)) {
mksaga 5:3b378e0659e9 241 if (outlier_cts[3] == 2) {
mksaga 5:3b378e0659e9 242 led_s = 1;
mksaga 5:3b378e0659e9 243 } else {
mksaga 5:3b378e0659e9 244 outlier_cts[3]++;
mksaga 5:3b378e0659e9 245 }
mksaga 5:3b378e0659e9 246 } else {
mksaga 5:3b378e0659e9 247 outlier_cts[3] = 0;
mksaga 5:3b378e0659e9 248 led_s = 0;
mksaga 5:3b378e0659e9 249 }
mksaga 5:3b378e0659e9 250
mksaga 5:3b378e0659e9 251 if (newest_vals[4] > averages[4] + (averages[4] / 2)) {
mksaga 5:3b378e0659e9 252 if (outlier_cts[4] == 2) {
mksaga 5:3b378e0659e9 253 led_c = 1;
mksaga 5:3b378e0659e9 254 } else {
mksaga 5:3b378e0659e9 255 outlier_cts[4]++;
mksaga 5:3b378e0659e9 256 }
mksaga 5:3b378e0659e9 257 } else {
mksaga 5:3b378e0659e9 258 outlier_cts[4] = 0;
mksaga 5:3b378e0659e9 259 led_c = 0;
mksaga 5:3b378e0659e9 260 }
mksaga 5:3b378e0659e9 261 */
mksaga 5:3b378e0659e9 262 //wait(1);
mksaga 5:3b378e0659e9 263
mksaga 5:3b378e0659e9 264
mksaga 5:3b378e0659e9 265 }