Ir para conteúdo
View in the app

A better way to browse. Learn more.

EletrônicaBR.com

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Navegação Limpa e Sem Anúncios! (Cadastre-se)

O melhor fórum técnico do mundo está de cara nova e de portas abertas! Estamos de cara nova e com ferramentas ainda mais poderosas para a sua bancada. Faça o seu cadastro de forma rápida e simples para acessar o maior e mais atualizado acervo de Esquemas Elétricos, BIOS e Firmwares da internet.

Aqui, o conhecimento vale muito: através do nosso sistema de créditos, membros participativos ganham acesso totalmente gratuito aos downloads. Venha trocar experiências com os melhores especialistas do mercado!

👉 Técnico sem o EletrônicaBR não é um técnico completo!

 

Input com Retardo ou Delay no Arduino

Featured Replies

Postado

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

Postado

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!

  • 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

Account

Navigation

Pesquisar

Pesquisar

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.