banda transportadora

Buenas tardes amigos soy nuevo en esto de programación con arduino, discúlpenme si rompo alguna regla del foro :-[ y les quiero pedir su ayuda con un proyecto que estoy elaborando en verdad es algo simple pero si no has manejado esta plataforma con anterioridad la simpleza se va reduciendo, se trata de una cinta transportadora con 3 sensores de presencia, necesito que al llegar a cada sensor se detenga la banda ya active una solenoide para dosificar producto eso ya lo tengo (mediante un delay) pero después necesito que vuelva a arrancar la banda pero no arranca porque el sensor que hizo que se detuviera sigue activo y no se como desactivarlo momentáneamente para que pueda volver a prender la banda.

de antemano agradezco su disposición y amabilidad.

//  DECLARACION DE SALIDAS DIGITALES PARA ELECTROVALVULAS DE INYECCION DE PRODUCTO.

int SOLENOIDE1 = 8;
int SOLENOIDE2 = 9;
int SOLENOIDE3 = 10;
int PARARBANDA = 11;


// DECLARACION DE ENTRADAS DIGITALES DE SENSORES DE POSICION Y DE SELECTOR DE 2 POSICIONES.

int sensorposicion1 = 2;
int sensorposicion2 = 3;
int sensorposicion3 = 4;
int selectorposicion1 = 5;
int selectorposicion2 = 6;


// ASIGNACION INICIAL DE VALORES PARA ENTRADAS DIGITALES ANTES DE LEERLOS.


int valor1 = 0;
int valor2 = 0;
int valor3 = 0;
int valor4 = 0;
int valor5 = 0;


void setup()
{

  
  // ASIGNACION DE SALIDAS DIGITALES.
  
  pinMode(SOLENOIDE1, OUTPUT);  //definir pin como salida
  pinMode(SOLENOIDE2, OUTPUT);  //definir pin como salida
  pinMode(SOLENOIDE3, OUTPUT);  //definir pin como salida
  pinMode(PARARBANDA, OUTPUT);  //definir pin como salida
 

  // ASIGNACION DE ENTRADAS DIGITALES.
 
  pinMode(sensorposicion1, INPUT);  //definir pin como entrada
  pinMode(sensorposicion2, INPUT);  //definir pin como entrada
  pinMode(sensorposicion3, INPUT);  //definir pin como entrada
  pinMode(selectorposicion1, INPUT);  //definir pin como entrada
  pinMode(selectorposicion2, INPUT);  //definir pin como entrada

}


void loop()
{
  
  
  // LECTURA DE ENTRADAS DIGITALES: SENSORES DE POSICION Y SELECTOR.
  
  valor1 = digitalRead( sensorposicion1 );
  valor2 = digitalRead(sensorposicion2 );
  valor3 = digitalRead( sensorposicion3 );
  valor4 = digitalRead( selectorposicion1 );
  valor5 = digitalRead( selectorposicion2 );
 

  
  //SI NO ESTA PRESENTE LA SEÑAL DEL SENSOR 1 MANDA PRENDER LA ELECTROVALVULA 1 POR 1 SEGUNDO Y MANDA PARAR LA BANDA. 

  if 
    (valor1 == LOW) {
    digitalWrite(PARARBANDA, LOW);
    digitalWrite(SOLENOIDE1, HIGH);
    delay (1000);
    }
    
    else 
    {
    digitalWrite(PARARBANDA, HIGH);
    digitalWrite(SOLENOIDE1, LOW);
    }
   
    
 //SI NO ESTA PRESENTE LA SEÑAL DEL SENSOR 2 MANDA PRENDER LA ELECTROVALVULA 2 POR 1 SEGUNDO Y MANDA PARAR LA BANDA. 

 if   
  (valor2 == LOW ){
  digitalWrite(PARARBANDA, LOW);
  digitalWrite(SOLENOIDE2, HIGH);
  delay (1000);
  digitalWrite(PARARBANDA, HIGH);
  digitalWrite(SOLENOIDE2, LOW); 
 
}


}

Hola y bienvenido al foro.

Te recomiendo que leas las NORMAS y verás que la sección de proyectos es para exponer tu proyecto acabado o casi. Para dudas de software se ha de usar la sección software. También que el código se ha de poner con etiquetas code, solo se pone como attachment si el código es muy extenso y el tuyo no lo es.

Cuando el código este bien posteado le echaremos un vistazo, pero vete haciendo a la idea: NO debes usar delay para nada.

primeramente una disculpa por tener errores conforme a las normas, desconocía que mi pregunta no iba en la sección de proyectos, ya anexe el código con etiquetas y como podrás observar aun no esta terminado te lo describo en forma breve: es una banda transportadora que contara con 3 sensores de presencia y en cada uno de ellos se debe parar la banda 1 segundo y al mismo tiempo que se para la banda debe activar una electro válvula de dosificación de producto durante 1 segundo y después de ese segundo de activación de la electro válvula debe volver a prender la banda transportadora hasta que llegue al próximo sensor y hacer la misma secuencia que en el sensor anterior. cuenta también con un selector de 2 posiciones que es el que le va a mandar los tiempos a la solenoide #3 y estará activada por el sensor #3.

gracias.

saludos.

Ve leyendo esto en Documentación => Indice de temas tutoriales => millis() y también lee máquina de estados.

Ahora edito este post y te propongo algo.

Aclara los estados de tu sensor.

LOW es no hay presencia?
HIGH es hay presencia?

Voy ir leyendo eso que me comentas, te agradezco y mis 3 sensores (sensor posiscion 1 2 y 3) son normalmente cerrados por lo cual el estado LOW es que esta sensando presencia y las otras 2 entradas (selectorposicion 1 y 2) LOW sera ausencia.

te agradezco y voy a leer lo que me recomiendas.

saludos.