Ir para conteúdo
  • Cadastre-se

Input com Retardo ou Delay no Arduino

Avalie este tópico:


Leonardo Silveira

Posts em destaque

Olá gente Bom dia!!!!

Estou fazendo um projetinho com o arduíno mas agarrei em um ponto aqui e não consigo sair.

vou explicar como é o sistema.

 

É um sistema para encher a caixa dagua e a cisterna ou encher a cisterna puxando a agua da rua:

 

Quando a caixa d'agua acaba a água S1 é levado ao estado HIGH e a  bomba no pino 4 e a Valvula Solenoide V2 são ativados.

Se por algum acaso a cisterna ficar sem água a chave S2 é levada ao estado HIGH e a valvula V2 se apaga e as valvulas V1 e V3 ligam unto com a Bomba no Pino 4.

 

Até ai tudo bem. Está funcionando.

 

O problema é o seguinte:

 

Quero que quando a cisterna ficar sem água. A bomba ligue e as solenoides V1 e V3 liguem também..... mas depois de 30 segundos se não tiver fluxo de agua no sensor de fluxo F1 elas param e depois de 1 hora tentem de novo.

 

Seria mais ou menos assim a lógica.

 

SE S2 = HIGH

Ligue a  bomba (pino4) e Ligue V3 e V1 (pinos 11 e 13)

mas se não tiver fluxo 30 segundos depois desligue.

tente novamente 1 hora depois até encher a cisterna (s2 = LOW)

 

 

O Sketch que fiz está em anexo junto com o arquivo do fritzing.

 

Podem me ajudar?

 

 

// DEFININDO OS NOMES DAS VALVULAS, SENSORES E BOMBA

 

int v1 = 13;          // Valvula 1 Ligada na RUA

int v2 = 12;          // Valvula 2 Ligada na Saída de Água da Cisterna

int v3 = 11;          // Valvula Ligada na Entrada de Água da Cisterna

int bomba = 4;        // Bomba

int s1 = 7;            // Boia Eletrica de Nível da Caixa D'água

int s2 = 6;            // Boia Eletrica de Nível da Cisterna

int f1 = 10;          // Sensor de Fluxo de Água

 

 

// Definir os Pinos

void setup()  {

  pinMode(v1, OUTPUT);

  pinMode(v2, OUTPUT);

  pinMode(v3, OUTPUT);

  pinMode(bomba, OUTPUT);

  pinMode(s1, INPUT);

  pinMode(s2, INPUT);

  pinMode(f1, INPUT);

}

 

void loop()

 

{

 

if (digitalRead(s1) == HIGH && digitalRead(s2) == LOW)

 

{

digitalWrite (bomba, HIGH);

digitalWrite (v2, HIGH);

}

 

if (digitalRead(s2) == HIGH)

 

{

digitalWrite (bomba, LOW);

digitalWrite (v2, LOW);

{goto fill;}

}

 

if (digitalRead(s1) == LOW)

 

{

digitalWrite (bomba, LOW);

digitalWrite (v2, LOW);

}

 

while (digitalRead(s2) == HIGH)

 

{

fill:

digitalWrite (bomba, HIGH);

digitalWrite (v2, LOW);

digitalWrite (v1, HIGH);

digitalWrite (v3, HIGH);

}

 

if (digitalRead(s2) == LOW)

 

{

digitalWrite (v1, LOW);

digitalWrite (v3, LOW);

}

}

 

auto.JPG.fc1f322f238c27ced166bf7e9b050625.JPG

Link para o comentário
Compartilhar em outros sites

Arduino eu não entendo nada, mas verifique o pseudo-código baseado em C abaixo.

Se servir para o que você pretende, altere as sintaxes para que funcionem no arduino.

 

int tempo                                //cria uma variável inteira chamada tempo 

If (fluxo==0)                           //checa o fluxo de água
{
tempo=tempo+1 			//incrementa a variável tempo a cada execução do programa
delay_ms(1000) 			//delay de 1 segundo (em milisegundos)

If tempo==3600			// 1 hora, em segundos
{
	tempo=0		        //zera a variável tempo
	//suas funções a partir daqui
}
}

 

Resumindo:

O programa fará uma verificação no fluxo de água.

Se não houver, a variável é incrementada a cada execução do programa (que tem um delay de 1 segundo).

Quando a variável atingir o tempo de 1 hora (3600 segundos), ela é zerada e a partir daqui entra suas funções.

 

Boa Sorte!

Link para o comentário
Compartilhar em outros sites

  • 1 mês depois...

Participe agora da conversa!

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, faça login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Restaurar formatação

  Apenas 75 emoticons máximos são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir apenas como um link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Você não pode colar imagens diretamente. Envie ou insira imagens do URL.

SOBRE O ELETRÔNICABR

EletrônicaBR é o melhor fórum técnico online, temos o maior e mais atualizado acervo de Esquemas, Bios e Firmwares da internet. Através de nosso sistema de créditos, usuários participativos têm acesso totalmente gratuito. Os melhores técnicos do mundo estão aqui!
Técnico sem o EletrônicaBR não é um técnico completo! Leia Mais...
×
×
  • Criar Novo...