volatile unsigned long contador = 0; // Variable entera que se almacena en la RAM del Micro
const byte ledPin = 13; // LED que se encuentra en el pin 13
const byte isrPin = 3; // INPUT
void interrupcion1() { // Funcion que se ejecuta durante cada interrupion
contador++; // Se incrementa en uno el contador
}
void setup() {
Serial.begin(57600);
attachInterrupt(digitalPinToInterrupt(isrPin), interrupcion1, RISING); // Interrupcion 1 (pin3), LOW, CHANGE, RISING, FALLING
pinMode(ledPin, OUTPUT); // El p1n 13 será una salida digital
}
void loop() {
delay(1000); // retardo de casi 1 segundo
// -------- sección crítica --------
detachInterrupt(digitalPinToInterrupt(isrPin));
unsigned long contadorCopia = contador;
contador = 0;
attachInterrupt(digitalPinToInterrupt(isrPin), interrupcion1, RISING);
// ----------------------------------
Serial.print(contadorCopia); Serial.println(" RPM");
if (contadorCopia > 15) {
digitalWrite (ledPin, HIGH); // Encender LED
} else {
digitalWrite (ledPin, LOW); // Apagar LED
}
}