ver.1
Dependencies: ColorSensor mbed
main.cpp@0:f07bfab0732b, 2013-09-19 (annotated)
- Committer:
- ryuna
- Date:
- Thu Sep 19 05:32:01 2013 +0000
- Revision:
- 0:f07bfab0732b
colorsensor ver.1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |