Ir ao conteúdo
  • Cadastre-se

Arduino Impressão de mensagem em display LCD


Posts recomendados

Pessoal estou necessitando urgentemente de uma ajudinha de vocês, estou querendo imprimir algumas mensagens no meu display, não posso usar a função delay, (pois ela para o Arduino e não pode no meu projeto) usando a função milllis, queria imprimir de 2 em 2 segundos uma informação diferente no display ou seja: Temperatura: passa 2 segundos apaga a mensagem e imprime a velocidade do vento passa 2 segundos apaga a mensagem e imprime a umidade do ar passa 2 segundos e imprime outra mensagem assim por diante. Estou tendo o problema que não consigo apagar a mensagem e imprimir outra. Abaixo coloco um trecho do código.

Me ajudem por favor, como faço essa impressão?

#include <Wire.h>
#include <LiquidCrystal_I2C.h>


//Declaração de Variáveis...
LiquidCrystal_I2C lcd(0x27, 16, 2);               //Função com o endereço do I2C e a quantidade de colunas e linhas do display respectivamente.

int tempodemensagem = 2000;
unsigned long tempodedelay = 0;


void setup() {
  
  lcd.begin();                                    //Inicializando o LCD.
  
}

void loop() {
  
  lcd.setCursor(0,0);
  lcd.print("Umidade: ");

  lcd.setCursor(0,0);
  lcd.print("Temperatura: ");

  lcd.setCursor(0,0);
  lcd.print("Pressão ATM: ");

  lcd.setCursor(0,0);
  lcd.print("V. Vento: ");
  
  
  conta_tempo();
}

void conta_tempo(){
  if((millis() - tempodedelay) >= tempodemensagem){
    lcd.setCursor(0,0);
    lcd.print("Temperatura");
  }
  
  if((millis() - tempodedelay) < tempodemensagem){
    lcd.setCursor(0,0);
    lcd.print("Vel. do Vento");
  }

  if((millis() - tempodedelay) >= 4000){
    tempodedelay = millis();
  }
}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Conta_tempo() não teria que ficar entre cada lcd_print()??🤔

edit...

Na linguagem arduína, não existe uma função delay() pra você colocar entre cada lcd.print()? Se não existe, você não consegue criá-la bem simples algo como:

void delay(long d)
{
while (d--);
}

...?

delay(0xffffffff);//...a maior perda de tempo!!

😁

 

Dica: pra apagar por completo a mensagem maior, preencha a menor com espaço até o tamanho da maior.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Isadora Ferraz Infelizmente não posso utilizar função de delay, porque ela trava o processamento do Arduíno e impede ele de executar outras tarefas, necessito que enquanto ele mostra uma mensagem na tela ele possa executar outras funções, e a finção millis() possibilita isso, utilizei millis mais na minha implementação estou tendo problemas.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

De fato delays() são inimigos da eficiência e envenenam qualquer sistema RTOS. Não conheço a tal milis() mas se ela te atende, vai fundo garotão! No entanto penso que a sugestão do Paulão lhe pode ser ainda mais eficiente. Comece a estudar os princípios da interrupção de timer's. Crie uma pra cada 1s e nela imprima as mensagens tipo

void interrupt()
{
lcd.setCursor(0,0);
if (x==0) lcd.print("Umidade: ");
if (x==1) lcd.print("Temperatura: ");
if (x==2 lcd.print("Pressão ATM: ");
if (x==3) {lcd.print("V. Vento: ");x=0};
x++;
}

e seu precioso loop() principal vai ficar livre pra fazer coisas realmente importantes.

Mas nem tudo são flores. Isso pode comprometer o uso da função lcd.print fora da interrupt. Consulte/pesquise sobre como seu compilador trabalha com funções reentrantes

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!