ver.1
Dependencies: ColorSensor mbed
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 }
Generated on Thu Jul 14 2022 22:26:23 by 1.7.2