martes, 27 de octubre de 2015

A continuación mostrare el funcionamiento del sensor detector de colores TCS3200 con el arduino. Como habíamos dicho en la presentación del proyecto, este sensor nos permite capturar la cantidad de colores rojo, verde y azul según lo que capte este, ayudado de los leds cuyo objetivo es dar luz para que el sensor detecte mejor la nitidez del color.



En el transcurso de este tiempo eh desarrollado el siguiente código que nos permitirá captar los 3 colores principales:

//Declaración de los pines respectivos del sensor de color TSC3200
 int s0 = 8;
 int s1 = 9;
 int s2 = 12;
 int s3 = 11;
 int out = 10;

 //Declaración de los pines de colores del led RGB 
 int ledrojo = 2;
 int ledverd = 3;
 int ledazul = 4;

 //Estas variables almacenaran la cantidad de cada color
 int red = 0;
 int green = 0;
 int blue = 0;

void setup() {
//Configuramos los diferentes pines e empezamos encendiendo el pin S0 y S1
   pinMode(s0, OUTPUT);
   pinMode(s1, OUTPUT);
   pinMode(s2, OUTPUT);
   pinMode(s3, OUTPUT);
   pinMode(out, INPUT);
   pinMode(ledrojo, OUTPUT);
   pinMode(ledverd, OUTPUT);
   pinMode(ledazul, OUTPUT);
   Serial.begin(9600);
   digitalWrite(s0, HIGH);
   digitalWrite(s1, HIGH); }

void loop(){
   color(); //Llamamos al método llamado color()
   //Y luego nos muestra en el monitor serial el valor de cada color según detecte el sensor    
   Serial.print("Rojo:");
   Serial.print(red, DEC);
   Serial.print("Verde : ");
   Serial.print(green, DEC);
   Serial.print(" Azul : ");
   Serial.print(blue, DEC);
   Serial.println();  //Salto de línea en cada lectura 

 /*Sentencias que nos permiten identificar el color a través del rango predeterminado del color rojo,  azul y verde, es decir comparamos la cantidad de color de cada uno y la sentencia compara si  coincide y encendera el led RGB con el color especifico que está leyendo */

   if (red < blue && red < green && red > 50) {
      Serial.println("Rojo");
      digitalWrite(ledrojo, HIGH); //Se enciende el led rojo y apagamos los demás colores   
      digitalWrite(ledverd, LOW);
      digitalWrite(ledazul, LOW); }

   else if (blue < red && blue < green){
      Serial.println("Azul");
      digitalWrite(ledrojo, LOW);
      digitalWrite(ledverd, LOW);
      digitalWrite(ledazul, HIGH); //Se enciende el led azul 
   }

   else if (green < red && green < blue){
      Serial.println("Verde");
      digitalWrite(ledrojo, LOW);
      digitalWrite(ledverd, HIGH); //Se enciende el led verde
      digitalWrite(ledazul, LOW); }

   Serial.println(); /*Mantenemos encendido el led por dos segundos si el sensor ya no detecta el color    lo apagara después de ese tiempo*/
   delay(2000);
   digitalWrite(ledrojo, LOW);
   digitalWrite(ledverd, LOW);
   digitalWrite(ledazul, LOW); } 

void color() {
   //Método que lee el valor de los colores 
   digitalWrite(s2, LOW); digitalWrite(s3, LOW);
   //Contador OUT, pinRojo 
   red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
   digitalWrite(s3, HIGH);
   //Contador OUT, pinAzul 
   blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
   digitalWrite(s2, HIGH);
   //Contador OUT, pinVerde 
   green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 


Modelo del circuito que se utilizó:




Lo que hace el sensor detector de color es enfocar cierto color y capturar la nitidez de cada color rojo, verde, y azul. Como sabemos un color está compuesto por cierta cantidad de rojo, verde y azul, es decir la combinación de la cantidad de estos tres colores dan lugar a un nuevo color.

Una vez que nosotros pongamos un sólido sea verde, rojo o azul frente al sensor, el captara e inmediatamente prenderá el led del color que esta captando el sensor TSC3200.

2 comentarios:

  1. HOLA DISCULPA YO AGREGUE UN SERVOMOTOR QUE DEPENDIENDO DE LOS COLORES GIRA A 0, 90 Y 180 GRADOS. ALGUNAS VECES EL SERVO SE VUELVE LOCO. ME PODRIAS AYUDAR? CREO QUE ES POR LA FRECUENCIA DEL SENSOR. OTRO PROBLEMA ES QUE UNAS VECES NO DETECTA SI ES ROJO O VERDE.

    AGRADECERIA TU RESPUESTA

    ResponderEliminar
    Respuestas
    1. Disculpa pero en estos momentos no se encuentra disponible.

      Eliminar

Datos personales:

Entradas populares