OzerDrive / Mbed 2 deprecated mbed_blinky

Dependencies:   mbed Motor

Committer:
mksaga
Date:
Thu Apr 25 22:06:22 2019 +0000
Revision:
3:7e158df628f1
Parent:
2:66ab94f69a1a
Child:
4:fd25ded02b89
Attempts to read from 5 sensors and print output to terminal;

Who changed what in which revision?

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