Mesurer la fréquence d'une note de musique à l'aide d'un micro amplifié ADA 1063

Bonjour,

Nous avons des difficultés pour effectuer des mesures de fréquences à partir de l'enregistrement d'un signal sonore (La440 par exemple), grace à un microamplifié ADA 1063, et à l'aide d'un bouton poussoir les valeurs sont fausses, selon le code suivant :

int son = A0; // Signal Analogique
int bouton = 7;

void setup() {

// Configure le port série pour l'exemple
Serial.begin(9600);

// Met la broche de signal venant du GBF en entrée
pinMode(son, INPUT);
pinMode(bouton, INPUT);
}

void loop() {
if (digitalRead(bouton) == HIGH)
{
// Mesure la durée de l'impulsion haute
noInterrupts();
unsigned long etat_haut = pulseIn(son, HIGH);
interrupts();

// Mesure la durée de l'impulsion basse
noInterrupts();
unsigned long etat_bas = pulseIn(son, LOW);
interrupts();

// Calcul de la periode = etat haut + etat bas
long periode = (etat_bas + etat_haut);
// Calcul de la frequence = 1 / periode
long frequence = (1000000/(periode));

Serial.println("Periode : ");
Serial.print(periode);
Serial.println("s");
Serial.println("Frequence : ");
Serial.print(frequence);
Serial.println(" Hz");
Serial.println("");

delay(2000);
}
else
{
  delay(1000);
}
}

Merci beaucoup pour votre aide!

Le son à analyser est il bien de forme carrée, avec deux valeurs 0 et 1 bien propres ?
Avez vous un oscilloscope pour le visualiser ?