Medir el tiempo entre dos trenes de pulsos:

Bueno, nuevos avances, he conseguido medir el tiempo entre 2 trenes de pulsos. El problema es que todavía no se para que me puede servir :stuck_out_tongue_closed_eyes:
Ya que creo que necesitaría saber el tiempo entre emisión y recepción. Pero bueno este programilla me ha ayudado a entender un poco el concepto de medidas de tiempos en microsegundos, que la verdad me esperaba que fuera mas fácil hacer esto con arduino
void setup()
{

pinMode(2,INPUT);
pinMode(9, OUTPUT);
Serial.begin(9600);

//codigo para el pwm de los pines 9 y 10 en este caso 40 khz
//Fórmula: Fpwm(KHz) = 16000KHz [clock de la arduino] / (2 * N
//* ICR1)
TCCR1A = 0x00; //con esto lo que hacemos es ajustar el timer en uno de los modos de
//generacióndel pwm PWM, "Phase and Frequency Correct"

TCCR1B = 0x11; // esto setea el
//"prescaler" (N), de la siguiente manera:
// TCCR1B=0x11 -->
//N=1; TCCR1B=0x12 -->N=8; TCCR1B=0x13 -->N=64, etc.
// N, el famoso "prescaler"o divisor, es un divisor del reloj de la Arduino (16MHz)
ICR1 = 200; // ICR1 es el valor
//máximo del analogWrite, lo que le llaman el "TOP" del analogWrite

}

void loop()
{
unsigned long x;
unsigned long y;
unsigned long z;
unsigned long u;

analogWrite(9,100);
delayMicroseconds(475);
digitalWrite(9,LOW);
delayMicroseconds(475);
analogWrite(9,100);
delayMicroseconds(475);
digitalWrite(9,LOW);

while(digitalRead(2) == LOW); // se ejecuta contunuamente hasta que la expresión sea falsa vamos hasta que tenga 1 en la entrada 2
x = micros(); // Por lo que me medirá en micros justo el tiempo antes de que se ponga a lvl alto
while(digitalRead(2) == HIGH);
y = micros();
while( digitalRead(2)== LOW);
u = micros();

z=u-x ;
Serial.println(" tiempo entre los 2 pulsos");
Serial.println(z,DEC);

delay(10000);

}