Como hacer que un pin de la arduino se active por cierto tiempo HELP

Buenos dias compañeros me dirijo a ustedes que tienen mucha mas experiencia en programacion y agradezco su colaboración. El detalle es el siguiente :
quiero que cuando se cumpla cada una de las condiciones el pin 4 de la arduino se ponga en alto pero por solo unos segundos y luego se apague y asi para cada una de las condiciones del codigo por favor les agradesco su colaboracion asigno el codigo para que me ayuden

#include <Servo.h>
#include <LiquidCrystal.h>
int Pin = 13; //servo uno llenado
int Pin2 = 12;//srvo dos tanque
int n2 = 9;//sensor bajo
int v2 = 10; //sensor de alto
int v1 = 11;//sensor de calle
int rele_servo = 4;//rele para servo que activa alimentacion de motor
int n1 = 0;
int bajo = 0;
int calle = 0;
int p = 0;
Servo servouno;  //salida tanque
Servo servodos;  //llena tanqueNombramos al primer servo
LiquidCrystal lcd(23, 25, 27, 29, 31, 33); //4,6,11,12,13,14
//// K negrita


void setup() 
{
//  // Dibuja la cara sonriente//Configuración
  lcd.begin(16, 2);
//lcd.print("-Leyendo Sensor-");
//delay(1);  
   pinMode(v1, INPUT);
   pinMode(v2, INPUT);
   pinMode(n2, INPUT);
   pinMode(rele_servo, OUTPUT);
   servouno.attach(Pin);
   servodos.attach(Pin2);
 } 

void loop()

{
  calle = digitalRead(v1);
  n1= digitalRead(v2);
  bajo=digitalRead(n2);
//  luz = digitalRead(s2);      
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

if((calle == HIGH && n1 == LOW && bajo == HIGH)||(calle == HIGH && n1 ==  LOW && bajo == LOW))// aqui dentro es que quiero que prenda el rele por lo menos 10s para q alimente los motores 
pero que lo haga una vez cuando se cupla la condicion osea que no repita el ciclo
  {
 
   servouno.write (90);
   servodos.write (0);
   
   lcd.setCursor (0,0);
   lcd.print("Nivel: ALTO   ");
   delay(2000);
   lcd.setCursor (0,0);
   lcd.print("Estado: TANQUE");
     
    }
   else if(calle == LOW && n1 == HIGH && bajo == HIGH) // aqui dentro es que quiero que prenda el rele por lo menos 10s para q alimente los motores 
pero que lo haga una vez cuando se cupla la condicion osea que no repita el ciclo
  {
    {
    servouno.write (90);
    servodos.write (0);

    lcd.setCursor(0,0);
    lcd.print("Estado:ACUEDUCTO");  
    delay(2000);
    lcd.setCursor (0,0);
    lcd.print("Nivel: BAJO     ");
    }
else if(calle == LOW && n1 == HIGH && bajo == LOW)// aqui dentro es que quiero que prenda el rele por lo menos 10s para q alimente los motores 
pero que lo haga una vez cuando se cupla la condicion osea que no repita el ciclo
  {
    { 
    servouno.write(90);
    servodos.write(90);
    
     lcd.setCursor(0,0);
    lcd.print("Estado:ACUEDUCTO"); 
    delay(2000);
    lcd.setCursor(0,0);
    lcd.print("Nivel: ALTO     ");
    
}else if(calle == HIGH && n1 == HIGH  && bajo == LOW)//  aqui dentro es que quiero que prenda el rele por lo menos 10s para q alimente los motores 
pero que lo haga una vez cuando se cupla la condicion osea que no repita el ciclo
  {
     { 
   
   servouno.write(0);
   servodos.write(90);
   lcd.setCursor(0,0);
   lcd.print("Estado:LLENABOM ");
   delay(2000);
   lcd.setCursor(0,0);        
   lcd.print("Nivel: BAJO      ");
   }
else if (calle == HIGH && n1 == HIGH && bajo == HIGH)//  aqui dentro es que quiero que prenda el rele por lo menos 10s para q alimente los motores 
pero que lo haga una vez cuando se cupla la condicion osea que no repita el ciclo
  {
   {
   servouno.write(0);
   servodos.write(90);
 
   lcd.setCursor(0,0);
   lcd.print("Estado:LLENABOM ");
   delay(2000);
   lcd.setCursor(0,0);        
   lcd.print("Nivel: BAJO     ");
}else{  //  aqui dentro es que quiero que prenda el rele por lo menos 10s para q alimente los motores 
pero que lo haga una vez cuando se cupla la condicion osea que no repita el ciclo
  {
 servouno.write(90);
 servodos.write(90);
 
 lcd.setCursor(0,0);
 lcd.print("Estado:ACUEDUCTO ");
 delay(2000);
 lcd.setCursor(0,0);
 lcd.print("Nivel: ALTO       ");
}

}

Por favor lee las normas del foro y usa tags para insertar códigos. Vas a More, Modify y luego usas el ícono </> luego de seleccionar todo el código.

prender el rele

digitalWrite(pin, HIGH);
delay(10000); // 10 segundos

Agregalo donde lo necesites, ahora usar delay te bloquea todo lo demás y hasta terminar los 10 segundos no hará mas nada.

amigo gracias por la recomendación del uso del foro. Con lo que me recomiendas que agregue al codigo no es lo deseado ya agregue esa parte del código en los if y lo que hace es que el pin 4 del arduino quede siempre prendido.
y lo que yo quiero es que ponga en alto el pin 4 durante unos segundos cada vez que se de una de esas condiciones y deje activar lo servos a la vez ya que es para la alimentación de ellos.

osea:
condicion : pin 4:
1 0 1 or 1 0 0 ----------------------high por x segundos y luego se ponga a low pero que no haga blink.

y asi para el resto de condiciones

Gracias .

¿Quien me puede ayudar con eso por favor donde están los máster? ;(

A ver Aprendiz, aprende a expresarte correctamente.
En todos tus if dices y cito

// aqui es que quiero que prenda el rele por lo menos 10s

#include <Servo.h>
#include <LiquidCrystal.h>
int Pin 	= 13; //servo uno llenado
int Pin2 	= 12;//srvo dos tanque
int n2 		= 9;//sensor bajo
int v2 		= 10; //sensor de alto
int v1 		= 11;//sensor de calle
int rele_servo = 4;//rele para servo que activa alimentacion de motor
int n1 		= 0;
int bajo 	= 0;
int calle 	= 0;
int p 		= 0;
Servo servouno;  //salida tanque
Servo servodos;  //llena tanqueNombramos al primer servo
LiquidCrystal lcd(23, 25, 27, 29, 31, 33); //4,6,11,12,13,14
//// K negrita


void setup() {
	//  // Dibuja la cara sonriente//Configuración
	lcd.begin(16, 2);
	//lcd.print("-Leyendo Sensor-");
	//delay(1);  
	pinMode(v1, INPUT);
	pinMode(v2, INPUT);
	pinMode(n2, INPUT);
	pinMode(rele_servo, OUTPUT);
	servouno.attach(Pin);
	servodos.attach(Pin2);
	} 

void loop()

{
	calle = digitalRead(v1);
	n1= digitalRead(v2);
	bajo=digitalRead(n2);
	//  luz = digitalRead(s2);      
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

	if ((calle == HIGH && n1 == LOW && bajo == HIGH)||(calle == HIGH && n1 ==  LOW && bajo == LOW)) { // aqui dentro es que quiero que prenda el rele por lo menos 10s para q alimente los motores

		servouno.write (90);
		servodos.write (0);
	        digitalWrite(rele_servo, HIGH);
		delay(10000);
                digitalWrite(rele_servo, LOW);

                lcd.setCursor (0,0);
		lcd.print("Nivel: ALTO   ");
		delay(2000);
		lcd.setCursor (0,0);
		lcd.print("Estado: TANQUE");

	}
	else if(calle == LOW && n1 == HIGH && bajo == HIGH) { //aqui es que quiero que prenda el rele por lo menos 10s
	   	servouno.write (90);
	   	servodos.write (0);

	        digitalWrite(rele_servo, HIGH);
		delay(10000);
                digitalWrite(rele_servo, LOW);
	   	lcd.setCursor(0,0);
	   	lcd.print("Estado:ACUEDUCTO");  
	   	delay(2000);
	   	lcd.setCursor (0,0);
	   	lcd.print("Nivel: BAJO     ");
	   }
	else if (calle == LOW && n1 == HIGH && bajo == LOW) {  // aqui es que quiero que prenda el rele por lo menos 10s 	
		servouno.write(90);
		servodos.write(90);

	        digitalWrite(rele_servo, HIGH);
		delay(10000);
                digitalWrite(rele_servo, LOW);			lcd.setCursor(0,0);
		lcd.print("Estado:ACUEDUCTO"); 
		delay(2000);
		lcd.setCursor(0,0);
		lcd.print("Nivel: ALTO     ");
	}
	else if(calle == HIGH && n1 == HIGH  && bajo == LOW) { // aqui es que quiero que prenda el rele por lo menos 10s 
		servouno.write(0);
		servodos.write(90);
	        digitalWrite(rele_servo, HIGH);
		delay(10000);
                digitalWrite(rele_servo, LOW);
		lcd.setCursor(0,0);
		lcd.print("Estado:LLENABOM ");
		delay(2000);
		lcd.setCursor(0,0);        
		lcd.print("Nivel: BAJO      ");
	}
	else if (calle == HIGH && n1 == HIGH && bajo == HIGH) { // aqui es que quiero que prenda el rele por lo menos 10s
		servouno.write(0);
		servodos.write(90);

                digitalWrite(rele_servo, HIGH);
		delay(10000);
                digitalWrite(rele_servo, LOW);
		lcd.setCursor(0,0);
		lcd.print("Estado:LLENABOM ");
		delay(2000);
		lcd.setCursor(0,0);        
		lcd.print("Nivel: BAJO     ");
	} else{  // aqui es que quiero que prenda el rele por lo menos 10s 
		servouno.write(90);
		servodos.write(90);

		digitalWrite(rele_servo, HIGH);
		delay(10000);
                digitalWrite(rele_servo, LOW);
		lcd.setCursor(0,0);
		lcd.print("Estado:ACUEDUCTO ");
		delay(2000);
		lcd.setCursor(0,0);
		lcd.print("Nivel: ALTO       ");
	}
}

Amigo veo que tienes toda la intención de ayudarme pero te digo que si grabas ese código en la arduino vas a ver que el pin 4 pasa a low y luego se repite el ciclo y eso es lo que yo no quiero que repita el ciclo yo quiero que cuando se cumpla la condición se mantenga en high el pin cuatro durante x segundos y después apague (low) y no vuelva a ponerse en (high) me hago entender amigo.

gracias espero tu respuesta.

Veo 4 o 5 condiciones donde siempre dices quiero que se prenda durante 10 segundos.
Si quieres que se encienda durante 10 segundos y luego apague, la respuesta es la que te di.
Si quieres que se encienda con una condicion y se apague con la otra, entonces, en un if pones HIGH y en el else pones el LOW.

Amigo si quiero q prenda por x segundos y luego apague y no vuelva a encender solo si pasa a otra condicion de las que estan hay en el codigo osea que quiero q haga lo mismo en las demás condiciones como hago eso.

por que quiero eso?
por que nececito activar un rele para la alimentcion del servo para que cuando se ejecute la condiones if se prenda el rele y a la vez se alimente el servo para que se posiciones y luego se desactive el rele para quitar alimentacion del servo.¿ Entendido'? yo no quiero que con las otras condiciones haga cosas distintas.

Esto resume lo que se quiere :

las condiciones son: que debe hacer:

101 or 100------------------------------------------poner ´por 10s pin 4 alto para encender rele y luego apagar y no prender mas para cortar alimentacion del servo.
011--------------------------------------------------poner ´por 10s pin 4 alto para encender rele y luego apagar y no prender mas para cortar alimentacion del servo.
010--------------------------------------------------poner ´por 10s pin 4 alto para encender rele y luego apagar y no prender mas para cortar alimentacion del servo.
110--------------------------------------------------poner ´por 10s pin 4 alto para encender rele y luego apagar y no prender mas para cortar alimentacion del servo.
111--------------------------------------------------poner ´por 10s pin 4 alto para encender rele y luego apagar y no prender mas para cortar alimentacion del servo.
000--------------------------------------------------poner ´por 10s pin 4 alto para encender rele y luego apagar y no prender mas para cortar alimentacion del servo.

Espero los aporte de los demás compañeros solo se reporta el amigo surbyte.
¿esto esta así de cruel?

Gracias.

Cruel?
Te recomiendo que leas las Normas del Foro para que aprendas a no ser impaciente.
Nadie tiene obligación de responder. Todos acá ayudamos sin pedir nada a cambio.
Cuando alguien se excede, recibe lo contrario de lo que quiere.

Esta es mi ultima ayuda porque veo 0 aporte de tu parte.
Copias un código de la web, no te explicas bien, no lees las normas del foro y no ponesesfuerzo de tu parte.

Si no sabes nada de arduino, te recomiendo que vayas a DOCUMENTACION y veas los dos primeros hilos
Clases de arduino de 1 a 7 y clases de 8 en adelante.
Ahi vas a comprender mejor todo este mundo y podras aportar y colaborar en tu propia solución.

Espero que esto te ayude y sino bueno,

#include <Servo.h>
#include <LiquidCrystal.h>
int Pin 	= 13; 	//servo uno llenado
int Pin2 	= 12;	//srvo dos tanque

int n2 		= 9;	//sensor bajo
int v2 		= 10; 	//sensor de alto
int v1 		= 11;	//sensor de calle
int rele_servo = 4;	//rele para servo que activa alimentacion de motor
int n1 		= 0;
int bajo 	= 0;
int calle 	= 0;

byte estado;
Servo servouno;  //salida tanque
Servo servodos;  //llena tanqueNombramos al primer servo
LiquidCrystal lcd(23, 25, 27, 29, 31, 33); //4,6,11,12,13,14
//// K negrita


void setup() {
	//  // Dibuja la cara sonriente//Configuración
	lcd.begin(16, 2);
	//lcd.print("-Leyendo Sensor-");
	//delay(1);  
	pinMode(v1, INPUT);
	pinMode(v2, INPUT);
	pinMode(n2, INPUT);
	pinMode(rele_servo, OUTPUT);
	servouno.attach(Pin);
	servodos.attach(Pin2);
} 

void loop() {

	calle 	= digitalRead(v1);
	n1 		= digitalRead(v2);
	bajo 	= digitalRead(n2);
	estado  = calle << 2 + n1 << 1 + bajo;

	//  luz = digitalRead(s2);      
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    lcd.setCursor(0,0);
    switch (estado) {
    	case 0b101:
    	case 0b100:  digitalWrite(rele_servo, HIGH);
					servouno.write (90);
					servodos.write (0);
				    lcd.print("Nivel: ALTO   ");
				    delay(10000);
				    digitalWrite(rele_servo, LOW);
					lcd.print("Estado: TANQUE");
					break;

		case 0b011:  digitalWrite(rele_servo, HIGH);
				   	servouno.write (90);
	   				servodos.write (0);
	   				lcd.print("Estado:ACUEDUCTO"); 
	   				delay(10000);
				    digitalWrite(rele_servo, LOW);
	   			   	lcd.print("Nivel: BAJO     ");
	   				break;

	   	case 0b010:  digitalWrite(rele_servo, HIGH);
				   	servouno.write (90);
	   				servodos.write (0);
	   				lcd.print("Estado:ACUEDUCTO"); 
	   				delay(10000);
				    digitalWrite(rele_servo, LOW);
	   			   	lcd.print("Nivel: ALTO     ");
	   				break;

		case 0b110:  digitalWrite(rele_servo, HIGH);
				   	servouno.write (90);
	   				servodos.write (0);
	   				lcd.print("Estado:LLENABOM "); 
	   				delay(10000);
				    digitalWrite(rele_servo, LOW);
	   			   	lcd.print("Nivel: BAJO      ");
	   				break;

	   	case 0b111:  digitalWrite(rele_servo, HIGH);
				   	servouno.write (0);
	   				servodos.write (90);
	   				lcd.print("Estado:LLENABOM "); 
	   				delay(10000);
				    digitalWrite(rele_servo, LOW);
	   			   	lcd.print("Nivel: BAJO      ");
	   				break;

	   	case 0b000:  digitalWrite(rele_servo, HIGH); 
					servouno.write(90);
					servodos.write(90);
					lcd.print("Estado:ACUEDUCTO ");
					delay(10000);	
					digitalWrite(rele_servo, LOW);
					lcd.print("Nivel: ALTO       ");
					break;
	}
}

RESUELTO :slight_smile: