Olá pessoal. Primeiramente bom domingo a todos!
Sou extremamente novato, comprei meu ARDUINO faz 2 semanas e estou desenvolvendo algumas coisas, como trabalho com oficina mecânica estou desenvolvendo um sensor de rotação...
Bom. Consegui fazer o sistema funcionar, tudo corretamente, só que após os 33s meu MILLIS fica na seguinte forma:
12:28:05.054 -> 0.00
12:28:05.054 -> 38478
12:28:05.054 -> 0.00
12:28:05.054 -> 38505
12:28:05.123 -> 0.00
12:28:05.123 -> 38533
12:28:05.123 -> 0.00
12:28:05.123 -> 38559
12:28:05.123 -> 0.00
12:28:05.192 -> 38587
Infezlimente toda vez que ele começa a fazer isso, o sistema trava e não consigo mais realizar a leitura dos pulsos quanto ele apresenta da forma abaixo, funciona normalmente:
12:27:50.322 -> 23738
12:27:50.322 -> 23752
12:27:50.322 -> 23767
12:27:50.390 -> 23781
12:27:50.390 -> 23796
12:27:50.390 -> 23811
tentei fazer uma pequena "gambiarra", na tentativa de sumir com este "ZERO" más não deu muito certo.
currentMillis = millis();
if(currentMillis < 1){
currentMillis = currentMillisVerifica;
}else{
currentMillisVerifica = currentMillis;
}
Estarei colocando o código abaixo. Se alguém puder me dar um auxílio no que pode estar acontecendo...
Lembrando que o problema se inicia aos 33s.
Obrigado"
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int tempoInicio = 0;
int tempoFinal = 500;int idBtn = 2;
float rotacaoWhile = 0;
float rotacao = 0;
bool verificadorDeRotacao = false;
bool verificadorDeRotacaoInterno = false;
bool verificadorDeDisplay = false;
unsigned long currentMillis = millis();
long currentMillisVerifica = 0;void setup() {
Serial.begin(4800);
pinMode(idBtn, INPUT_PULLUP);lcd.begin(16, 2);
lcd.println("Motor Pronto a ");
lcd.setCursor(0, 2);
lcd.println("funcionar ");
}void loop() {
currentMillis = millis();
if(currentMillis < 1){
currentMillis = currentMillisVerifica;
}else{
currentMillisVerifica = currentMillis;
}
if (verificadorDeRotacao == false) {
if (digitalRead(idBtn) == 1) {
verificadorDeRotacao = true;
rotacaoWhile++;
}
} else {
if (digitalRead(idBtn) == 0) {
verificadorDeRotacao = false;
}
}if ((currentMillis - tempoInicio) > tempoFinal) {
tempoInicio = currentMillis;
rotacao = rotacaoWhile;
rotacao = rotacao;
Serial.println(rotacaoWhile);
rotacaoWhile = 0;
}lcd.setCursor(0, 2);
lcd.print("Rot.:");
lcd.print(rotacao * 60);
lcd.print(" RPM");
Serial.println(currentMillis);}