Estou montando um sensor de fluxo de agua, mas quando mando o programa pra o arduino o LCD fica como mostrado a baixo... Ficando distorcido e com metade da tela do LCD meio apagada.

Utilizo 5v no LCD separado..sem utilizar a saida 5v do arduino. ja tentei outros codigos na IDE do arduino mas continua falhado... como nao entendo muito de programaçao nao sei ao certo o que pode esta ocorrendo.


Se caso alguem saiba o que esta acontecendo e saiba resolver, desde ja agradeço. XD

O codigo que estou utilizando é o que esta logo 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, 7, 6, 5, 4);


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(2, 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.setCursor(0,0);
lcd.println(vazao); //Escreve no display o valor da vazão
lcd.println(" L/min "); //Escreve L/min
lcd.setCursor(0,1);
lcd.println(i); //Escreve a contagem i (segundos)
lcd.println("s "); //Escreve s indicando que está em segundos
MiliLitros = vazao/60;
Litros = Litros + MiliLitros;
lcd.println(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
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: 4331

Responder esta

Respostas a este tópico

 Olá Juan.

 Faça um pequeno teste... dentro da rotina "void setup()", ao final...depois do "lcd.clear()" , escreva nas duas linhas uma mensagem que ocupe todos os caracteres, por exemplo: linha 1 : "0123456789012345"  e linha 2: "abcdefghijklmnop".

 Depois faça uma rotina "void loop()" totalmente vazia, sem nada dentro, por exemplo: void loop(){ }

 E grave verificando se acontece o problema.

 Penso em duas possibilidades:

1) Caso não aconteça o problema, significa que você deve estar gravando muitas vezes a mesma região, tipo, mandando gravar uma frase e logo em seguida outra.

2) Caso aconteça, pode ser que o posicionamento do LCD esteja incorreto. Digo, o LCD em si possui algumas camadas, que seria o cristal líquido (o vidro), e na borda deste vidro é ligada membranas condutoras que vão até a placa. E para segurar todo mundo existe essa máscara preta de metal que aperta o conjunto.

   Em alguns casos é falta de aperto, (mas não force senão quebra o lcd), e em outros é o mau posicionamento da membrana.

Bem, antes de desmontar o LCD, existe outras formas de verificar a primeira opção. Podemos fazer simulado, seja no Proteus ou em qualquer outro software, ou mesmo algum amigo que possa gravar no Arduino com LCD dele.

Caso tenha tempo tento alguma dessas opções, mas faça o teste que falei das linhas e nos diga o que aconteceu.

Espero ter ajudado.

T++.

Entao cara fiz esse teste da rotina no codigo e mostra a mesma coisa com ate mais pixel falhados... ai tentei colocar uma library ja do arduino do cristal... e mostrou novamente essa imagem que nao tinha nada a ver com o codigo.... AI so depois que desconectei o arduino e conectei de novo ele volto ao normal...

Mas ae mandei o mesmo coidigo só para testar se ele mostrava certo e simplesmente nao mostrou nada no LCD.... Creio que seja algum BUG ou erro no arduino ou LCD.... ja nao tenho mais ideias do que fazer alem de abrir o LCD e tentar ver se é o cristal.

E sim tentei enumeras vezes com diversos codigos mas alguns dels mostra tbm com este msmo problema só que menor, fica legivel pelo menos... Nao sei se tem como "limpar" o arduino pra vr se resolve.

vejo na foto um potenciômetro conectado a 2 pinos do LCD. Qual a serventia daquele potenciômetro?

Ele serve para regular o contraste dos pixels que sao utilizados. Serve apenas como controle mesmo.

Tenta um capacitor de desacoplamento de uns 1uF próximo à alimentação do LCD (entre a alimentação e o terra). Coloca também um capacitor desses no pino de contraste do LCD. Qual a fonte que vc tá usando para alimentar o LCD?

De quanto é o pot??

Já tentou com a iluminação LED desligada?

Já deu uma olhada se vc precisaria de uns resistores de pull-up (para 5V) nos pinos de dados?

Vlw!

Como seria o posicionamento desses capacitores ?...  O potem é de 10k.... Acabei de testar com a iluminaçao desligada e deu no mesmo. :/

Ja no caso do pull-up nao sei como adiciona lo ao esquema do LCD.

Uso 5v da porta USB do PC... mas ja testei no arduino msmo e nao mudou em nada.

Usa um capacitor cerâmico com um terminal no terra e o outro no positivo. Mas faça a conexão do positivo bem perto, fisicamente, do pino de alimentação do display. Ajuda a diminuir ruídos da fonte.

Juan, vc já mediu a tensão nos terminais de alimentação tanto do arduino quanto no LCD com tudo funcionando?

Sugiro testar com uma outra fonte que não seja a USB do PC.

Pegar a alimentação do arduino é o mesmo que pegar da USB do pc (a não ser que o arduino use uma alimentação diferente do cabo USB).

Coloquei os capacitores e tudo mais mas ainda continua... 

Testei sim as saidas de todos e na saida do lcd de contraste dos caracteres sao 5v... ja no brilho de fundo da 3,6v mais ou menos...

E se caso utilizar outro tipo de capacitor...

Comprei um novo LCD do msmo... quando chegar vou testar nele pra conferir se o problema é no LCD... pq todos os codigos q mando pra ele e acontece a msma coisa... por isso estou achando q e problema nele.... ma ainda continuo testando outras maneiras de tentar arrumas esse problema... XD

Caro Juan, me parece que seu problema está nos println abaixo:

lcd.println(vazao); //Escreve no display o valor da vazão
lcd.println(" L/min "); //Escreve L/min
lcd.setCursor(0,1);
lcd.println(i); //Escreve a contagem i (segundos)
lcd.println("s "); //Escreve s indicando que está em segundos
MiliLitros = vazao/60;
Litros = Litros + MiliLitros;
lcd.println(Litros);
lcd.println("L ");

S.M.J.

P.S. O sobrenome é verdadeiro? Em inglês, como você sabe, é palavrão. Desculpe

E como resolvo esse problema no println ? Desculpa é que nao conheço muito a programaçao... só o basico pra funfa XD

O meu nome e assim msmo kkkk... è q na vdd é de origem alema :p 

Mude para lcd.print como você fez na impressão da média. Usando seu código após 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
lcd.clear();
lcd.print("Media = "); //Imprime a frase Media por minuto =
lcd.print(media); //Imprime o valor da media
lcd.println(" L/min"); //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
}

}

Opa... acho que dessa vez deu certo..

Substitui o trecho que vc citou pelo que vc passou e limpo quase toda tela dos "ruidos" que estavao em volta...

Mas tbm tive q trocar o LCD... pq com outro funcionou na hora ja com o msmo das imagens nada adiantava...

Da uma olhada de como esta agora com o codigo que me passou.....

Esta bem melhor que antes, agora da pra entender o que mostra kkk

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço