#define ppr 100 // pulses per revolution
volatile unsigned long tiempo = 0;
float velocidad = 0.0;
float escala_rpm;
void setup() {
Serial.begin(115200);
pinMode(25, OUTPUT);
pinMode(39, INPUT);
ledcAttachPin(25, 0); //Se configura el PWM
ledcSetup(0, 1000, 10); //frecuencia 1KHz y resolucion 2^10
attachInterrupt(36,cambioDeEstado,RISING);
escala_rpm = 60.0e6 / ppr; // 60e6 [us/s] / ppr [p/v]
}
void loop() {
Serial.println(velocidad);
ledcWrite(0,500);
delay(200);
}
void cambioDeEstado() {
unsigned long aux = micros();
if (digitalRead(39))
velocidad = escala_rpm / (tiempo - aux);
else
velocidad = escala_rpm / (aux - tiempo);
tiempo = aux;
}