Go Down

Topic: como identificar colores con el sensor de Color TCS230 (Read 2383 times) previous topic - next topic

mariano_htezil

buenos dias, disculpen estoy programando un identificador de color con el sensor TCS230, los colores que debe detectar son el ROJO, VERDE y AZUL, y en dado caso de no encontrar ninguno muestra el mensaje COLOR NO DETECTADO, en una pantalla LCD de 16 x 2, por favor si alguien me puede orientar a encontrar mis errores, el codigo es el siguiente:

Code: [Select]


#include <LiquidCrystal.h> //libreria para poder utilizar los metodos de la pantalla
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12); //pines de la pantalla conectados
 
// Programa : Detector de cores usando modulo TCS230 
// Alteracoes e comentarios : Arduino e Cia 
// 
// Baseado no programa original de Martin Mason 
   
//Piness de conexion do modulo TCS230 
const int s0 = 2; 
const int s1 = 3; 
const int s2 = 5; 
const int s3 = 4; 
const int out = 6;   
   
//Pines de leds 
int pinoledverm = A1; 
int pinoledverd = A5; 
int pinoledazul = A3;
 
   

int red = 0; 
int green = 0; 
int blue = 0; 
   
void setup()   

  pinMode(s0, OUTPUT); 
  pinMode(s1, OUTPUT); 
  pinMode(s2, OUTPUT); 
  pinMode(s3, OUTPUT); 
  pinMode(out, INPUT); 
  pinMode(pinoledverm, OUTPUT); 
  pinMode(pinoledverd, OUTPUT); 
  pinMode(pinoledazul, OUTPUT); 
  Serial.begin(9600); 
  digitalWrite(s0, HIGH); 
  digitalWrite(s1, HIGH); 

  lcd.begin(16, 2);
  lcd.setCursor(0,0);
  lcd.print("El Color Es:");
 
 

   
void loop()

  color();
   
  Serial.print("Rojo :"); 
  Serial.print(red, DEC); 
  Serial.print(" Verde : "); 
  Serial.print(green, DEC); 
  Serial.print(" Azul : "); 
  Serial.print(blue, DEC); 
  Serial.println(); 

  //Verifica que el color detectado sea rojo 
  if (red < blue && red < green && red > 50) 
  {
   lcd.setCursor(0,1);
   lcd.print("Rojo");
   Serial.println("Rojo"); 
   digitalWrite(pinoledverm, HIGH); //Acende o led vermelho 
   digitalWrite(pinoledverd, LOW); 
   digitalWrite(pinoledazul, LOW); 
   
  } 

  //Verifica que el color verde sea detectado
  else if (blue < red && blue < green)   
  { 
   lcd.setCursor(0,1);
   lcd.print("azul");
   Serial.println("Azul"); 
   digitalWrite(pinoledverm, LOW); 
   digitalWrite(pinoledverd, LOW); 
   digitalWrite(pinoledazul, HIGH); //Acende o led azul 
   
  } 

  //Verifica que el color verde sea detectado
  else if (green < red && green < blue) 
  { 
   lcd.setCursor(0,1);
   lcd.print("verde");
   Serial.println("Verde"); 
   digitalWrite(pinoledverm, LOW); 
   digitalWrite(pinoledverd, HIGH); //Acende o led verde 
   digitalWrite(pinoledazul, LOW);
   
   
  } 
  Serial.println(); 

  //Aguarda 2 segundos, apaga os leds e reinicia o processo 
  delay(2000);   
  lcd.setCursor(0,1);
  lcd.print("no detectado");
  digitalWrite(pinoledverm, LOW); 
  digitalWrite(pinoledverd, LOW); 
  digitalWrite(pinoledazul, LOW); 
 } 
   
void color() 

 
  digitalWrite(s2, LOW); 
  digitalWrite(s3, LOW); 
   
  red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
  digitalWrite(s3, HIGH); 
 
  blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
  digitalWrite(s2, HIGH); 
   
  green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); 
}



marco_c

You may find information in my code repository (link below in my signatures) where I have a tcs230 library and some example code. There is also a PDFs explaining the theory of how to use the sensor.
Arduino Libraries https://github.com/MajicDesigns?tab=Repositories
Parola for Arduino https://github.com/MajicDesigns/Parola
Arduino++ blog https://arduinoplusplus.wordpress.com

Go Up