# Sensor de color TCS230 problemas



## rukymon (Dic 4, 2012)

compre este sensor específicamente para detectar color rojo y azul en un pequeño proceso en el que utilizo arduino, el vendedor me paso un código que aquí posteare, pero la verdad no he logrado hacer que funcione de manera correcta con ese código ni con otros varios que he utilizado  , si alguien pudiera echarme la mano le agradecería mucho.

CÓDIGO PARA ARDUINO:
#include <TimerOne.h>

#define OUT  2
#define S2   4
#define S3   3
#define S0   6
#define S1   5
#define OE   7

#define  Filters_R  0
#define  Filters_G  1
#define  Filters_B  2

int Count[3] = {0};
int G_flag = 1;


void setup()
{
  TCS230_init();
  Select_Filters(3);             //default, no fiter
  Timer1.initialize();          // default 1S
  Timer1.attachInterrupt(callback);
  Serial.begin(19200);
}

void TCS230_init()
{
  pinMode(OUT, INPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(OE, OUTPUT);

  digitalWrite(S0, LOW);    // 2% of Output Frequence
  digitalWrite(S1, HIGH);
  digitalWrite(OE, LOW);
}

void Select_Filters(int RGB)
{
  switch(RGB)
  {
    case Filters_R:          //Red
    digitalWrite(S2, LOW);    
    digitalWrite(S3, LOW);
    Serial.println("-----select Red color");
    break;

    case Filters_G:          //Green
    digitalWrite(S2, HIGH);    
    digitalWrite(S3, HIGH);
    Serial.println("-----select Green color");
    break;

    case Filters_B:          //Blue
    digitalWrite(S2, LOW);    
    digitalWrite(S3, HIGH);
    Serial.println("-----select Blue color");
    break;

    default:                  //Clear(no filter)
    digitalWrite(S2, HIGH);    
    digitalWrite(S3, LOW);
    Serial.println("-----no filter");
    break;
  }
}

void Measure_Count(int RGB )          //For white balance correction
{
  int tmp = 0;
  while(1)
  {
    if(digitalRead(OUT) == 1)
    {
      if(G_flag == 0)
      {
        Count[RGB] = tmp;
        Serial.print("tmp=");
        Serial.println(tmp);
        break;
      }
      tmp++;
    }
  }
}


void callback()
{
  G_flag = 0;
}

void loop()
{
  Timer1.restart();
  for(int i=0; i<3; i++)
  {
    Select_Filters(i);
    Timer1.setPeriod(10000);  //set 10ms
    Measure_Count(i);
    G_flag = 1;
    Serial.println(Count_);
  }
  delay(3000);
}_


----------



## DOSMETROS (Dic 4, 2012)

*TCS230 Color Sensor* Module User's Guide

*Sensing color* with the TAOS *TCS230*

*tcs230 color sensor module with appmod adapter - Parallax, Inc*


----------



## rukymon (Dic 4, 2012)

pero yo utilizo este sensor http://www.okaphone.nl/product/images/TSC230CR.jpg y es muy distinto a los que me pasaste amigo


----------



## Limako (Dic 5, 2012)

entiendes el programa q te han pasado como funciona y para que sirve??

javascriptpenreq('http://www.datasheetcatalog.org/datasheets2/10/103569_1.pdf')

ahi tendras informacion de lo que es el sensor en si, el entramado de resistencias que usan en el que tiene tu me gustaria saberlo, de todas formas yo con solo el sensor lo hago, no se si todo lo bien q podria pero lo hago funcionar....

Me gustaria si alguien sabe, como puedo amplificar la supuesta señal puesto q con cable largo se me producen fallos a veces y ceo estar seguro de que es por la longitud pues con cable mas largo aun me fallaba mas, y en el datasheet pone que habria que usar un river o algo para cables de mas de 28cm


----------



## rukymon (Dic 5, 2012)

rukymon dijo:


> compre este sensor específicamente para detectar color rojo y azul en un pequeño proceso en el que utilizo arduino, el vendedor me paso un código que aquí posteare, pero la verdad no he logrado hacer que funcione de manera correcta con ese código ni con otros varios que he utilizado  , si alguien pudiera echarme la mano le agradecería mucho.
> 
> CÓDIGO PARA ARDUINO:
> #include <TimerOne.h>
> ...


_

-Incluye librería timerone.h
-Define que I/O utilizaran las terminales del sensor en arduino
-Define filtros a utilizarse
-Declara enteros que ni idea para que sean (int Count[3] = {0};
int G_flag = 1; )
-Se llama a la función TCS230 en la que se declara como funcionaran las I/O  de arduino, se inicia el timer de la lbrería, también la comunicación serial, selección de filtros(no se como demonios lo hacen)
-Ponen a 2% la frecuecia que entregara por lo que dice el datasheet
-Utiliza el switch case para los diferentes casos que son los colores y luego si detecta cierto color imprimirá en serial monitor el color que es
-Se hace un ajuste de blanco pero admito que de ahi en delante no entiendo el código


....soy estudiante NO PROFESIONAL apenas me adentro en este mundo de programación así que por favor no se desesperen _


----------



## DOSMETROS (Dic 5, 2012)

rukymon dijo:


> pero yo utilizo este sensor http://www.okaphone.nl/product/images/TSC230CR.jpg y es muy distinto a los que me pasaste amigo


 
Título :

*sensor de color TCS230 problemas*


----------



## rukymon (Dic 5, 2012)

DOSMETROS dijo:


> Título :
> 
> *sensor de color TCS230 problemas*



da la casualidad que los que tu me pasaste tiene muchoas mas  pines que el que uso yo y son diferentes ....


----------



## Fuentes84 (Nov 14, 2014)

Aprovechando el hilo sobre el sensor de color TCS230, he estado leyendo el datasheet, y creo entender sus funciones, básicamente se trata de leer la frecuencia que proporciona cada filtro ( rojo, verde, azul), por lo que tengo previsto utilizar un contador por interrupción, ahora bien, lo que no logro entender es como convertir la frecuencia leída por cada filtro de color a valores entre 0-255 de cada color?


----------



## Ardogan (Nov 14, 2014)

Es un sensor obsoleto. Ha no ser que ya los hayas comprado, sugeriría usar alguno más moderno. Hay unos cuantos que se leen por I2C el valor de cada componente R,G,B.
Para tener una idea de que es lo que hay:
http://www.digikey.com/product-sear...l-sensors-ambient-light-ir-uv-sensors/1966828

Filtra los resultados por longitud de onda (optico/infrarrojo), tipo de salida (analógica/I2C/frecuencia), etc


----------



## Fuentes84 (Nov 15, 2014)

Okk. Echaré un vistazo a ver lo que hay.  De experiencia por I2C solo lo he usado con el rtc ds1307,  no debería de tener problemas.


----------



## Fuentes84 (Nov 25, 2014)

Finalmente he pedido el TCS3414CS que utiliza el bus I2C para la interpretación de colores. Crearé el driver para controlar este chip mediante el compilador CCS version 5.025. Seguramente necesitaré un poco de ayuda.


----------

