Ir ao conteúdo
  • Cadastre-se

Trocar de tela - Arduino , lcd (16,2)


marcoshenri

Posts recomendados

E aí galera, tudo em cima?

Eu estava pensando em fazer o seguinte, utilizar um LCD 16x2 para mostrar informação de RPM  e Velocidade, daí a pessoa através de uma chave ou botão selecionar o que irá ver, por exemplo: quando o nível lógico na chave for 0 aparecerá velocidade e quando for 1 será RPM. No entanto, tá dando mts problemas, alguém pode ajudar?

 

#include <LiquidCrystal.h> // Atualiza a cada 1000 milissegundos. #define REFRESH_TIME 1000 LiquidCrystal lcd(9,8,4,5,6,7);float raio = 1.63;unsigned int velocidade;unsigned long contador;   // Contador de giroslong refresh;unsigned long contador1;unsigned int rotacao; void setup(){pinMode (13, INPUT);pinMode(2, INPUT);attachInterrupt(0, contadorDeVelocidade, RISING);lcd.begin(16,2); contador = 0;refresh = millis();velocidade = 0.0;pinMode (3, INPUT);attachInterrupt (1,rpm,RISING);contador1=0;rotacao=0;} void contadorDeVelocidade(){ contador++; } void rpm(){  contador1++;} void loop (){  if(millis()- refresh >=REFRESH_TIME) {    rotacao=(contador1*60);   refresh=millis();   contador1=0;    lcd.setCursor(0,1);   lcd.clear();   lcd.print(int(rotacao));   lcd.setCursor(6,1);   lcd.print("rpm");     }    if (digitalRead(13)==HIGH ){ if (millis() - refresh  >= REFRESH_TIME){ lcd.clear(); velocidade = (3600*raio*contador)/(millis()-refresh); contador=0; refresh=millis(); lcd.setCursor (0,0); lcd.print("velocidade");  lcd.setCursor(5,1);  lcd.print(int(velocidade));}/*else if (digitalRead(13)==LOW){ if(millis()- refresh >=REFRESH_TIME) {    rotacao=(contador1*60);   refresh=millis();   contador1=0;    lcd.setCursor(0,1);   lcd.clear();   lcd.print(int(rotacao));   lcd.setCursor(6,1);   lcd.print("rpm");     }  }  */  }         }
Link para o comentário
Compartilhar em outros sites

Amigo é impressão minha ou você colocou  o código que testa se a chave esta em nivel baixo dentro do IF que testa se a chave esta no nivel alto..

 

Repare que o if(DigitalRead(13)==LOW) esta dentro do laço do if(DigitalRead(13)==HIGH) assim se a chave estiver em "0" nunca vai mostrar nada, tente assim:

if (digitalRead(13)==HIGH ){ if (millis() - refresh  >= REFRESH_TIME){ lcd.clear(); velocidade = (3600*raio*contador)/(millis()-refresh); contador=0; refresh=millis(); lcd.setCursor (0,0); lcd.print("velocidade");  lcd.setCursor(5,1);  lcd.print(int(velocidade));}}          // inseri aqui a chave que fecha o laço que testa se a chave esta no positivoelse if (digitalRead(13)==LOW){ if(millis()- refresh >=REFRESH_TIME) {   rotacao=(contador1*60);   refresh=millis();   contador1=0;   lcd.setCursor(0,1);   lcd.clear();   lcd.print(int(rotacao));   lcd.setCursor(6,1);   lcd.print("rpm"); }}

  a pena mudei a chave, mas como você não deu uma descrição exata do problema que encontrou, não sei se vai funcionar....

 

 

Espero ter ajudado,

grato Luiz Gustavo.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...