Mateo Morales
/
Sensor_color_2
Solo detecta rgb
main.cpp@1:ecdb7b2d4c68, 2018-11-23 (annotated)
- Committer:
- Mateom0104
- Date:
- Fri Nov 23 03:23:25 2018 +0000
- Revision:
- 1:ecdb7b2d4c68
- Parent:
- 0:1c90c49f6cca
Sensor de color mejorado
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Mateom0104 | 0:1c90c49f6cca | 1 | #include "mbed.h" |
Mateom0104 | 0:1c90c49f6cca | 2 | |
Mateom0104 | 0:1c90c49f6cca | 3 | |
Mateom0104 | 0:1c90c49f6cca | 4 | Serial pc(SERIAL_TX, SERIAL_RX); |
Mateom0104 | 0:1c90c49f6cca | 5 | |
Mateom0104 | 0:1c90c49f6cca | 6 | DigitalOut s0(D3); |
Mateom0104 | 0:1c90c49f6cca | 7 | DigitalOut s1(D4); |
Mateom0104 | 0:1c90c49f6cca | 8 | DigitalOut s2(D5); |
Mateom0104 | 0:1c90c49f6cca | 9 | DigitalOut s3(D6); |
Mateom0104 | 0:1c90c49f6cca | 10 | |
Mateom0104 | 0:1c90c49f6cca | 11 | DigitalOut led_col(D7); |
Mateom0104 | 0:1c90c49f6cca | 12 | DigitalOut led1(LED1); |
Mateom0104 | 0:1c90c49f6cca | 13 | DigitalIn out(D2); |
Mateom0104 | 0:1c90c49f6cca | 14 | |
Mateom0104 | 0:1c90c49f6cca | 15 | Timer tiempo; |
Mateom0104 | 0:1c90c49f6cca | 16 | |
Mateom0104 | 0:1c90c49f6cca | 17 | int valor,verificaion_color ; |
Mateom0104 | 0:1c90c49f6cca | 18 | int val_color; |
Mateom0104 | 0:1c90c49f6cca | 19 | int r,g,b; |
Mateom0104 | 0:1c90c49f6cca | 20 | |
Mateom0104 | 0:1c90c49f6cca | 21 | |
Mateom0104 | 0:1c90c49f6cca | 22 | void analisis (void); |
Mateom0104 | 0:1c90c49f6cca | 23 | |
Mateom0104 | 0:1c90c49f6cca | 24 | |
Mateom0104 | 0:1c90c49f6cca | 25 | void analisis(void) |
Mateom0104 | 0:1c90c49f6cca | 26 | { |
Mateom0104 | 0:1c90c49f6cca | 27 | while(verificaion_color==0) |
Mateom0104 | 0:1c90c49f6cca | 28 | { |
Mateom0104 | 0:1c90c49f6cca | 29 | valor=out.read(); |
Mateom0104 | 0:1c90c49f6cca | 30 | // pc.printf("valor 1= %d \n",valor); |
Mateom0104 | 0:1c90c49f6cca | 31 | if (valor==1) |
Mateom0104 | 0:1c90c49f6cca | 32 | { |
Mateom0104 | 0:1c90c49f6cca | 33 | while(verificaion_color==0) |
Mateom0104 | 0:1c90c49f6cca | 34 | { |
Mateom0104 | 0:1c90c49f6cca | 35 | valor=out.read(); |
Mateom0104 | 0:1c90c49f6cca | 36 | // pc.printf("valor 2= %d \n",valor); |
Mateom0104 | 0:1c90c49f6cca | 37 | |
Mateom0104 | 0:1c90c49f6cca | 38 | if(valor==0) |
Mateom0104 | 0:1c90c49f6cca | 39 | { |
Mateom0104 | 1:ecdb7b2d4c68 | 40 | tiempo.reset(); |
Mateom0104 | 0:1c90c49f6cca | 41 | tiempo.start(); |
Mateom0104 | 0:1c90c49f6cca | 42 | } |
Mateom0104 | 0:1c90c49f6cca | 43 | while(valor==0) |
Mateom0104 | 0:1c90c49f6cca | 44 | { |
Mateom0104 | 0:1c90c49f6cca | 45 | valor=out.read(); |
Mateom0104 | 0:1c90c49f6cca | 46 | // pc.printf("valor 3= %d \n",valor); |
Mateom0104 | 0:1c90c49f6cca | 47 | verificaion_color=1; |
Mateom0104 | 0:1c90c49f6cca | 48 | } |
Mateom0104 | 0:1c90c49f6cca | 49 | } |
Mateom0104 | 0:1c90c49f6cca | 50 | } |
Mateom0104 | 0:1c90c49f6cca | 51 | } |
Mateom0104 | 0:1c90c49f6cca | 52 | val_color=tiempo.read_us(); |
Mateom0104 | 0:1c90c49f6cca | 53 | tiempo.reset(); |
Mateom0104 | 0:1c90c49f6cca | 54 | verificaion_color=0; |
Mateom0104 | 0:1c90c49f6cca | 55 | } |
Mateom0104 | 0:1c90c49f6cca | 56 | int main() { |
Mateom0104 | 0:1c90c49f6cca | 57 | pc.baud(9600); |
Mateom0104 | 0:1c90c49f6cca | 58 | led_col=1; |
Mateom0104 | 0:1c90c49f6cca | 59 | //escala de frecuencia a 20% |
Mateom0104 | 0:1c90c49f6cca | 60 | s0=1; |
Mateom0104 | 0:1c90c49f6cca | 61 | s1=0; |
Mateom0104 | 0:1c90c49f6cca | 62 | |
Mateom0104 | 0:1c90c49f6cca | 63 | while(1) |
Mateom0104 | 0:1c90c49f6cca | 64 | { |
Mateom0104 | 0:1c90c49f6cca | 65 | s2=0; |
Mateom0104 | 0:1c90c49f6cca | 66 | s3=0; |
Mateom0104 | 0:1c90c49f6cca | 67 | analisis(); |
Mateom0104 | 1:ecdb7b2d4c68 | 68 | //pc.printf("R= %d",val_color); |
Mateom0104 | 0:1c90c49f6cca | 69 | r=val_color; |
Mateom0104 | 0:1c90c49f6cca | 70 | wait_ms(100); |
Mateom0104 | 0:1c90c49f6cca | 71 | |
Mateom0104 | 0:1c90c49f6cca | 72 | |
Mateom0104 | 1:ecdb7b2d4c68 | 73 | s2=1; |
Mateom0104 | 1:ecdb7b2d4c68 | 74 | s3=1; |
Mateom0104 | 1:ecdb7b2d4c68 | 75 | analisis(); |
Mateom0104 | 1:ecdb7b2d4c68 | 76 | //pc.printf(" G= %d",val_color); |
Mateom0104 | 1:ecdb7b2d4c68 | 77 | g=val_color; |
Mateom0104 | 1:ecdb7b2d4c68 | 78 | wait_ms(100); |
Mateom0104 | 1:ecdb7b2d4c68 | 79 | |
Mateom0104 | 1:ecdb7b2d4c68 | 80 | |
Mateom0104 | 0:1c90c49f6cca | 81 | s2=0; |
Mateom0104 | 0:1c90c49f6cca | 82 | s3=1; |
Mateom0104 | 0:1c90c49f6cca | 83 | analisis(); |
Mateom0104 | 1:ecdb7b2d4c68 | 84 | //pc.printf(" B= %d \n ",val_color); |
Mateom0104 | 0:1c90c49f6cca | 85 | b=val_color; |
Mateom0104 | 0:1c90c49f6cca | 86 | wait_ms(100); |
Mateom0104 | 0:1c90c49f6cca | 87 | |
Mateom0104 | 0:1c90c49f6cca | 88 | |
Mateom0104 | 1:ecdb7b2d4c68 | 89 | |
Mateom0104 | 0:1c90c49f6cca | 90 | |
Mateom0104 | 0:1c90c49f6cca | 91 | |
Mateom0104 | 0:1c90c49f6cca | 92 | //Blanco |
Mateom0104 | 1:ecdb7b2d4c68 | 93 | if((r>=30 && r<=60) &&(g>=30 && g<=60) && (b>=10 && b<=40)) |
Mateom0104 | 0:1c90c49f6cca | 94 | { |
Mateom0104 | 0:1c90c49f6cca | 95 | pc.printf(" Blanco \n"); |
Mateom0104 | 0:1c90c49f6cca | 96 | } |
Mateom0104 | 0:1c90c49f6cca | 97 | //rojo |
Mateom0104 | 1:ecdb7b2d4c68 | 98 | else if((r>=80 && r<=120) &&(g>=230 && g<=270) && (b>=160 && b<=200)) |
Mateom0104 | 0:1c90c49f6cca | 99 | { |
Mateom0104 | 0:1c90c49f6cca | 100 | pc.printf(" Rojo \n"); |
Mateom0104 | 0:1c90c49f6cca | 101 | } |
Mateom0104 | 0:1c90c49f6cca | 102 | //verde |
Mateom0104 | 0:1c90c49f6cca | 103 | |
Mateom0104 | 1:ecdb7b2d4c68 | 104 | else if ((r>=190 && r<=230) &&(g>=110 && g<=140) && (b>=110 && b<=140)) |
Mateom0104 | 0:1c90c49f6cca | 105 | { |
Mateom0104 | 0:1c90c49f6cca | 106 | pc.printf(" Verde \n"); |
Mateom0104 | 0:1c90c49f6cca | 107 | } |
Mateom0104 | 0:1c90c49f6cca | 108 | |
Mateom0104 | 0:1c90c49f6cca | 109 | //Azul |
Mateom0104 | 0:1c90c49f6cca | 110 | |
Mateom0104 | 1:ecdb7b2d4c68 | 111 | else if((r>=340 && r<=380) &&(g>=150 && g<=190) && (b>=50 && b<=90)) |
Mateom0104 | 0:1c90c49f6cca | 112 | { |
Mateom0104 | 0:1c90c49f6cca | 113 | pc.printf(" Azul \n"); |
Mateom0104 | 0:1c90c49f6cca | 114 | } |
Mateom0104 | 1:ecdb7b2d4c68 | 115 | else |
Mateom0104 | 1:ecdb7b2d4c68 | 116 | { |
Mateom0104 | 1:ecdb7b2d4c68 | 117 | pc.printf(" Ninguna \n"); |
Mateom0104 | 1:ecdb7b2d4c68 | 118 | } |
Mateom0104 | 0:1c90c49f6cca | 119 | |
Mateom0104 | 0:1c90c49f6cca | 120 | |
Mateom0104 | 0:1c90c49f6cca | 121 | /* |
Mateom0104 | 0:1c90c49f6cca | 122 | |
Mateom0104 | 0:1c90c49f6cca | 123 | //Blanco |
Mateom0104 | 0:1c90c49f6cca | 124 | if((r>=600047 && r<=600115) &&(g>=100051 && g<=100108) && (b>=100044 && b<=100086)) |
Mateom0104 | 0:1c90c49f6cca | 125 | { |
Mateom0104 | 0:1c90c49f6cca | 126 | pc.printf(" Blanco \n"); |
Mateom0104 | 0:1c90c49f6cca | 127 | } |
Mateom0104 | 0:1c90c49f6cca | 128 | //rojo |
Mateom0104 | 0:1c90c49f6cca | 129 | if((r>=600116 && r<=600282) &&(g>=100305 && g<=100853) && (b>=100191 && b<=100550)) |
Mateom0104 | 0:1c90c49f6cca | 130 | { |
Mateom0104 | 0:1c90c49f6cca | 131 | pc.printf(" Rojo \n"); |
Mateom0104 | 0:1c90c49f6cca | 132 | } |
Mateom0104 | 0:1c90c49f6cca | 133 | //verde |
Mateom0104 | 0:1c90c49f6cca | 134 | |
Mateom0104 | 0:1c90c49f6cca | 135 | if((r>=600310 && r<=600801) &&(g>=100133 && g<=100367) && (b>=100233 && b<=100331)) |
Mateom0104 | 0:1c90c49f6cca | 136 | { |
Mateom0104 | 0:1c90c49f6cca | 137 | pc.printf(" Verde \n"); |
Mateom0104 | 0:1c90c49f6cca | 138 | } |
Mateom0104 | 0:1c90c49f6cca | 139 | |
Mateom0104 | 0:1c90c49f6cca | 140 | //Azul |
Mateom0104 | 0:1c90c49f6cca | 141 | |
Mateom0104 | 0:1c90c49f6cca | 142 | if((r>=600424 && r<=601153) &&(g>=100199 && g<=100496) && (b>=100183 && b<=100201)) |
Mateom0104 | 0:1c90c49f6cca | 143 | { |
Mateom0104 | 0:1c90c49f6cca | 144 | pc.printf(" Azul \n"); |
Mateom0104 | 0:1c90c49f6cca | 145 | } |
Mateom0104 | 0:1c90c49f6cca | 146 | |
Mateom0104 | 0:1c90c49f6cca | 147 | |
Mateom0104 | 0:1c90c49f6cca | 148 | */ |
Mateom0104 | 0:1c90c49f6cca | 149 | |
Mateom0104 | 1:ecdb7b2d4c68 | 150 | wait(0.2); |
Mateom0104 | 0:1c90c49f6cca | 151 | |
Mateom0104 | 0:1c90c49f6cca | 152 | } |
Mateom0104 | 0:1c90c49f6cca | 153 | } |