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);
}
}