a beter verjin

Dependencies:   m3pi mbed ADJD-S371_ColourSens

Fork of TestColorSensor by Kyle Chiang

Committer:
nolanwagener
Date:
Tue Dec 03 07:39:38 2013 +0000
Revision:
5:3dd9b0a35aee
Parent:
4:f38d0db83e1c
Child:
7:10e1ec0e8179
first version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TaintedTruth 0:1eada136b388 1 #include "mbed.h"
TaintedTruth 0:1eada136b388 2 #include "m3pi.h"
nolanwagener 5:3dd9b0a35aee 3 #include <ADJDColourSensor.h>
TaintedTruth 0:1eada136b388 4
nolanwagener 5:3dd9b0a35aee 5 #define RED 49 //((const unsigned char *)"1")
nolanwagener 5:3dd9b0a35aee 6 #define GREEN 50 //((const unsigned char *) "2")
nolanwagener 5:3dd9b0a35aee 7 #define BLUE 51 //((const unsigned char *) "3")
nolanwagener 5:3dd9b0a35aee 8 #define BROWN 52 //((cont unsigned char *) "4")
nolanwagener 5:3dd9b0a35aee 9 #define BLACK 53 // ((const unsigned char *) "5")
nolanwagener 5:3dd9b0a35aee 10 #define YELLOW 54
nolanwagener 5:3dd9b0a35aee 11 #define WHITE 55
nolanwagener 5:3dd9b0a35aee 12 #define TEST 56 // ((const unsigned char *) "6")
nolanwagener 5:3dd9b0a35aee 13 #define NUM_OF_WEIGHTS 7
nolanwagener 5:3dd9b0a35aee 14 #define NUM_OF_TESTS 25
nolanwagener 5:3dd9b0a35aee 15
nolanwagener 5:3dd9b0a35aee 16 //DigitalOut sensorLED(p8);
nolanwagener 5:3dd9b0a35aee 17 //I2C colorSensor(p28, p27); //SDA, SCL
TaintedTruth 2:5c0159599726 18 Serial bt(p13, p14); // tx, rx
nolanwagener 5:3dd9b0a35aee 19 ADJDColourSensor colorSensor(p28, p27, p8);
TaintedTruth 0:1eada136b388 20
nolanwagener 5:3dd9b0a35aee 21 //const int addr_write = 0x74 << 1;
nolanwagener 5:3dd9b0a35aee 22 //const int addr_read = addr_write + 0x1;
TaintedTruth 1:d481b2912c2a 23 m3pi m3pi;
TaintedTruth 1:d481b2912c2a 24
nolanwagener 5:3dd9b0a35aee 25 void normalize(double* feature) {
nolanwagener 5:3dd9b0a35aee 26 double magnitude = sqrt(feature[0] * feature[0] + feature[1] * feature[1] + feature[2] * feature[2] + feature[3] * feature[3]);
nolanwagener 5:3dd9b0a35aee 27 feature[0] /= magnitude;
nolanwagener 5:3dd9b0a35aee 28 feature[1] /= magnitude;
nolanwagener 5:3dd9b0a35aee 29 feature[2] /= magnitude;
nolanwagener 5:3dd9b0a35aee 30 feature[3] /= magnitude;
nolanwagener 5:3dd9b0a35aee 31 }
nolanwagener 5:3dd9b0a35aee 32
nolanwagener 5:3dd9b0a35aee 33 void takeMeasurements(int numberOfTests) {
nolanwagener 5:3dd9b0a35aee 34 int redTotal = 0;
nolanwagener 5:3dd9b0a35aee 35 int greenTotal = 0;
nolanwagener 5:3dd9b0a35aee 36 int blueTotal = 0;
nolanwagener 5:3dd9b0a35aee 37 int clearTotal = 0;
nolanwagener 5:3dd9b0a35aee 38 for(int i = 0; i < numberOfTests; i++) {
nolanwagener 5:3dd9b0a35aee 39 colorSensor.readColors();
nolanwagener 5:3dd9b0a35aee 40 redTotal += colorSensor.red();
nolanwagener 5:3dd9b0a35aee 41 greenTotal += colorSensor.green();
nolanwagener 5:3dd9b0a35aee 42 blueTotal += colorSensor.blue();
nolanwagener 5:3dd9b0a35aee 43 clearTotal += colorSensor.clear();
nolanwagener 5:3dd9b0a35aee 44 }
nolanwagener 5:3dd9b0a35aee 45 bt.printf("R:%d, G:%d, B:%d, C:%d\r", redTotal / numberOfTests, greenTotal / numberOfTests, blueTotal / numberOfTests, clearTotal / numberOfTests);
nolanwagener 5:3dd9b0a35aee 46 }
nolanwagener 5:3dd9b0a35aee 47
nolanwagener 5:3dd9b0a35aee 48 double max(double* values) {
nolanwagener 5:3dd9b0a35aee 49 double currentMax = values[0];
nolanwagener 5:3dd9b0a35aee 50
nolanwagener 5:3dd9b0a35aee 51 for(int i = 1; i < NUM_OF_WEIGHTS; i++) {
nolanwagener 5:3dd9b0a35aee 52 if(values[i] > currentMax)
nolanwagener 5:3dd9b0a35aee 53 currentMax = values[i];
nolanwagener 5:3dd9b0a35aee 54 }
nolanwagener 5:3dd9b0a35aee 55
nolanwagener 5:3dd9b0a35aee 56 return currentMax;
nolanwagener 5:3dd9b0a35aee 57
nolanwagener 5:3dd9b0a35aee 58 }
nolanwagener 5:3dd9b0a35aee 59
nolanwagener 5:3dd9b0a35aee 60 int max(int* values) {
nolanwagener 5:3dd9b0a35aee 61 int currentMax = values[0];
nolanwagener 5:3dd9b0a35aee 62
nolanwagener 5:3dd9b0a35aee 63 for(int i = 1; i < NUM_OF_WEIGHTS; i++) {
nolanwagener 5:3dd9b0a35aee 64 if(values[i] > currentMax)
nolanwagener 5:3dd9b0a35aee 65 currentMax = values[i];
nolanwagener 5:3dd9b0a35aee 66 }
nolanwagener 5:3dd9b0a35aee 67
nolanwagener 5:3dd9b0a35aee 68 return currentMax;
nolanwagener 5:3dd9b0a35aee 69
nolanwagener 5:3dd9b0a35aee 70 }
nolanwagener 5:3dd9b0a35aee 71
nolanwagener 5:3dd9b0a35aee 72 void correctWeights(double* wrongWeights, double* properWeights) {
nolanwagener 5:3dd9b0a35aee 73 double colors[] = { (double) colorSensor.red(), (double) colorSensor.green(), (double) colorSensor.blue() };
nolanwagener 5:3dd9b0a35aee 74 normalize(colors);
nolanwagener 5:3dd9b0a35aee 75 wrongWeights[0] -= colors[0]; //colorSensor.red();
nolanwagener 5:3dd9b0a35aee 76 wrongWeights[1] -= colors[1]; //colorSensor.green();
nolanwagener 5:3dd9b0a35aee 77 wrongWeights[2] -= colors[2]; //colorSensor.blue();
nolanwagener 5:3dd9b0a35aee 78 properWeights[0] += colors[0]; //colorSensor.red();
nolanwagener 5:3dd9b0a35aee 79 properWeights[1] += colors[1]; //colorSensor.green();
nolanwagener 5:3dd9b0a35aee 80 properWeights[2] += colors[2]; //colorSensor.blue();
nolanwagener 5:3dd9b0a35aee 81
nolanwagener 5:3dd9b0a35aee 82 normalize(wrongWeights);
nolanwagener 5:3dd9b0a35aee 83 normalize(properWeights);
nolanwagener 5:3dd9b0a35aee 84 }
nolanwagener 5:3dd9b0a35aee 85
nolanwagener 5:3dd9b0a35aee 86 void correctWeights(int* wrongWeights, int* properWeights) {
nolanwagener 5:3dd9b0a35aee 87 wrongWeights[0] -= colorSensor.red();
nolanwagener 5:3dd9b0a35aee 88 wrongWeights[1] -= colorSensor.green();
nolanwagener 5:3dd9b0a35aee 89 wrongWeights[2] -= colorSensor.blue();
nolanwagener 5:3dd9b0a35aee 90 properWeights[0] += colorSensor.red();
nolanwagener 5:3dd9b0a35aee 91 properWeights[1] += colorSensor.green();
nolanwagener 5:3dd9b0a35aee 92 properWeights[2] += colorSensor.blue();
nolanwagener 5:3dd9b0a35aee 93 }
nolanwagener 5:3dd9b0a35aee 94
nolanwagener 5:3dd9b0a35aee 95
nolanwagener 5:3dd9b0a35aee 96 void sendData(char* color, double* redWeights, double* greenWeights, double* blueWeights, double* brownWeights, double* blackWeights, double* yellowWeights, double* whiteWeights) {
nolanwagener 5:3dd9b0a35aee 97 bt.printf("%s,%d,%d,%d,%d,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f\r", color, colorSensor.red(), colorSensor.green(), colorSensor.blue(), colorSensor.clear(),redWeights[0], redWeights[1], redWeights[2], redWeights[3], greenWeights[0], greenWeights[1], greenWeights[2], greenWeights[3], blueWeights[0], blueWeights[1], blueWeights[2], blueWeights[3], brownWeights[0], brownWeights[1], brownWeights[2], brownWeights[3], blackWeights[0], blackWeights[1], blackWeights[2], blackWeights[3], yellowWeights[0], yellowWeights[1], yellowWeights[2], yellowWeights[3], whiteWeights[0], whiteWeights[1], whiteWeights[2], whiteWeights[3]);
nolanwagener 5:3dd9b0a35aee 98 }
nolanwagener 5:3dd9b0a35aee 99
nolanwagener 5:3dd9b0a35aee 100 void sendData(char* color, int* redWeights, int* greenWeights, int* blueWeights, int* brownWeights, int* blackWeights, int* yellowWeights, int* whiteWeights) {
nolanwagener 5:3dd9b0a35aee 101 bt.printf("%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\r", color, colorSensor.red(), colorSensor.green(), colorSensor.blue(), colorSensor.clear(),redWeights[0], redWeights[1], redWeights[2], redWeights[3], greenWeights[0], greenWeights[1], greenWeights[2], greenWeights[3], blueWeights[0], blueWeights[1], blueWeights[2], blueWeights[3], brownWeights[0], brownWeights[1], brownWeights[2], brownWeights[3], blackWeights[0], blackWeights[1], blackWeights[2], blackWeights[3], yellowWeights[0], yellowWeights[1], yellowWeights[2], yellowWeights[3], whiteWeights[0], whiteWeights[1], whiteWeights[3], whiteWeights[3]);
nolanwagener 5:3dd9b0a35aee 102 }
nolanwagener 5:3dd9b0a35aee 103
nolanwagener 5:3dd9b0a35aee 104 void calibrate(double* weights) {
nolanwagener 5:3dd9b0a35aee 105 int redTotal = 0;
nolanwagener 5:3dd9b0a35aee 106 int greenTotal = 0;
nolanwagener 5:3dd9b0a35aee 107 int blueTotal = 0;
nolanwagener 5:3dd9b0a35aee 108 int clearTotal = 0;
nolanwagener 5:3dd9b0a35aee 109 for(int i = 0; i < NUM_OF_TESTS; i++) {
nolanwagener 5:3dd9b0a35aee 110 colorSensor.readColors();
nolanwagener 5:3dd9b0a35aee 111 redTotal += colorSensor.red();
nolanwagener 5:3dd9b0a35aee 112 greenTotal += colorSensor.green();
nolanwagener 5:3dd9b0a35aee 113 blueTotal += colorSensor.blue();
nolanwagener 5:3dd9b0a35aee 114 clearTotal += colorSensor.clear();
nolanwagener 5:3dd9b0a35aee 115 }
nolanwagener 5:3dd9b0a35aee 116 weights[0] = (double) redTotal;
nolanwagener 5:3dd9b0a35aee 117 weights[1] = (double) greenTotal;
nolanwagener 5:3dd9b0a35aee 118 weights[2] = (double) blueTotal;
nolanwagener 5:3dd9b0a35aee 119 weights[3] = (double) clearTotal;
nolanwagener 5:3dd9b0a35aee 120 normalize(weights);
nolanwagener 5:3dd9b0a35aee 121
nolanwagener 5:3dd9b0a35aee 122
nolanwagener 5:3dd9b0a35aee 123 }
TaintedTruth 1:d481b2912c2a 124
nolanwagener 5:3dd9b0a35aee 125 /*
nolanwagener 5:3dd9b0a35aee 126 void calibrate(int* redWeights, int* greenWeights, int* blueWeights, int* brownWeights, int* blackWeights, int* desiredWeights) {
nolanwagener 5:3dd9b0a35aee 127 colorSensor.readColors();
nolanwagener 5:3dd9b0a35aee 128 int redProduct = colorSensor.dotProduct(redWeights);
nolanwagener 5:3dd9b0a35aee 129 int greenProduct = colorSensor.dotProduct(greenWeights);
nolanwagener 5:3dd9b0a35aee 130 int blueProduct = colorSensor.dotProduct(blueWeights);
nolanwagener 5:3dd9b0a35aee 131 int brownProduct = colorSensor.dotProduct(brownWeights);
nolanwagener 5:3dd9b0a35aee 132 int blackProduct = colorSensor.dotProduct(blackWeights);
nolanwagener 5:3dd9b0a35aee 133 int products[] = {redProduct, greenProduct, blueProduct, brownProduct, blackProduct};
nolanwagener 5:3dd9b0a35aee 134 int maxProduct = max(products);
nolanwagener 5:3dd9b0a35aee 135 char* color;
nolanwagener 5:3dd9b0a35aee 136 if(colorSensor.dotProduct(desiredWeights) == maxProduct) {
nolanwagener 5:3dd9b0a35aee 137 if(redWeights == desiredWeights) {
nolanwagener 5:3dd9b0a35aee 138 color = "Red";
nolanwagener 5:3dd9b0a35aee 139 } else if(greenWeights == desiredWeights) {
nolanwagener 5:3dd9b0a35aee 140 color = "Green";
nolanwagener 5:3dd9b0a35aee 141 } else if(blueWeights == desiredWeights) {
nolanwagener 5:3dd9b0a35aee 142 color = "Blue";
nolanwagener 5:3dd9b0a35aee 143 } else if(brownWeights == desiredWeights) {
nolanwagener 5:3dd9b0a35aee 144 color = "Brown";
nolanwagener 5:3dd9b0a35aee 145 } else if(blackWeights == desiredWeights) {
nolanwagener 5:3dd9b0a35aee 146 color = "Black";
nolanwagener 5:3dd9b0a35aee 147 }
nolanwagener 5:3dd9b0a35aee 148 } else if(redProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 149 correctWeights(redWeights, desiredWeights);
nolanwagener 5:3dd9b0a35aee 150 color = "Red";
nolanwagener 5:3dd9b0a35aee 151 } else if(greenProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 152 correctWeights(greenWeights, desiredWeights);
nolanwagener 5:3dd9b0a35aee 153 color = "Green";
nolanwagener 5:3dd9b0a35aee 154 } else if(blueProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 155 correctWeights(blueWeights, desiredWeights);
nolanwagener 5:3dd9b0a35aee 156 color = "Blue";
nolanwagener 5:3dd9b0a35aee 157 } else if(brownProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 158 correctWeights(brownWeights, desiredWeights);
nolanwagener 5:3dd9b0a35aee 159 color = "Brown";
nolanwagener 5:3dd9b0a35aee 160 } else if(blackProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 161 correctWeights(blackWeights, desiredWeights);
nolanwagener 5:3dd9b0a35aee 162 color = "Black";
nolanwagener 5:3dd9b0a35aee 163 }
nolanwagener 5:3dd9b0a35aee 164 //sendData(color, redWeights, greenWeights, blueWeights, brownWeights, blackWeights);
nolanwagener 5:3dd9b0a35aee 165 } */
nolanwagener 5:3dd9b0a35aee 166
nolanwagener 5:3dd9b0a35aee 167 void measure(double* redWeights, double* greenWeights, double* blueWeights, double* brownWeights, double* blackWeights, double* yellowWeights, double* whiteWeights) {
nolanwagener 5:3dd9b0a35aee 168 colorSensor.readColors();
nolanwagener 5:3dd9b0a35aee 169 double redProduct = colorSensor.dotProduct(redWeights);
nolanwagener 5:3dd9b0a35aee 170 double greenProduct = colorSensor.dotProduct(greenWeights);
nolanwagener 5:3dd9b0a35aee 171 double blueProduct = colorSensor.dotProduct(blueWeights);
nolanwagener 5:3dd9b0a35aee 172 double brownProduct = colorSensor.dotProduct(brownWeights);
nolanwagener 5:3dd9b0a35aee 173 double blackProduct = colorSensor.dotProduct(blackWeights);
nolanwagener 5:3dd9b0a35aee 174 double yellowProduct = colorSensor.dotProduct(yellowWeights);
nolanwagener 5:3dd9b0a35aee 175 double whiteProduct = colorSensor.dotProduct(whiteWeights);
nolanwagener 5:3dd9b0a35aee 176 double products[] = {redProduct, greenProduct, blueProduct, brownProduct, blackProduct, yellowProduct, whiteProduct};
nolanwagener 5:3dd9b0a35aee 177 double maxProduct = max(products);
nolanwagener 5:3dd9b0a35aee 178 char* color;
nolanwagener 5:3dd9b0a35aee 179 if(redProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 180 color = "Red";
nolanwagener 5:3dd9b0a35aee 181 } else if(greenProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 182 color = "Green";
nolanwagener 5:3dd9b0a35aee 183 } else if(blueProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 184 color = "Blue";
nolanwagener 5:3dd9b0a35aee 185 } else if(brownProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 186 color = "Brown";
nolanwagener 5:3dd9b0a35aee 187 } else if(blackProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 188 color = "Black";
nolanwagener 5:3dd9b0a35aee 189 } else if(yellowProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 190 color = "Yellow";
nolanwagener 5:3dd9b0a35aee 191 } else if(whiteProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 192 color = "White";
nolanwagener 5:3dd9b0a35aee 193 }
nolanwagener 5:3dd9b0a35aee 194 sendData(color, redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
TaintedTruth 2:5c0159599726 195 }
TaintedTruth 0:1eada136b388 196
nolanwagener 5:3dd9b0a35aee 197
nolanwagener 5:3dd9b0a35aee 198 void measure(int* redWeights, int* greenWeights, int* blueWeights, int* brownWeights, int* blackWeights, int* yellowWeights, int* whiteWeights) {
nolanwagener 5:3dd9b0a35aee 199 colorSensor.readColors();
nolanwagener 5:3dd9b0a35aee 200 int redProduct = colorSensor.dotProduct(redWeights);
nolanwagener 5:3dd9b0a35aee 201 int greenProduct = colorSensor.dotProduct(greenWeights);
nolanwagener 5:3dd9b0a35aee 202 int blueProduct = colorSensor.dotProduct(blueWeights);
nolanwagener 5:3dd9b0a35aee 203 int brownProduct = colorSensor.dotProduct(brownWeights);
nolanwagener 5:3dd9b0a35aee 204 int blackProduct = colorSensor.dotProduct(blackWeights);
nolanwagener 5:3dd9b0a35aee 205 int yellowProduct = colorSensor.dotProduct(yellowWeights);
nolanwagener 5:3dd9b0a35aee 206 int whiteProduct = colorSensor.dotProduct(whiteWeights);
nolanwagener 5:3dd9b0a35aee 207 int products[] = {redProduct, greenProduct, blueProduct, brownProduct, blackProduct, yellowProduct, whiteProduct};
nolanwagener 5:3dd9b0a35aee 208 int maxProduct = max(products);
nolanwagener 5:3dd9b0a35aee 209 char* color;
nolanwagener 5:3dd9b0a35aee 210 if(redProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 211 color = "Red";
nolanwagener 5:3dd9b0a35aee 212 } else if(greenProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 213 color = "Green";
nolanwagener 5:3dd9b0a35aee 214 } else if(blueProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 215 color = "Blue";
nolanwagener 5:3dd9b0a35aee 216 } else if(brownProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 217 color = "Brown";
nolanwagener 5:3dd9b0a35aee 218 } else if(blackProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 219 color = "Black";
nolanwagener 5:3dd9b0a35aee 220 } else if(yellowProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 221 color = "Yellow";
nolanwagener 5:3dd9b0a35aee 222 } else if(whiteProduct == maxProduct) {
nolanwagener 5:3dd9b0a35aee 223 color = "White";
nolanwagener 5:3dd9b0a35aee 224 }
nolanwagener 5:3dd9b0a35aee 225 sendData(color, redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 226 }
nolanwagener 5:3dd9b0a35aee 227
nolanwagener 5:3dd9b0a35aee 228
nolanwagener 5:3dd9b0a35aee 229
TaintedTruth 0:1eada136b388 230 int main() {
TaintedTruth 0:1eada136b388 231
TaintedTruth 2:5c0159599726 232 bt.baud(115200);
nolanwagener 5:3dd9b0a35aee 233 colorSensor.setIntegrationTimeSlot(0xff, 0xf0, 0xff, 0xff);
nolanwagener 5:3dd9b0a35aee 234 colorSensor.setCapacitors(12, 7, 2, 9);
nolanwagener 5:3dd9b0a35aee 235 //colorSensor.setIntegrationTimeSlot(0xff, 0x110, 0x104, 0xff);
nolanwagener 5:3dd9b0a35aee 236 //colorSensor.setCapacitors(7, 7, 7, 7);
nolanwagener 5:3dd9b0a35aee 237
nolanwagener 5:3dd9b0a35aee 238
nolanwagener 5:3dd9b0a35aee 239 /*
nolanwagener 5:3dd9b0a35aee 240 int redWeights[] = {100, -50, -50};
nolanwagener 5:3dd9b0a35aee 241 int greenWeights[] = {-50, 100, -50};
nolanwagener 5:3dd9b0a35aee 242 int blueWeights[] = {-50, -50, 100};
nolanwagener 5:3dd9b0a35aee 243 int brownWeights[] = {1, 0, 1};
nolanwagener 5:3dd9b0a35aee 244 int blackWeights[] = {1, 1, 1};
nolanwagener 5:3dd9b0a35aee 245 double redWeights[] = {311.4, 233.2, 217.6};
nolanwagener 5:3dd9b0a35aee 246 */
nolanwagener 5:3dd9b0a35aee 247 double redWeights[] = {318.8, 242.6, 227.4, 712.4};
nolanwagener 5:3dd9b0a35aee 248 double greenWeights[] = {206.2, 258.2, 242.6, 640.4};
nolanwagener 5:3dd9b0a35aee 249 double blueWeights[] = {190.8, 223.4, 307.6, 630.8};
nolanwagener 5:3dd9b0a35aee 250 double brownWeights[] = {-205.6, -215.0, -212.4, -588.0};
nolanwagener 5:3dd9b0a35aee 251 double blackWeights[] = {175.6, 187.6, 196.8, 530.4};
nolanwagener 5:3dd9b0a35aee 252 double yellowWeights[] = {480.8, 542.6, 315.8, 1021.2};
nolanwagener 5:3dd9b0a35aee 253 double whiteWeights[] = {455.6, 584.8, 578.8, 1021.8};
nolanwagener 5:3dd9b0a35aee 254
nolanwagener 5:3dd9b0a35aee 255
nolanwagener 5:3dd9b0a35aee 256 normalize(redWeights); normalize(greenWeights); normalize(blueWeights); normalize(brownWeights); normalize(blackWeights); normalize(yellowWeights); normalize(whiteWeights);
nolanwagener 5:3dd9b0a35aee 257 int message;
TaintedTruth 0:1eada136b388 258
TaintedTruth 0:1eada136b388 259 while(1) {
nolanwagener 5:3dd9b0a35aee 260 //takeMeasurements(20);
TaintedTruth 1:d481b2912c2a 261
TaintedTruth 3:b3c41c85fb1e 262
nolanwagener 5:3dd9b0a35aee 263 message = bt.getc();
nolanwagener 5:3dd9b0a35aee 264 //bt.printf("\r%d\r", message);
TaintedTruth 0:1eada136b388 265
nolanwagener 5:3dd9b0a35aee 266 switch(message) {
nolanwagener 5:3dd9b0a35aee 267 case RED:
nolanwagener 5:3dd9b0a35aee 268 calibrate(redWeights);
nolanwagener 5:3dd9b0a35aee 269 sendData("", redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 270 break;
nolanwagener 5:3dd9b0a35aee 271 case GREEN:
nolanwagener 5:3dd9b0a35aee 272 calibrate(greenWeights);
nolanwagener 5:3dd9b0a35aee 273 sendData("", redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 274 break;
nolanwagener 5:3dd9b0a35aee 275 case BLUE:
nolanwagener 5:3dd9b0a35aee 276 calibrate(blueWeights);
nolanwagener 5:3dd9b0a35aee 277 sendData("", redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 278 break;
nolanwagener 5:3dd9b0a35aee 279 case BROWN:
nolanwagener 5:3dd9b0a35aee 280 calibrate(brownWeights);
nolanwagener 5:3dd9b0a35aee 281 sendData("", redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 282 break;
nolanwagener 5:3dd9b0a35aee 283 case BLACK:
nolanwagener 5:3dd9b0a35aee 284 calibrate(blackWeights);
nolanwagener 5:3dd9b0a35aee 285 sendData("", redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 286 break;
nolanwagener 5:3dd9b0a35aee 287 case YELLOW:
nolanwagener 5:3dd9b0a35aee 288 calibrate(yellowWeights);
nolanwagener 5:3dd9b0a35aee 289 sendData("", redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 290 break;
nolanwagener 5:3dd9b0a35aee 291 case WHITE:
nolanwagener 5:3dd9b0a35aee 292 calibrate(whiteWeights);
nolanwagener 5:3dd9b0a35aee 293 sendData("", redWeights, greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 294 break;
nolanwagener 5:3dd9b0a35aee 295 case TEST:
nolanwagener 5:3dd9b0a35aee 296 measure(redWeights,greenWeights, blueWeights, brownWeights, blackWeights, yellowWeights, whiteWeights);
nolanwagener 5:3dd9b0a35aee 297 break;
nolanwagener 5:3dd9b0a35aee 298 default:
nolanwagener 5:3dd9b0a35aee 299 break;
nolanwagener 5:3dd9b0a35aee 300 }
TaintedTruth 0:1eada136b388 301 }
nolanwagener 5:3dd9b0a35aee 302
TaintedTruth 0:1eada136b388 303 }