como identificar colores con el sensor de Color TCS230

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

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.