Olá galera, tudo bom?
Então, eu fiz um velocímetro com Arduíno Leonardo, usando LCD 16x2.
O código de programação compila normalmente e a simulação no Proteus ocorre sem falhas e
dá o resultado esperado.
No entanto quando monto na protoboard e mando um sinal, o valor da velocidade dá muito maior do que o correto e até mesmo quando não tem sinal sendo enviado ele dá uma velocidade alta. Eu penso que possa ser ruído ou interferência.
Gostaria da ajuda de vocês pra uma possível solução.
Vou postar aqui o código:
#include <LiquidCrystal.h> // Atualiza a cada 300 milissegundos. #define REFRESH_TIME 300int ledPin = 3;LiquidCrystal lcd(9,8,4,5,6,7);long refresh;float raio= 1.63;unsigned int velocidade;unsigned long contador; // Contador void setup(){ pinMode(ledPin, INPUT);attachInterrupt(1, contadorDeVelocidade, RISING); lcd.begin(16,2); lcd.clear(); lcd.setCursor(0,0); lcd.print("Velocimetro "); contador = 0; refresh = millis(); velocidade = 0.0;} void contadorDeVelocidade(){ contador++; } void loop (){if (millis() - refresh >= REFRESH_TIME){ velocidade = (3600*raio*contador)/(millis()-refresh); contador=0; refresh=millis(); lcd.setCursor(5,2); lcd.print(int(velocidade)); lcd.print (" kmh");} }