funzione Pulsein

Ciao a tutti ragazzi. ho un grosso problema. ho acquistato 10 sensori per vibrazione che comunicano via digitale con arduino, nello specifico gli fc-01. Il problema principale l'ho trovato nello scrivere uno sketch che no blocchi il resto dei sensori collegati. mi spiego meglio... ho collegato ad un Arduino Mega, diversi sensori per il mio progetto, tra cui 2 igrometri, un anemometro, un microfono ecc ecc... e tutti funzionano a meraviglia, però ho lesigenza di registrare le vibrazioni provenienti da 10 sensori di vibrazione. utilizzando un semplice digital read, non si riesce a leggere bene l'esatto momento in cui il sensore vibra, e si hanno tantissime false letture. quindi ho trovato in rete questo sketch che invece funziona egregiamente;

int ledPin =13;
int EP =28;

void setup(){
  pinMode(ledPin, OUTPUT);
  pinMode(EP, INPUT); //set EP input for measurment
  Serial.begin(9600); //init serial 9600
  Serial.println("----------------------Vibration demo------------------------");
}
void loop(){
  long measurement =TP_init();
  delay(50);
  Serial.print("measurment = ");
  Serial.println(measurement);
  if (measurement > 1000){
    digitalWrite(ledPin, HIGH);
  }
  else{
    digitalWrite(ledPin, LOW); 
  }
}

long TP_init(){
  delay(10);
  long measurement=pulseIn (EP, HIGH);  //wait for the pin to get HIGH and returns measurement
  return measurement;
}

il problema è che utilizza la funzione Pulsein che rimane in attesa prima di restituire la misura e mi blocca ovviamente il resto dello sketch. Avete qualche soluzione in merito? grazie mille a tutti

La funzione pulseIn ha per default un tempo di attesa (timeout) di 1000ms che può essere modificato:

pulseIn(pin, value, timeout);

Nel tuo caso:

unsigned long TP_init(){
  unsigned long measurement=pulseIn (EP, HIGH, 10);  //wait for the pin to get HIGH and returns measurement
  return measurement;
}

usa gli interrupt sui pin più il timer1 per leggere il tempo tra il cambio di ststo