Ok

Dependencies:   mbed_rtos_types Mutex mbed_rtos_storage mbed Semaphore

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers TCS34725.cpp Source File

TCS34725.cpp

00001  #include "TCS34725.h"
00002  #include "mbed.h"
00003 
00004 extern Serial pc;
00005 extern DigitalOut ledR; 
00006 extern DigitalOut ledG;
00007 extern DigitalOut ledB;
00008 uint8_t dominant_color[3]={0}; //Array that keeps count of how many times each color was dominant in the reading
00009 extern char colour_max;
00010     
00011 //Get max value (r,g,b) function
00012 char getMax(int r, int g, int b)
00013 {
00014     char result;
00015     int max_color;
00016     if (r < g) {
00017         max_color = g;
00018         result = 'g';
00019     } else {
00020         max_color= r;
00021         result = 'r';
00022     }
00023     if (max_color < b) {
00024         result = 'b';
00025     }
00026     return result;
00027 }
00028 
00029 
00030 
00031 //Switchs the color of the greatest value. 
00032 void setLedColour(){
00033          //Switch off all of them.
00034             ledR.write(1);
00035             ledG.write(1);
00036             ledB.write(1);
00037             if (colour_max == 'r') {
00038                 ledR.write(0);
00039                 pc.printf("Dominant Colour: RED\r\n");
00040             } else if(colour_max == 'g') {
00041                 pc.printf("Dominant Colour: GREEN\r\n");
00042                 ledG.write(0);
00043             } else {
00044                 pc.printf("Dominant Colour: BLUE\r\n");
00045                 ledB.write(0);
00046             }
00047          }
00048 //Prints the latest dominant color and adds it to the array.
00049 void addDominantColor(){
00050         switch ( colour_max ){
00051              case 'r':
00052              dominant_color[0]++;
00053              pc.printf("Dominant Colour: RED\r\n");
00054              break;
00055              case 'g':
00056              dominant_color[1]++;
00057              pc.printf("Dominant Colour: GREEN\r\n");
00058              break;
00059              case 'b':
00060              dominant_color[2]++;
00061              pc.printf("Dominant Colour: BLUE\r\n");
00062           }
00063     }
00064 
00065 //Prints the dominant color over a period of time, it considers cases of ties.
00066 
00067 void dominantColor(){
00068 if (dominant_color[0]>=dominant_color[1]){
00069     if (dominant_color[0]==dominant_color[1]){
00070         if (dominant_color[0]==dominant_color[2]){
00071           pc.printf("\n\rDOMINANT COLOR: RED, GREEN, BLUE\n\r");
00072           }
00073         else if (dominant_color[0]>dominant_color[2]){
00074               pc.printf("\n\rDOMINANT COLOR: RED, GREEN\n\r");
00075           }
00076         else {
00077               pc.printf("\n\rDOMINANT COLOR: BLUE\n\r");
00078               }
00079          }
00080      else if (dominant_color[0]==dominant_color[2]){
00081               pc.printf("DOMINANT COLOR: RED, BLUE\n\r");
00082               }
00083      else if (dominant_color[0]>dominant_color[2]){
00084               pc.printf("DOMINANT COLOR: RED\n\r");
00085               }
00086      else {
00087               pc.printf("DOMINANT COLOR: BLUE\n\r");   
00088             }     
00089           }        
00090    else if (dominant_color[1]==dominant_color[2]) {
00091               pc.printf("DOMINANT COLOR: GREEN BLUE\n\r");
00092             }
00093    else if (dominant_color[1]>dominant_color[2]){
00094               pc.printf("DOMINANT COLOR: GREEN\n\r");    
00095               }
00096    else {
00097                pc.printf("DOMINANT COLOR: BLUE\n\r");
00098           }       
00099           dominant_color[0]=0;
00100           dominant_color[1]=0;
00101           dominant_color[2]=0;  
00102           }    
00103