Banda transportadora de objetos

Buenos días.
Busco el apoyo para un proyecto que estoy realizando se trata de:
de una banda transportadora con tres sensores infrarrojos los cuales identifican caja por tamaño chicas,medias y grandes e ir contando respectivamente por tamaño y mostrarlas en una lcd
El detalle que tengo es el siguiente:
-si sensor1 se activa el motor se detiene, que cuente la caja y avance aunque se active sensor2 sensor3
-si sensor2 se activa el motor se detiene, que cuente la caja y avance aunque se active sensor1 sensor3
-si sensor3 se activa el motor se detiene, que cuente la caja y avance aunque se active sensor1 sensor2

les agradeceria muchisimo su ayuda buen dia.

#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,10,11,12,13); //rs,e,d4,d5,d6,d7
int Motor=4; //  declaramos  las variables de tipo entero
int sensor1=5;
int sensor2=6;
int sensor3=7;
int estado1=0,estado2=0,estado3=0; 
int cont1=0, cont2=0, cont3=0;

void setup() {
  
  lcd.begin(16,2);  
  pinMode (Motor, OUTPUT);               // designamos los pines como pines de salida y entrada
  pinMode (sensor1, INPUT);
  pinMode (sensor2, INPUT);
  pinMode (sensor3, INPUT);
  lcd.setCursor(0,0);     // situamos el cursor el la posición 2 de la linea 0.
  lcd.print("BANDA"); // escribimos en LCD
  delay (2000);
  lcd.clear();
  Serial.begin(9600) ;
  digitalWrite(Motor,HIGH);
}

void loop() {  
     estado1=digitalRead (sensor1);
     if (estado1==HIGH)
     {
     digitalWrite(Motor,LOW);
     digitalWrite(estado2,LOW);
     digitalWrite(estado3,LOW);
     cont1++;
     while (estado1==HIGH)
         {
     estado1=digitalRead(sensor1);
         }
     }
     if (estado1==LOW){ 
          digitalWrite(Motor,HIGH);
                            }
     ///// fin de contador1
     estado2=digitalRead (sensor2);
     if (estado2==HIGH)
     {
     digitalWrite(Motor,LOW);
     digitalWrite(estado1,LOW);
     digitalWrite(estado3,LOW);
     cont2++;
     while (estado2==HIGH)
     {
     estado1=digitalRead(sensor2);
     }
     }
     if (estado2==LOW){ 
          digitalWrite(Motor,HIGH);
     //////fin contador2
     estado3=digitalRead (sensor3);
     if (estado3==HIGH)
     {
     digitalWrite(Motor,LOW);
     digitalWrite(estado1,LOW);
     digitalWrite(estado2,LOW);
     cont3++;
     while (estado3==HIGH)
     {
     estado1=digitalRead(sensor3);
     }
     }
     if (estado3==LOW){ 
          digitalWrite(Motor,HIGH);
     //////fin contador 3
     
     ///////// Datos de SEONSORES en LCD//////////////
     ////////////////////////////////////CAJAS CHICAS
     lcd.setCursor(8,0);
     lcd.print("C:");
     lcd.setCursor (10,0);
     lcd.print(cont1);
     ////////////////////////////////////////CAJAS MEDIANAS
     lcd.setCursor(8,1);     
     lcd.print("M:");
     lcd.setCursor(10,1);  
     lcd.print(cont2); 
     ////////////////////////////////////////CAJAS GRANDES
     lcd.setCursor(0,0);    
     lcd.print("G:");
     lcd.setCursor(2,0);
     lcd.print(cont3);
     //////////////////////////////////////////
}

Y cual es el problema?

Por favor dos o tres cosas:
1. En el titulo no pongas Ayuda URGENTE ni urgente porque ese es tu problema. Acá el que viene a consultar lo hace con paciencia. Tu urgencia se debe a subestimar el trabajo, a no haber estudiado o vaya a saber qe otra razón, pero no es algo que debes expresar en tus comentarios.
2. Los códigos deben ir con la etiqueta de código, no con citas como fueron posteados. De todas formas valoro el intento.
3. Intenta explicar que has hecho y que hace mal tu programa siempre. No tenemos porque estar investigando de que se trata porque te aseguro que pocos o nadie te va a responder.
Además lee las Normas del foro.