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:
#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);
}