Recientemente estaba trabajando en un proyecto donde quería medir las RPM de una de las ruedas en mi coche, y de eso calcular la velocidad, realizar un seguimiento de la distancia de los Driven etc. con un Arduino.
Quería usar un imán y un Reed Switch para medir las RPM, para que i necesario para debouce la señal del interruptor Reed, ya que no pude encontrar alguna manera de debouce una señal en las funciones de interrupción que no requieren hardware adicional para contra rebotes de la señal en Internet, aquí es cómo debounced la señal proveniente del interruptor Reed...
Software contra rebotes en interrupción, por K.M. Delphiño
debouncing_time largo = 15; Tiempo contra rebotes en milisegundos
volátil last_micros largo sin firmar;
void setup() {}
attachInterrupt (0, debounceInterrupt, RISING);
}
void loop() {}
}
void debounceInterrupt() {}
if((Long)(micros() - last_micros) > = debouncing_time * 1000) {}
Interrupt();
last_micros = micros();
}
}
void Interrupt() {}
Hacer algo
}
Usted podría también "Hacer algo" en la función principal, en lugar de pedir una segunda función luego hace algo, me a gusto mejor así... Nota: he sólo traté de esto en un Arduino Mega (ATmega1280), con Arduino 0022. Bueno, eso está sobre él, espero que esto ayude a alguien... P.D. Este es mi primer Instructable, así que si no tienes nada bueno que decir, no decir nada en absoluto, allthough correcciones, mejoras, etc. por supuesto son siempre bienvenidos...
Además, esto no es una solución perfecta, la función de interrupción es stil llama varias veces, las llamadas siguientes, en la siguiente sólo se omiten 15ms, pero bueno, hace el trabajo, así que atornillarlo.