Pessoal Boa Tarde,
Sou novo no LDG e estou engantinhando em arduino.
Estou tentando desenvolver um projeto para medição de vazão de água e controle de uma válvula. A vazão será mostrada no display lcd e a válvula sera fechada ou aberta via serial. Consegui visualizar e controlar a valvula. Estou tentando escreve uma segunda linha no display indicando quando a valvula estiver fechada e a tecla D do teclado for acionada a mensagem: Valvula fechada.Abaixo tem o programa com estou usando:
float vazao; //Variável para armazenar o valor em L/min
float media=0; //Variável para tirar a média a cada 1 minuto
int contaPulso; //Variável para a quantidade de pulsos
int i=0; //Variável para contagem
float total=0;
int botao;
float Q=vazao;
float T=total;
int abre = 11;
int fecha = 12;
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{
Serial.begin(9600); //Inicia a serial com um baud rate de 9600
pinMode(abre, OUTPUT);
pinMode(fecha, OUTPUT);
pinMode(2, INPUT);
attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) para trabalhar como interrupção
Serial.println("\n\nInicio\n\n"); //Imprime Inicio na serial
lcd.begin(16, 2);
lcd.setCursor(4,0);
lcd.clear();
lcd.setCursor(0,0);
lcd.print ("Vazao:");
lcd.setCursor(13,0);
lcd.print ("l/s");
lcd.setCursor(0,1);
lcd.print ("Vol:");
lcd.setCursor(14,1);
lcd.print ("M3");
}
void loop ()
{
contaPulso = 0; //Zera a variável para contar os giros por segundos
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
total=media/60; // valor da volume em L
i++;
char tecla;
tecla = Serial.read(); // armazena em "tecla" o retorno da função read()
//essa função lê um valor que é escrito na porta serial
if(tecla == 'l') //verfica se a tecla digitada é igual a l (liga)
//se for igual entra na condiçao e liga o led
{
digitalWrite(abre, HIGH);
delay(3000);
digitalWrite(abre, LOW);
}
delay(1000);
if(tecla == 'd') //verfica se a tecla digitada é igual a l (liga)
//se for igual entra na condiçao e liga o led
{
digitalWrite(fecha, HIGH);
delay(3000);
digitalWrite(fecha, LOW);
}
delay(1000);
Serial.print(vazao); //Imprime na serial o valor da vazão
Serial.print(" L/min - "); //Imprime L/min
Serial.print(i); //Imprime a contagem i (segundos)
//Serial.println("s"); //Imprime s indicando que está em segundos
if(i==1)
{
media = media; //Tira a media dividindo por 60
Serial.print(" TOTALIZADOR "); //Imprime a frase Media por minuto =
Serial.print(total); //Imprime o valor da media
Serial.println(" M3 "); //Imprime L/min
// media = 0; //Zera a variável media para uma nova contagem
i=0; //Zera a variável i para uma nova contagem
Serial.println("\n\nInicio\n\n"); //Imprime Inicio indicando que a contagem iniciou
lcd.setCursor(7,0);
lcd.print (vazao);
lcd.setCursor(5,1);
lcd.print (total);
}
}
void incpulso ()
{
contaPulso++; //Incrementa a variável de contagem dos pulsos
}
Tags:
Bom dia Everton,
Legal a sua idéia,
Voce está tendo alguma dificuldade com este sketch?
Rui
OLa Rui ,
Boa tarde,
Sim estou tentando minha ideia é criar outra tela no display que mostra uma mensagem indicando que a valvula esta fechada. Isto quando via serial e apertar a tecla D do teclado do notebook.Voce tem alguma ideia sobre isto
Everton, boa noite.
Modifique as linha do LCD e acrescente outras ficando assim:
if (tecla == 'l')
{
lcd.setCursor(7,0);
lcd.print (vazao);
lcd.setCursor(5,1);
lcd.print (total);
}
else
{
lcd.setCursor(7,0);
lcd.print (" ");
lcd.setCursor(5,1);
lcd.print ("Val. Fechada");
}
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por