/*
Projeto 55 - Tacómetro ótico
Física na Lixa
https://fisicanalixa.blogspot.com/
https://sites.google.com/aelixa.pt/fisicaearduino
*/
const int pinSensor = 2;
int PPR=2; //Pulsos por rotação (número de pás da hélice)
volatile unsigned int contador = 0;
unsigned long tempoAnterior = 0;
unsigned int rpm = 0; //Rotações por minuto
void SENSORinterrupt()
{
contador++;
}
void setup()
{
pinMode(pinSensor, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(pinSensor), SENSORinterrupt, FALLING);
Serial.begin(9600);
Serial.println();
Serial.println("RPM");
delay(2000);
}
void loop()
{
unsigned long tempoAtual = millis();
if (tempoAtual - tempoAnterior >= 1000)
{
detachInterrupt(digitalPinToInterrupt(pinSensor));
rpm = (contador / PPR) * 60; //
contador = 0;
attachInterrupt(digitalPinToInterrupt(pinSensor), SENSORinterrupt, FALLING);
tempoAnterior = tempoAtual;
Serial.print("RPM = ");
Serial.println(rpm);
}
}