¿Como detengo las constantes lecturas de un sensor de color?

Buenas, he escrito ya muchas veces en este foro debido a que necesito ayuda urgentemente. Mi proyecto es para el TR, lo que viene a ser como una tesis de universidad pero en 2º de bachillerato, obligatorio en Cataluña. Este proyecto lo entrego en 3 semanas y vale como 2 asignaturas para la nota final.

En el proyecto que estoy haciendo mi principal problema es un sensor de color que quiero que de una única lectura y pare, en vez de dar lecturas constantemente. Ahora mismo este sensor esta programado para que distinga colores en RGB pero no para de dar lecturas, cosa que no quiero.

 // Definiendo la lectura de los fotodiodos con filtro rojo
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  
  // Leyendo la frecuencia de salida del sensor
  frecuenciaRojo = pulseIn(salidaSensor, LOW);

  // Mapeando el valor de la frecuencia del ROJO (RED = R) de 0 a 255
  // Usted debe colocar los valores que registro. Este es un ejemplo: 
  // colorRojo = map(frecuenciaRojo, 70, 120, 255,0);
  colorRojo = map(frecuenciaRojo, 23, 75, 255,0);
  
  // Mostrando por serie el valor para el rojo (R = Red)
  Serial.print("R = ");
  Serial.print(colorRojo);
  delay(100);
  
  // Definiendo la lectura de los fotodiodos con filtro verde
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  
  // Leyendo la frecuencia de salida del sensor
  frecuenciaVerde = pulseIn(salidaSensor, LOW);

  // Mapeando el valor de la frecuencia del VERDE (GREEN = G) de 0 a 255
  // Usted debe colocar los valores que registro. Este es un ejemplo: 
  // colorVerde = map(frecuenciaVerde, 100, 199, 255,0);
  colorVerde = map(frecuenciaVerde, 24, 99, 255,0);

  // Mostrando por serie el valor para el verde (G = Green)
  Serial.print("G = ");
  Serial.print(colorVerde);
  delay(100);
 
  // Definiendo la lectura de los fotodiodos con filtro azul
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  
  // Leyendo la frecuencia de salida del sensor
  frecuenciaAzul = pulseIn(salidaSensor, LOW);

  // Mapeando el valor de la frecuencia del AZUL (AZUL = B) de 0 a 255
  // Usted debe colocar los valores que registro. Este es un ejemplo: 
  // colorAzul = map(frecuenciaAzul, 38, 84, 255, 0);
  colorAzul = map(frecuenciaAzul, 15, 92, 255, 0);
  
  // Mostrando por serie el valor para el azul (B = Blue)
  Serial.print("B = ");
  Serial.print(colorAzul);
  delay(100);

  // Comprobar cual es el color detectado y mostrarlo
  // con un mensaje en el monitor serie
  if(colorRojo > colorVerde && colorRojo > colorAzul){
      Serial.println(" - Detectado ROJO");
  }
  if(colorVerde > colorRojo && colorVerde > colorAzul){
    Serial.println(" - Detectado VERDE");
  }
  if(colorAzul > colorRojo && colorAzul > colorVerde){
    Serial.println(" - Detectado AZUL");
  }

He estado intentando hacerlo de diferentes maneras pero no lo he conseguido. Cabe mencionar que si es posible evitar el uso de delay() debido a que tengo mas sensores dando lecturas.

Gracias a todos de todas formas.

Y dime que evento debería determinar cuando lee y cuando no?
Porque hacer que lea una vez es facil.
Lo pones en el setup y listo o creas un flag que esta en true, cuando arranca el loop lee con un if(flag)

Como esta en true lee el sensor de color y cuando termines de hacerlo pones el flag en false y listo.
Algo asi

bool flag = true;
// aca librerias y globales de tu sensor

void setup() {
    // aca todo lo que ya tienes
}

void loop() {

   if (flag) {

    // leo el sensor
    flag = false;          // no permito que lea mas.
   }
}

Me has ayudado mucho pero no soy capaz de hacer lo que quiero. He implementado tu código en mi programación y ahora soy capaz de hacer que el sensor pare de leer si declaro que uno de los colores es
flag = false pero lo que quiero es que si se reinicia el sistema me de una nueva lectura.

Ejemplo: cuando un sensor de presencia detecte presencia hace que el sensor de color de una lectura (yo he puesto que azul es flag = false debido a que solo me interesa el azul. Lo que pasa es que quiero que cuando el sensor de presencia vuelva a detectar una presencia el sensor de color vuelva a dar una lectura nueva.

A mas a mas te pregunto por si lo sabes porque mi mini servo se calienta tanto. Tengo un mini servo conectado que gira si se ha detectado presencia y si el color es azul y lo tengo todo con un:

if (presencia==1 && flag ==false){
servo.write(180);
}

El mini servo solo participa en ese código y esta muy caliente hasta el punto que quema tanto que duele al tocarlo.

Muchísimas gracias por tu ayuda de verdad <3

Ejemplo: cuando un sensor de presencia detecte presencia hace que el sensor de color de una lectura (yo he puesto que azul es flag = false debido a que solo me interesa el azul. Lo que pasa es que quiero que cuando el sensor de presencia vuelva a detectar una presencia el sensor de color vuelva a dar una lectura nueva.

Y bueno si el sensor de presencia detecta algo, entonces activa el flag nuevamente.

Que el servo caliente no es bueno.
Si lo estas alimentando con 5V y calienta entones algo esta mal en el.
Considera usar otro para comparar.

surbyte:
Y bueno si el sensor de presencia detecta algo, entonces activa el flag nuevamente.

Me estas ayudando muchisimo mas que mis profesores y no sabes lo mucho que te lo agradezco. Pero sigo teniendo un problemilla. He puesto que:

if (presencia == 1){
flag=true;
//aqui la programacion del sensor de color
//finalmente
if (color detectado=azul){
flag=false;
}
}

Antes al poner flag = false en color detectado =azul hacia parar las lecturas del sensor de color pero ahora siguen sin fin. Creo que debido a que si el sensor de presencia ha detectado algo (=1) siempre va a ser flag =true

El problema es justamente esto
No se que sensor de presencia usas, supongo que un PIR o un sensor magnético que solo te dirá 1 cuando hay algo pero ese 1 o HIGH dura mucho entonces a cada instante se te activa el flag.

Lo que debes hacer es mirar el flanco o sea cuando el sensor pasa de NO HAY NADA a HAY UNA PRESENCIA.
O sea, cuando pasa de 0 a 1 flanco ascendente.

Ahora no te pongas a buscar en internet.. solo piensa!!

Si tu sensor de presencia te da el dato actual que debes hacer para comparar con el dato ANTERIOR?