Solo detecta rgb

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }