ver.1

Dependencies:   ColorSensor mbed

Committer:
ryuna
Date:
Thu Sep 19 05:32:01 2013 +0000
Revision:
0:f07bfab0732b
colorsensor ver.1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryuna 0:f07bfab0732b 1 #include "mbed.h"
ryuna 0:f07bfab0732b 2 #include "ColorSensor.h"
ryuna 0:f07bfab0732b 3
ryuna 0:f07bfab0732b 4 void rivisedate ();
ryuna 0:f07bfab0732b 5 void colordate ();
ryuna 0:f07bfab0732b 6 void ptm(unsigned sum );
ryuna 0:f07bfab0732b 7
ryuna 0:f07bfab0732b 8
ryuna 0:f07bfab0732b 9 unsigned short RGB[3],time1 = 20 ;
ryuna 0:f07bfab0732b 10 unsigned rgb[3];
ryuna 0:f07bfab0732b 11 double R,G,B,colorsum;
ryuna 0:f07bfab0732b 12 double rir,rib ;
ryuna 0:f07bfab0732b 13
ryuna 0:f07bfab0732b 14 DigitalOut led1(p21);
ryuna 0:f07bfab0732b 15 DigitalOut led2(p22);
ryuna 0:f07bfab0732b 16 DigitalOut led3(p23);
ryuna 0:f07bfab0732b 17 ColorSensor color(p20,p17,p18,p19,time1);
ryuna 0:f07bfab0732b 18 //ColorSensor color = ColorSensor();
ryuna 0:f07bfab0732b 19 Serial pc(USBTX, USBRX); //tx,rx
ryuna 0:f07bfab0732b 20
ryuna 0:f07bfab0732b 21
ryuna 0:f07bfab0732b 22
ryuna 0:f07bfab0732b 23 int main() {
ryuna 0:f07bfab0732b 24 short act = 0 , i = 0;
ryuna 0:f07bfab0732b 25 while(1) {
ryuna 0:f07bfab0732b 26 i++;
ryuna 0:f07bfab0732b 27 led1 = 1;
ryuna 0:f07bfab0732b 28 if(act == 0){
ryuna 0:f07bfab0732b 29 rivisedate();
ryuna 0:f07bfab0732b 30 act = 1 ;
ryuna 0:f07bfab0732b 31 }else if(act == 1){
ryuna 0:f07bfab0732b 32 colordate();
ryuna 0:f07bfab0732b 33
ryuna 0:f07bfab0732b 34 pc.printf(" R %d G %d B %d ||| %lf %lf %lf %d\n",rgb[0],rgb[1],rgb[2],R,G,B,time1);
ryuna 0:f07bfab0732b 35 }
ryuna 0:f07bfab0732b 36
ryuna 0:f07bfab0732b 37 /*if(i<=50){
ryuna 0:f07bfab0732b 38 led1 = 1;
ryuna 0:f07bfab0732b 39 led2 =0 ,led3 =0 ;
ryuna 0:f07bfab0732b 40 }else if((i>50)&&(i<=100)){
ryuna 0:f07bfab0732b 41 led2 = 1;
ryuna 0:f07bfab0732b 42 led1 =0 ,led3 =0 ;
ryuna 0:f07bfab0732b 43 }else if((i>100)&&(i<=150)) {
ryuna 0:f07bfab0732b 44 led3 = 1;
ryuna 0:f07bfab0732b 45 led1 =0 ,led2 =0 ;
ryuna 0:f07bfab0732b 46 }else{
ryuna 0:f07bfab0732b 47 i=0;
ryuna 0:f07bfab0732b 48 }*/
ryuna 0:f07bfab0732b 49 }
ryuna 0:f07bfab0732b 50 }
ryuna 0:f07bfab0732b 51
ryuna 0:f07bfab0732b 52 void rivisedate (){
ryuna 0:f07bfab0732b 53 unsigned long red = 0,green = 0,blue =0;
ryuna 0:f07bfab0732b 54 unsigned short i ;
ryuna 0:f07bfab0732b 55 unsigned sum ;
ryuna 0:f07bfab0732b 56 for (i=0;i<=20;i++){
ryuna 0:f07bfab0732b 57 color.timenow(time1);
ryuna 0:f07bfab0732b 58 color.getRGB(RGB);
ryuna 0:f07bfab0732b 59 sum = RGB[0]+RGB[1]+RGB[2];
ryuna 0:f07bfab0732b 60 ptm(sum);
ryuna 0:f07bfab0732b 61 red += RGB[0] ;
ryuna 0:f07bfab0732b 62 green += RGB[1] ;
ryuna 0:f07bfab0732b 63 blue += RGB[2] ;
ryuna 0:f07bfab0732b 64 pc.printf(" %d %d\n",time1,sum);
ryuna 0:f07bfab0732b 65 }
ryuna 0:f07bfab0732b 66 rir = (double)green/ red ;
ryuna 0:f07bfab0732b 67 rib = (double)green/ blue ;
ryuna 0:f07bfab0732b 68
ryuna 0:f07bfab0732b 69 }
ryuna 0:f07bfab0732b 70 void colordate (){
ryuna 0:f07bfab0732b 71 color.getRGB(RGB) ;
ryuna 0:f07bfab0732b 72 colorsum = RGB[0]*rir + RGB[1] + RGB[2]*rib ;
ryuna 0:f07bfab0732b 73 R = RGB[0]*rir*100 / colorsum ;
ryuna 0:f07bfab0732b 74 G = RGB[1]*100 /colorsum ;
ryuna 0:f07bfab0732b 75 B = RGB[2]*rib*100 / colorsum ;
ryuna 0:f07bfab0732b 76 color.checkRGB(rgb[0],rgb[1],rgb[2]);
ryuna 0:f07bfab0732b 77 }
ryuna 0:f07bfab0732b 78
ryuna 0:f07bfab0732b 79
ryuna 0:f07bfab0732b 80 void ptm(unsigned sum){
ryuna 0:f07bfab0732b 81 //光の強度によって時間を決める
ryuna 0:f07bfab0732b 82 if( sum <=500){
ryuna 0:f07bfab0732b 83 time1+= 8 ;
ryuna 0:f07bfab0732b 84 }else if((sum>500)&&(sum<=800)){
ryuna 0:f07bfab0732b 85 time1+= 5 ;
ryuna 0:f07bfab0732b 86 }else if((sum>800)&&(sum<=1300)){
ryuna 0:f07bfab0732b 87 time1+= 1 ;
ryuna 0:f07bfab0732b 88 }else if((sum>3000)&&(sum<=5000)){
ryuna 0:f07bfab0732b 89 time1-= 5 ;
ryuna 0:f07bfab0732b 90 }else if((sum>5000)&&(sum<=8000)){
ryuna 0:f07bfab0732b 91 time1-= 10 ;
ryuna 0:f07bfab0732b 92 }else if((sum>8000)&&(sum<=15000)){
ryuna 0:f07bfab0732b 93 time1-= 15 ;
ryuna 0:f07bfab0732b 94 }if(time1>=40){
ryuna 0:f07bfab0732b 95 time1-=20;
ryuna 0:f07bfab0732b 96 }else if(time1<=5){
ryuna 0:f07bfab0732b 97 time1+=5;
ryuna 0:f07bfab0732b 98 }
ryuna 0:f07bfab0732b 99 }