Go Down

Topic: Problema com LCD 20 x 4 (Read 3 times) previous topic - next topic

wilsonalves

Já consegui com que a tela do lcd trocasse com o botão agora está a acontecer aquilo que o bubulindo falou atrás tenho o lcd a piscar o problema é que está a piscar muito lentamente e é do tipo as primeiras funções mal se percebe que piscam agora as ultimas piscam muito lentamente.
Como minimizo/acabo este problema????

wilsonalves

Alguém sabe como faço para que o lcd não pisque??
Disseram me para utilizar a função string() só não faço ideia de como a utilizar!!
Cumprimentos

LegendBR

Já tentou aumentar um pouco o contraste do LCD? As vezes isso resolve o problema de piscar.

wilsonalves

Não o problema é mesmo do código estou a fazer um refresh ao lcd.

LegendBR

Ele pisca a cada 1 segundo, é isso? Se for isso mesmo, acredito ser limitação do hardware mesmo, e não acho que se possa fazer alguma coisa.

wilsonalves

Tenho dois pedaços de código dentro de ARRAYS() para depois integrar no void loop() através de Swich() Case() foi o bubulindo que me deu esta ideia mas tambem me alertou que teria de fazer um refresh ao código senão não ia ler os valores só quando mudasse com o botão eu nunca pensei foi que o refresh se fosse notar tanto: envio o pedaço de código com o void loop para que perceba                                                           
Code: [Select]
//------------------------------------------------------------------------------------------------------------------------------------------
void loop()
{
if (digitalRead(SWITCH) == HIGH && encrava == 0){
var_menus++;
trata_lcd();
encrava = 1;
}
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 500) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}
}
void trata_lcd()
{
switch(var_menus%NUM_MENUS) {

case 0:
lcd.clear();
vinstantaneo();
break;

case 1:
lcd.clear();
vhora();
break;
}



Ontem estive com pessoal que entende disto e disseram-me para utilizar strings para acabar com o problema eu só não consigo perceber como se integram no meu código para acabar com este problema.

LegendBR

Repito a pergunta:

Ele pisca a cada 1 segundo, é isso?

wilsonalves

Ele pisca segundo a segundo se eu quiser agora está piscar de meio em meio segundo basta alterar o valor neste pedaço de código:
Code: [Select]
if (digitalRead(SWITCH) == LOW) encrava = 0;
//refresca o LCD de segundo a segundo.
if (millis() - refresh >= 500) {
trata_lcd();
refresh = millis(); //actualiza a contagem.
}

Tive de incorporar isto porque o bubulindo disse que tinha de o fazer porque senão os valores não actualizavam e tinha toda a razão que já fiz  o teste

Go Up