Hola, estoy haciendo una especie de encendido electronico para un coche antiguo de platinos.. Bien ahora con las interrupciones no estoy yo muy seguro como debe ser... Creo que deberia montar todo el calculo sobre la interrupcion, ya que el calculo siempre es necesario para obtener las rpm y asi cortar el encendido cuando se pasa de revoluciones o deberia dejar el calculo en el loop??
Posteo codigo haver que os parece..
const byte interruptPin = 2;
volatile unsigned long cont_rpm;
int corte = 1800;
int rpm_actuales;
void setup() {
Serial.begin(9600);
pinMode(5,OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), Carga, RISING);
digitalWrite(5,LOW);
}
void loop() {
static unsigned long rpm_ant;
static unsigned long t_anterior;
rpm_ant=cont_rpm;
t_anterior=millis();
delay(100);
rpm_actuales=(cont_rpm-rpm_ant)/(2.0*(millis()-t_anterior)/60000);
Serial.println(rpm_actuales);
}
void Carga(){
if (digitalRead(2) == LOW && rpm_actuales <= corte ){
digitalWrite(5,HIGH);
}else digitalWrite(5,LOW);
cont_rpm++;
}
Muchas Gracias por adelantado