Fréquence d'un signal analogique

Bonjour,
pulsIn va marcher, mais si le seuil de déclenchement n'est pas exactement 2.5 V et que la courbe n'est pas une sinusoïde parfaite, cela va être difficile de calculer précisément la fréquence.

Il vaut mieux compter le nombre de pulsation pendant un temps donné avec une interruption. Exemple :

/* FREQUENCEMETRE ARDUINO */

#define ECHO  2		// pin qui reçoit la fréquence à mesurer (pin 2 ou 3 sur Uno, 3-5 V maxi !!! )
#define SAMPLE 5000	//durée prise de mesure en millisecondes

unsigned long t0=millis(),t1;
unsigned long pulsecount=0;

void setup()
	{
        Serial.begin(9600);
	pinMode(ECHO, INPUT);
	attachInterrupt(digitalPinToInterrupt(ECHO), pulse, RISING);
	}

void pulse()
	{
	pulsecount+=1;
	}

void loop()
	{
        float frequence;
	t1=millis()-t0;
	if (t1 >= SAMPLE)
		{
		frequence=pulsecount*1000.0/t1;
		Serial.println(frequence);
		t0=millis();
		pulsecount=0;
		}
	}