ver.1

Dependencies:   ColorSensor mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "ColorSensor.h"
00003 
00004 void rivisedate ();
00005 void colordate ();
00006 void ptm(unsigned sum );
00007 
00008 
00009 unsigned short RGB[3],time1 = 20 ;
00010 unsigned rgb[3];
00011 double R,G,B,colorsum;
00012 double rir,rib ;
00013 
00014 DigitalOut led1(p21);
00015 DigitalOut led2(p22);
00016 DigitalOut led3(p23);
00017 ColorSensor color(p20,p17,p18,p19,time1);
00018 //ColorSensor color = ColorSensor();
00019 Serial pc(USBTX, USBRX); //tx,rx
00020 
00021 
00022 
00023 int main() {
00024     short act = 0 , i = 0;    
00025     while(1) {
00026         i++;
00027         led1 = 1;
00028         if(act == 0){
00029          rivisedate();
00030          act = 1 ; 
00031         }else if(act == 1){
00032          colordate();
00033          
00034          pc.printf(" R %d  G %d  B %d  |||  %lf  %lf  %lf    %d\n",rgb[0],rgb[1],rgb[2],R,G,B,time1);
00035         }
00036         
00037        /*if(i<=50){
00038         led1 = 1;
00039         led2 =0 ,led3 =0 ;
00040        }else if((i>50)&&(i<=100)){
00041         led2 = 1;
00042         led1 =0 ,led3 =0 ;
00043        }else if((i>100)&&(i<=150)) {
00044         led3 = 1;
00045         led1 =0 ,led2 =0 ; 
00046        }else{
00047         i=0;
00048        }*/
00049     }
00050 }
00051 
00052 void rivisedate (){
00053     unsigned long red = 0,green = 0,blue =0;
00054     unsigned short i ;
00055     unsigned sum ;
00056     for (i=0;i<=20;i++){
00057      color.timenow(time1);
00058      color.getRGB(RGB);
00059      sum = RGB[0]+RGB[1]+RGB[2];
00060      ptm(sum);
00061      red += RGB[0] ;
00062      green += RGB[1] ;
00063      blue += RGB[2] ;
00064      pc.printf(" %d  %d\n",time1,sum);
00065     }
00066     rir = (double)green/ red ;
00067     rib = (double)green/ blue ;
00068     
00069 }
00070 void colordate (){
00071     color.getRGB(RGB) ;
00072     colorsum = RGB[0]*rir + RGB[1] + RGB[2]*rib ;
00073     R = RGB[0]*rir*100 / colorsum ;
00074     G = RGB[1]*100 /colorsum ;
00075     B = RGB[2]*rib*100 / colorsum ;
00076     color.checkRGB(rgb[0],rgb[1],rgb[2]);      
00077 }
00078  
00079  
00080  void ptm(unsigned sum){
00081     //光の強度によって時間を決める
00082     if( sum  <=500){
00083         time1+= 8 ;
00084     }else if((sum>500)&&(sum<=800)){
00085         time1+= 5 ;
00086     }else if((sum>800)&&(sum<=1300)){
00087         time1+= 1 ;
00088     }else if((sum>3000)&&(sum<=5000)){
00089         time1-= 5 ;
00090     }else if((sum>5000)&&(sum<=8000)){
00091         time1-= 10 ;
00092     }else if((sum>8000)&&(sum<=15000)){
00093         time1-= 15 ;
00094     }if(time1>=40){
00095         time1-=20;
00096     }else if(time1<=5){
00097         time1+=5;
00098     } 
00099  }