//Programa: Sensor de velocidade Arduino LM393 //Autor: Arduino e Cia //Pino ligado ao pino D0 do sensor int pino_D0 = 2; int rpm; int calib; double km; volatile byte pulsos; unsigned long timeold; //Altere o numero abaixo de acordo com o seu disco encoder unsigned int pulsos_por_volta = 17; void contador() { pulsos++; } void setup() { Serial.begin(9600); //Pino do sensor como entrada pinMode(pino_D0, INPUT); attachInterrupt(0, contador, FALLING); pulsos = 0; rpm = 0; timeold = 0; if (Serial.available() > 0) { calib = Serial.read(); } } void loop() { //Atualiza contador a cada segundo if (micros() - timeold >= 1000000) { //Desabilita interrupcao durante o calculo detachInterrupt(0); rpm = (60 * 1000000 / pulsos_por_volta ) / (micros() - timeold) * pulsos; timeold = micros(); pulsos = 0; //Mostra o valor de RPM no serial monitor Serial.print("RPM = "); Serial.println(rpm, DEC); { km = (((rpm*calib)/10)/60)*1.8; Serial.print("KM/H = "); Serial.println(km, DEC); } //Habilita interrupca attachInterrupt(0, contador, FALLING); } }