Como ler os dados de dois sensores de vazão, e enviar as informaçoes de cada um deles para uma tela LCD

Boa tarde amigos! 

Estou começando na programaçao do arduino. Consegui fazer (depois de ver e analizar muitos tutorias e exemplos) com que ele leia e imprima num LCD16x2 os dados de 1 sensor de vazao. Agora quero colocar outro na mesma placa. Mas não consigo entender como separar as informaçoes de um e outro. 

O codigo para leitura de 1 sensor: 

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

pinMode(2, INPUT);

attachInterrupt(0, incpulso, RISING); 
}


void loop ()
{
contaPulso = 0;
sei();
delay (1000);
cli(); 

vazao = (contaPulso * 10.6327); //Converte para Ml/min

Desde já agradeço a ajuda. Já estou quase comprando outro arduino e fazendo o mesmo para o outro sensor. kkkkk

Exibições: 712

Responder esta

Respostas a este tópico

Ola, eu nunca trabalhei com sensor de vazãao, mas segundo seu codigo seria algo do tipo:

Você deve criar uma funçao para cada com o void, assim ficam independentes.

EX:

#include <LiquidCrystal.h>

int PinSensor1 = 2;
int PinSensor2 = 3;

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


void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(PinSensor1 , INPUT);
pinMode(PinSensor1 , INPUT);
attachInterrupt(0, incpulso, RISING);
}

void sensor1() {
contaPulso = 0;
sei();
delay (1000);
cli();
vazao = (contaPulso * 10.6327);
}

void sensor2() {
contaPulso = 0;
sei();
delay (1000);
cli();
vazao = (contaPulso * 10.6327);

}

void loop ()
{
lcd.setCursor(0,0);
lcd.print(sensor1); // chama a função voide
lcd.setCursor(0,1);
lcd.print(sensor2); // chama a função voide

}

Obrigada! Já vou fazer as alteraçoes com essa ideia de duas voids... faz muito sentido. Vamos ver como roda! Muito grata pela ajuda! 

Me parece que o codigo que você postou está incompleto, por exemplo, as funções "incpulso", "sei" e "cli" estão sendo usadas mas não vejo nenhum definição delas.

Posta o codigo completo (se for grande usa o codebin)

o Programa é pequeno. Olha só... consigo ver as informaçoes que preciso de um sensor. Se conseguir colocar os dois em um arduino, vou ver um LCD maior e imprimir a mesma informaçao dos dois.  

As informaçoes que uso é Ml/Min Instantaneo, a média ml/min  a cada 60 segundos e o total de litros. 

#include <LiquidCrystal.h>

float vazao;
float media = 0; 
int contaPulso; 
int i = 0; 
int Min = 00; 
float Litros = 0; 
float MiliLitros = 0;


LiquidCrystal lcd(8, 7, 6, 5, 4, 3);


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

lcd.begin(16, 2);
lcd.setCursor( 0, 0);
lcd.print("FLUXO VAZAO DE");
lcd.setCursor( 0, 1);
lcd.print("VENENO");
delay(3000);
lcd.clear();

pinMode(2, INPUT);
attachInterrupt(0, incpulso, RISING); 
}


void loop ()
{
contaPulso = 0;
sei();
delay (1000); 
cli(); 

vazao = (contaPulso * 10.6327); 
media = media + vazao; 
i++;
lcd.setCursor(0, 0);
lcd.print(vazao); 
lcd.setCursor(8,0);
lcd.print("ml/m"); 
lcd.setCursor(14, 0);

lcd.print(i); 

MiliLitros = vazao/60/1000;
Litros = Litros + MiliLitros;
lcd.setCursor(0,1);
lcd.print(Litros);

lcd.print("L");


if (i == 60)
{
Min++;

if (Min >= 60)
{
Min = 0;
}
media = media / 60; 
lcd.setCursor( 9, 1);
lcd.print("Md=");
lcd.print(media);
media = 0; 
i = 0; 
}

}


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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço