calcolare il tempo trascorso tra impulsi

:slight_smile: ragazzi vi presento la mia idea commentate se ci sono dubbi domande lamentele o insulti :slight_smile:

int xm=0; //segnale_memoria
long tt; //tempo_trascorso
long tm; //tempo_memoria
void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, INPUT);
  Serial.begin(9600);
}
void loop() {
  
  if(digitalRead(12)==HIGH){
    if(xm==0){
      xm=1;
      //---------
      tt=millis()-tm;
      Serial.print(tt);
      Serial.print("       ");
      tm=millis();
      //---------
    }
  }
  if(digitalRead(12)==LOW){
    if(xm==1){
      xm=0;
    }
  }
  //...... continua il tuo codice
}

direi che è ottimo mi è venuto in mente stà notte e ora l'ho realizzato :slight_smile:
PRO
-non blocca il codice al massimo lo rallenta per poco
-spostando quello che c'è tra le 2 //--- sotto il xm=0; puoi calcolare il tempo fra la fine dei 2 impulsi
-è in grado di contare impulsi più brevi di 20 ms credo e più grandi di 3 minuti
-restituisce una variabile che ha una precisione al ms
CONTRO
-rallenta di poco il codice e se mettete de delay nel vostro codice che viene dopo rallentate il ciclo

meglio di così si muore