![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
HI
Dependencies: Motor TCS3472_I2C mbed
Diff: main.cpp
- Revision:
- 1:9eb8d4e6a719
- Parent:
- 0:1cbed7d36912
- Child:
- 2:a681e7e4bd72
--- a/main.cpp Fri Apr 24 00:53:50 2015 +0000 +++ b/main.cpp Fri Apr 24 02:02:48 2015 +0000 @@ -1,9 +1,16 @@ #include "mbed.h" //includes this library for all mbed functions #include "TCS3472_I2C.h" //includes the library for the RGB sensor #include "Motor.h" +AnalogIn sonic(p15); Motor R(p24, p25, p26); Motor L(p21, p22, p23); +float data; //ULTRASONIC SENSOR +float sum; +float average; +int p; +int count; + PwmOut RGBsensorLED(p22); //established pin to power the LED on the sensor TCS3472_I2C RGBsensor(p9, p10); //establishes pins for the RGB sensor. @@ -12,6 +19,7 @@ int main() //starts the program { + int RGB_data[4]; //declares an array to store the data read from the RGB sensor float PWMbrightness = 1.0; //declares float for LED brightness @@ -21,51 +29,69 @@ pc.baud(921600); //sets the baud rate of the serial connection while (1) { //loops the program until is broken - - int colorcount[3] = {0,0,0}; //establishes an array for the possible regions the car is in - int scan = 0; //variable for for loop - - for (scan=0; scan<10; scan+=1) { + data=sonic.read(); + sum=0; + for(p=0; p<=50; p++) { + sum =sum+data; + } + average= sum/50; + printf(" average is %f \n",average); - RGBsensor.getAllColors(RGB_data); //read data from sensor for red, green, and blue along with magnitude - - int light = RGB_data[0]; //sets a variable for the light data so I don't have to type that every time - int red = RGB_data[1]; //sets a variable for the red data so I don't have to type that every time - int green = RGB_data[2]; //sets a variable for the blue data so I don't have to type that every time - int blue = RGB_data[3]; //sets a variable for the green data so I don't have to type that every time + if(average> 0.026) { + int colorcount[3] = {0,0,0}; //establishes an array for the possible regions the car is in + int scan = 0; //variable for for loop + + for (scan=0; scan<10; scan+=1) { + + RGBsensor.getAllColors(RGB_data); //read data from sensor for red, green, and blue along with magnitude + + int light = RGB_data[0]; //sets a variable for the light data so I don't have to type that every time + int red = RGB_data[1]; //sets a variable for the red data so I don't have to type that every time + int green = RGB_data[2]; //sets a variable for the blue data so I don't have to type that every time + int blue = RGB_data[3]; //sets a variable for the green data so I don't have to type that every time - if ( (abs((1.6822*red + 15.609)-light) < 10) && (abs((4.2525*green - 37.993)-light) < 10) && (abs((6.5565*blue - 44.793 )-light) < 10) ) { - colorcount[0] += 1; //car is in red - L.speed(0.0); - R.speed(0.2); + if ( (abs((1.6822*red + 15.609)-light) < 10) && (abs((4.2525*green - 37.993)-light) < 10) && (abs((6.5565*blue - 44.793 )-light) < 10) ) { + colorcount[0] += 1; //car is in red + L.speed(0.0); + R.speed(0.2); + } + + if ( (abs((3.7757*red - 134.86)-light) < 10) && (abs((3.4282*green - 8.791 )-light) < 10) && (abs((2.5685*blue + 63.205)-light) < 10) ) { + colorcount[1] += 1; //car is in blue + R.speed(0.5); + L.speed(0.5); + } + + if ( (abs((3.8225*red - 138.09)-light) < 10) && (abs((2.1032*green + 39.654)-light) < 10) && (abs((5.3619*blue - 2.7884)-light) < 10) ) { + colorcount[2] += 1; //car is in green + L.speed(0.2); + R.speed(0.0); + } } - - if ( (abs((3.7757*red - 134.86)-light) < 10) && (abs((3.4282*green - 8.791 )-light) < 10) && (abs((2.5685*blue + 63.205)-light) < 10) ) { - colorcount[1] += 1; //car is in blue - R.speed(0.5); - L.speed(0.5); + if (colorcount[0] >= 7) { //data reads in the red + pc.printf("Making a right turn. \n"); //print to tera term + } - - if ( (abs((3.8225*red - 138.09)-light) < 10) && (abs((2.1032*green + 39.654)-light) < 10) && (abs((5.3619*blue - 2.7884)-light) < 10) ) { - colorcount[2] += 1; //car is in green - L.speed(0.2); - R.speed(0.0); + if (colorcount[1] >= 7) { //data reads in the blue + pc.printf("Driving straight. \n"); //print to tera term + + } + if (colorcount[2] >= 7) { //data reads in the green + pc.printf("Making a left turn. \n"); //print to tera term + } } - if (colorcount[0] >= 7) { //data reads in the red - pc.printf("Making a right turn. \n"); //print to tera term - + if ((average> 0.014) && (average < 0.026)) { + + L.speed(0.2); + R.speed(0.2); + printf("%f \n",average); } - if (colorcount[1] >= 7) { //data reads in the blue - pc.printf("Driving straight. \n"); //print to tera term - + if(average< 0.014) { + wait(0.1); + L.speed(0.0); + R.speed(0.0); } - if (colorcount[2] >= 7) { //data reads in the green - pc.printf("Making a left turn. \n"); //print to tera term - - } - - } } \ No newline at end of file