const int pinOptoacoplador = 45;
bool PrimeraIteracion = true;
double TiempoActual = 0;
double TiempoAnterior = 0;
double Diferencia = 0;
bool EstadoAnteriorPin = LOW;
bool EstadoActualPin = LOW;
void setup() {
//Configuración
Serial.begin(115200);
pinMode(pinOptoacoplador, INPUT);
PrimeraIteracion = true;
EstadoAnteriorPin = digitalRead(pinOptoacoplador);
EstadoActualPin = digitalRead(pinOptoacoplador);
Serial.println("Empezando programa...");
}
void loop() {
//Se analiza si hubo un cambio en el sensor
if(FlancoDeSubida()){
if(PrimeraIteracion){
PrimeraIteracion = false;
}else{
Serial.println("Leyendo optoacoplador:");
TiempoActual = millis();
Diferencia = TiempoActual - TiempoAnterior;
Serial.print("Frecuencia: ");
Serial.println(1/Diferencia*1000);
Serial.print("RPM: ");
Serial.println(1/Diferencia*1000*60);
}
TiempoAnterior = millis();
}
}
bool FlancoDeSubida(){
bool HuboFlancoDeSubida = false;
EstadoActualPin = digitalRead(pinOptoacoplador);
if(EstadoActualPin != EstadoAnteriorPin){
//Hubo un cambio
if(EstadoActualPin == HIGH && EstadoAnteriorPin == LOW){
HuboFlancoDeSubida = true;
}
EstadoAnteriorPin = EstadoActualPin;
}
return HuboFlancoDeSubida;
}