Controllo Stato Sensore Laser : Interrupt o Loop ?

Grazie mille, si con la parola callback mi riferivo proprio alla ISR ( piccola confusione nel linguaggio, scusa ), avevo letto del problema del non incremento di micros ( ) e millis ( ) all'interno di una ISR ma non l'avevo compreso molto bene, con quello che mi hai scritto mi è chiarissimo, grazie.
Per quanto riguarda invece la parte di programmazione, dato che ho due sensori differenti, scrivo due diverse ISR, e sto pensando a fare una cosa così:

volatile long start = 0, end = 0;
double distance = 0.10; // 10 cm di distanza

void setup ( ) {
  attachInterrupt ( 0, ISR_1, RISING );
  attachInterrupt ( 1, ISR_2, RISING );
  Serial.begin ( 9600 );   
}

void loop ( ) {
  if ( end != 0 && start != 0 ) {
    Serial.print ( distance / ( ( (double)(end - start) ) / 1000000 ) );
    Serial.println ( " m/s" );
    end = 0;
    start = 0;
  }
}

ISR_1 { // Fotocellula Iniziale
  start = micros ( );
}

ISR_2 { // Fotocellula Finale
  end = micros ( );
}

L'ho buttato giù ora mentre scrivo quindi ci potrebbe essere qualche imprecisione, però mi sembra ancora più ottimizzato, lui vede che deve fare il calcolo quando ha entrambi i tempi, volendo si potrebbe migliorare utilizzando una boolean nelle ISR per controllare che sia passato prima dalla prima fotocellula e poi dalla seconda.
Grazie, ciao :slight_smile: