Servomotor con sensor de color

Buenos dias, estoy haciendo un separador de m&m dependiendo de su color (azul,rojo o verde). Para esto estoy usando un sensor TCS3200. Este sensor detecta si el color es verde, azul , rojo u otro color(else). Al encender el arduino un servomotor gira 90° en sentido de las manecillas del reloj, entonces el sensor debe detectar el color, en el caso de que sea diferente de azul, rojo o verde, necesito que el sevo gire 90° antihorario, se espere 1 segundo y vuelva a girar 90° en sentido horario. Entonces el sensor de color debe volver a medir el color, y en caso de que aun sea diferente, debe volver a repetir el proceso hasta que aparezca alguno de los otros colores (verde, rojo o azul), entonces el servo girara en 90° en sentido horario. El problema es que no se como realizar esto. Si alguien pudiera ayudarme lo agardeceria mucho. Anexo mi codigo que ya funciona para medir los colores. (el servomotor es de giro continuo, es el MG 996R)

#include <Servo.h>

#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

Servo servo1;
 
int redMin = 157; // VALOR MINIMO ROJO
int redMax = 237; // VALOR MAXIMO ROJO
int greenMin = 156; // VALOR MINIMO VERDE
int greenMax = 237; // VALOR MAXIMO VERDE
int blueMin = 102; // VALOR MINIMO AZUL
int blueMax = 155; // VALOR MAXIMO AZUL
 
int redPW = 0;
int greenPW = 0;
int bluePW = 0;

int color = 0;
 
int redValue;
int greenValue;
int blueValue;
 
void setup() {

  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);

  pinMode(sensorOut, INPUT);
  
  // FRECUENCIA AL 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  servo1.attach(10);
  servo1.write(180); 
  delay(650);
  servo1.write(90); 
  delay(2000);
  
  Serial.begin(9600);
}
 
void loop() {
  
  // LEER VALOR ROJO
  redPW = getRedPW();
  // Map to value from 0-255
  redValue = map(redPW, redMin,redMax,255,0);
  // Delay to stabilize sensor
  delay(100);

  // LEER VALOR VERDE
  greenPW = getGreenPW();
  greenValue = map(greenPW, greenMin,greenMax,255,0);
  delay(100);
  
  // LEER VALOR AZUL
  bluePW = getBluePW();
  blueValue = map(bluePW, blueMin,blueMax,255,0);
  delay(100);
  
  Serial.print("Red = ");
  Serial.print(redValue);
  Serial.print(" - Green = ");
  Serial.print(greenValue);
  Serial.print(" - Blue = ");
  Serial.print(blueValue);
  Serial.print(" - Color = ");
  Serial.println(color);

  if(redValue<170 & redValue>110 & greenValue<70 & greenValue>20 & blueValue<80 & blueValue>30){
    color = 1; // ROJO
  }
  else if(redValue<170 & redValue>120 & greenValue<190 & greenValue>120 & blueValue<105 & blueValue>70){
    color = 2; // VERDE
  }
  else if(redValue<60 & redValue>0 & greenValue<60 & greenValue>0 & blueValue<100 & blueValue>50){
    color = 3; // AZUL
  }
  else{
    color = 0; // OTRO COLOR
  }
  return color; 
}
 
// FUNCION PARA LEER ROJO
int getRedPW() {  
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  int PW;
  PW = pulseIn(sensorOut, LOW);
  return PW; 
                  }
 
// FUNCION PARA LEER VERDE
int getGreenPW() {
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  int PW;
  PW = pulseIn(sensorOut, LOW);
  return PW; 
                }
 
// FUNCION PARA LEER AZUL
int getBluePW() {
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  int PW;
  PW = pulseIn(sensorOut, LOW);
  return PW; 
                }

Mira la librería Servo y ejecuta sus ejemplos.

Servo.write()
te permite mover un servo a la posicion deseada.

Si miras la información dice:

Syntax
servo.write(angle)

Parameters
servo: a variable of type Servo

angle: the value to write to the servo, from 0 to 180

Entonces de 0 a 90 de 90 a 180 y de regreso.

necesito que el servo gire 90° antihorario,

regrésalo a 0. Muy simple.

Lo vuelves a 90 y lo regresas a 0

Gracias por responder, pero en lo que necesito ayuda es en hacer que una vez terminado el movimiento del servo mande a llamar al sensor de color para que este pueda calcular el color y en caso de que sea otro color aparte del azul,verde o rojo vuelva a mover al servo. No se que funcion ocupar en un caso como ese.

Como ejemplo trate de usar un if, pero no mueve el servo. No se de que manera arreglar eso.

  if(redValue<170 & redValue>110 & greenValue<70 & greenValue>20 & blueValue<80 & blueValue>30){
    color = 1; // ROJO
  }
  else if(redValue<170 & redValue>120 & greenValue<190 & greenValue>120 & blueValue<105 & blueValue>70){
    color = 2; // VERDE
  }
  else if(redValue<60 & redValue>0 & greenValue<60 & greenValue>0 & blueValue<100 & blueValue>50){
    color = 3; // AZUL
  }
  else if(redValue<30 & redValue>0 & greenValue<30 & greenValue>0 & blueValue<30 & blueValue>0){
    color = 4; // NEGRO
  }
  else{
    color = 0; // OTRO COLOR
  }
  
  if(color = 0){
    
  Serial.println("EL COLOR NO ES VALIDO");
  servo1.write(0);
  delay(650);
  servo1.write(90);
  delay(1000); 
  servo1.write(180);
  delay(650); 
  }
  
  return color;