Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unsigned long rotacao = 0; // Contador de pulsos do hall
- float rpm = 0; // Para calculo de RPM
- unsigned long tempoMillis; // Controle do tempo entre intervalos
- unsigned long tempoMedida = 100; // Intervalo de medida em mseg (procure o melhor valor que te atenda)
- //------------------------------------------------------------------------
- void setup()
- {
- // Serial.begin(9600); // Use a velocidade da sua serial
- Serial.begin(115200);
- attachInterrupt(0, hall_detectado, RISING); // Inicializa o intterrupt (Arduino digital 2)
- tempoMillis = millis(); // Inicialisa o tempo de comparacao
- }
- //------------------------------------------------------------------------
- void loop() // Mede RPM
- {
- if ( millis() - tempoMillis >= tempoMedida) // Compara se passou o intervalo de medidas
- {
- tempoMillis = millis(); // Restaura o tempo de comparacao
- rpm = (rotacao * 60000) / tempoMedida; // Qde de rotatação corrigido pelo tempoMedida, em um minuto (60000 mseg)
- Serial.println("RPM: "); Serial.println(rpm, 2); // So para debug
- }
- }
- //------------------------------------------------------------------------
- void hall_detectado() // Esta funcao é chamada sempre que um pulso magnetico/interrupt for detectado
- {
- rotacao++; // Incrementa a contagem a cada pulso do hall
- //Serial.println("pulso"); // So para debug
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement