ver.1

Dependencies:   ColorSensor mbed

main.cpp

Committer:
ryuna
Date:
2013-09-19
Revision:
0:f07bfab0732b

File content as of revision 0:f07bfab0732b:

#include "mbed.h"
#include "ColorSensor.h"

void rivisedate ();
void colordate ();
void ptm(unsigned sum );


unsigned short RGB[3],time1 = 20 ;
unsigned rgb[3];
double R,G,B,colorsum;
double rir,rib ;

DigitalOut led1(p21);
DigitalOut led2(p22);
DigitalOut led3(p23);
ColorSensor color(p20,p17,p18,p19,time1);
//ColorSensor color = ColorSensor();
Serial pc(USBTX, USBRX); //tx,rx



int main() {
    short act = 0 , i = 0;    
    while(1) {
        i++;
        led1 = 1;
        if(act == 0){
         rivisedate();
         act = 1 ; 
        }else if(act == 1){
         colordate();
         
         pc.printf(" R %d  G %d  B %d  |||  %lf  %lf  %lf    %d\n",rgb[0],rgb[1],rgb[2],R,G,B,time1);
        }
        
       /*if(i<=50){
        led1 = 1;
        led2 =0 ,led3 =0 ;
       }else if((i>50)&&(i<=100)){
        led2 = 1;
        led1 =0 ,led3 =0 ;
       }else if((i>100)&&(i<=150)) {
        led3 = 1;
        led1 =0 ,led2 =0 ; 
       }else{
        i=0;
       }*/
    }
}

void rivisedate (){
    unsigned long red = 0,green = 0,blue =0;
    unsigned short i ;
    unsigned sum ;
    for (i=0;i<=20;i++){
     color.timenow(time1);
     color.getRGB(RGB);
     sum = RGB[0]+RGB[1]+RGB[2];
     ptm(sum);
     red += RGB[0] ;
     green += RGB[1] ;
     blue += RGB[2] ;
     pc.printf(" %d  %d\n",time1,sum);
    }
    rir = (double)green/ red ;
    rib = (double)green/ blue ;
    
}
void colordate (){
    color.getRGB(RGB) ;
    colorsum = RGB[0]*rir + RGB[1] + RGB[2]*rib ;
    R = RGB[0]*rir*100 / colorsum ;
    G = RGB[1]*100 /colorsum ;
    B = RGB[2]*rib*100 / colorsum ;
    color.checkRGB(rgb[0],rgb[1],rgb[2]);      
}
 
 
 void ptm(unsigned sum){
    //光の強度によって時間を決める
    if( sum  <=500){
        time1+= 8 ;
    }else if((sum>500)&&(sum<=800)){
        time1+= 5 ;
    }else if((sum>800)&&(sum<=1300)){
        time1+= 1 ;
    }else if((sum>3000)&&(sum<=5000)){
        time1-= 5 ;
    }else if((sum>5000)&&(sum<=8000)){
        time1-= 10 ;
    }else if((sum>8000)&&(sum<=15000)){
        time1-= 15 ;
    }if(time1>=40){
        time1-=20;
    }else if(time1<=5){
        time1+=5;
    } 
 }