DOBLE FUNCION DE SENSOR INFRARROJO + PROTEUS

Buenas!

En primer lugar les deseo buenos dias/tardes/ncoches.

El proyecto que estoy elaborando se denomina "Corte y perforacion" y consta de 3 sensores infrarrojos y cada uno se encarga de una funcion en particular por ejemplo el sensor 1 se encarga de encender un motor cuando este en HIGH y cuando este en LOW se encarga de apagar el motor y encender un taladro y un cilindro.
El caso es que los sensores como sabeis al principio mandan una señal HIGH y mi sensor 3 en el primer HIGH no debe hacer nada y cuando detecte un traladro se volvera LOW y tampoco debera hacer nada pero cuando otra vez detecte el taladro se volvera otra vez HIGH y ahi debera cumplir la funcion de apagar el taladro, he buscado por todos lados e intantado muchos metodos pero no logro hacerlo.
Si me podeis hechar una manita por favor se los agradeceria mucho.

Gracias de antemano.

Cabe mencionar que las pruebas la he estado realizando en Proteus por el momento.
A continuacion les muestro el codigo que he estado realizando:

const int S1 = 2;
const int S2 = 3;
const int S3 = 4;

const int MOTOR = 6;
const int TALADRO = 7;
const int SIERRA = 8;
const int CITAPO = 9;
const int CITANE = 10;
const int CISIPO = 11;
const int CISINE = 12;

int ESTADOBOTON;
int ESTADOS1;
int ESTADOS2;
int ESTADOS3;



void setup() 
{
  pinMode(MOTOR,OUTPUT);
  pinMode(TALADRO,OUTPUT);
  pinMode(SIERRA,OUTPUT);
  pinMode(CITAPO,OUTPUT);
  pinMode(CITANE,OUTPUT);
  pinMode(CISIPO,OUTPUT);
  pinMode(CISINE,OUTPUT);

  pinMode(BOTON,INPUT);
  pinMode(S1,INPUT);
  pinMode(S2,INPUT);
  pinMode(S3,INPUT);

  

}

void loop() 
{
ESTADOBOTON = digitalRead(BOTON);
ESTADOS1 = digitalRead(S1);
ESTADOS2 = digitalRead(S2);
ESTADOS3 = digitalRead(S3);

if (ESTADOS1==HIGH)  
  {
    digitalWrite(MOTOR,HIGH);
    digitalWrite(TALADRO, HIGH);
 digitalWrite(SIERRA, HIGH);

  }

if (ESTADOS1==LOW)
{
  digitalWrite(MOTOR,LOW);
  digitalWrite(CITAPO,HIGH);
  digitalWrite(TALADRO,LOW);
}

while (ESTADOS2==LOW)
{   
  digitalWrite(CITAPO,LOW);
  digitalWrite(CITANE,HIGH);
}

}