Re: Velocimetro com arduino como faço para medir a velocidade?

Progra,

Não consigo perceber pois a variável voltas só é incrementada quando o estado da porta muda e essa mudança é para LOW.

O funcionamento seria Igual ao de um botão, botão pressionado (pino norte = HIGH) ou solto (pino norte = LOW)

Como estão as conexões do teu circuito?
Em repouso (sem imã por perto) o sensor é HIGH, certo?

Tenta usar o resistor pull up da porta para manter a porta HIGH (evitar oscilações) até que o sensor a coloque LOW, pode se isso.

int estadoanterior = 1; //O estado HIGH
int voltas = 0;
unsigned long tempo = 0;
int norte=13;

void setup(){
  Serial.begin(9600);
  pinMode(norte, INPUT); //define a porta como input
  digitalWrite(norte, HIGH); // ativa o resistor pullup
}

void loop(){ 
  unsigned long agora;
  
  agora = millis();
  int estado = digitalRead(norte);
  int rotacao = 0;
  
  if (estado != estadoanterior){ //Se o estado da porta mudou
    if(estado == LOW) //Se o estado mudou para LOW
    {
      Serial.println("polo sul");
      voltas++; //Incrementa 1
    }
    else 
      Serial.println("polo norte");
  }
  
  if (agora - tempo >= 1000){ //1000 milesegundos = 1 segundo 
    rotacao = voltas/1000; //rotação por segundos
    Serial.print("passou um segundo e ");
    Serial.print(voltas);
    Serial.print(" voltas");
    Serial.print(", ");
    Serial.print(", RPS ");
    Serial.println(rotacao);
    tempo = agora; //guarda o tempo atual para que a mensagem apareça um segundo depois
    voltas = 0; //zera o contador
  }
}

Teu código ficou parecido com o acima? Qual resultado agora? Infelizmente estou no trabalho, mas, a não ser que eu precise de internação imediata, deve funcionar rs

Ou o Hugo pede para trazerem a camisa de força :wink: