Étape 3: détection de fréquence sinusoïdale
prevData = newData ; valeur précédente //store
newData = ADCH ; //get valeur de A0
Si (prevData < 127 & & newData > = 127) {//if augmentant et passage point médian
période = timer ; //get période de la valeur actuelle de la minuterie
Timer = 0; //reset minuterie
}
minuterie ++; //increment minuterie
Puis dans la fonction loop() principal, j’ai calculé la fréquence en divisant le taux de la minuterie de la période. J’ai utilisé Serial.print pour imprimer ces résultats dans le moniteur de serial Arduino.
fréquence = 38462/période ; //timer taux/période
imprimer les résultats
Serial.Print(Frequency) ;
Serial.println ("hz") ;
Figure 1 montre le signal présent à A0. Le début et la fin d’un cycle mesuré par minuterie est indiquée par la note de l’image. Fig. 2 montre la sortie de la série monitor (commande/ctrl + Maj + m). Cette technique fonctionne très bien pour les ondes sinusoïdales, mais lorsque les vagues deviennent plus compliqués (et traverser 2.5V plus du double en un seul cycle) cette technique se décompose.