Olla boa galera...

Estou com um pequeno problema que nao sei resolver na programaçao de um sensor de fluxo de agua...

Esse codigo que irei passar é para apenas 1 sensor... ele calcula a vazao e o total.

Só que adicionei mais um sensor no circuito.. e no caso ele teria o trabalho de subtrair o valor total do primeiro, apenas o que ele ja somou do que passa pelo primeiro sensor... 

E nao sei como modificar meu codigo para tal funçao... se caso alguem saiba mudar direitinho e tbm a ordem na hr de mostra no LCD16x2 q estou usando para este projeto..

Agradeço desde ja XD

o codigo segue a baixo>>>

#include <LiquidCrystal.h>

float vazao; //Variável para armazenar o valor em L/min
float media=0; //Variável para fazer a média
int contaPulso; //Variável para a quantidade de pulsos
short int i=0; //Variável para contagem
float Litros = 0; //Variável para Quantidade de agua
float MiliLitros = 0; //Variavel para Conversão


LiquidCrystal lcd(12, 11, 6, 5, 4, 2);


void setup()
{
Serial.begin(9600);

lcd.begin(16, 2);
lcd.setCursor( 0, 0);
lcd.println("Sensoriamento de");
lcd.setCursor( 0, 1);
lcd.println(" fluxo de Agua ");
delay(3000);

lcd.clear();
pinMode(9, INPUT);
attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
}


void loop ()
{
contaPulso = 0;//Zera a variável
sei(); //Habilita interrupção
delay (1000); //Aguarda 1 segundo
cli(); //Desabilita interrupção

vazao = contaPulso / 5.5; //Converte para L/min
media=media+vazao; //Soma a vazão para o calculo da media
i++;
lcd.clear();

lcd.setCursor(0,0);
lcd.print(vazao); //Escreve no display o valor da vazão
lcd.print(" L/min "); //Escreve L/min

lcd.setCursor(0,1);

lcd.print(i); //Escreve a contagem i (segundos)
lcd.print("s "); //Escreve s indicando que está em segundos
MiliLitros = vazao/60;
Litros = Litros + MiliLitros;
lcd.print(Litros);
lcd.println("L ");

// Neste conjunto de linhas fizemos a média das leituras obtidas a cada 1 minuto
if(i==60)
{
media = media/60; //faz a média
Serial.print("\nMedia por minuto = "); //Imprime a frase Media por minuto =
Serial.print(media); //Imprime o valor da media
Serial.println(" L/min - "); //Imprime L/min
// Você pode imprimir no display também na minha opinião


media = 0; //Zera a variável media para uma nova contagem
i=0; //Zera a variável i para uma nova contagem
}


}


void incpulso ()
{
contaPulso++; //Incrementa a variável de pulsos
}

Exibições: 252

Responder esta

Respostas a este tópico

Não sei se da certo, ou se vc ja tentou.

Tira a função void loop() e usa void sensor1() e void sensor2()

e faz o acionamento dentro de cada estrutura separadamente junto com a amostragem do LCD

assim o LCD vai mostrar o valor do sensor lido na hora.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço