Paso 3: detección de frecuencia de la onda de seno
prevData = newData; valor anterior //store
newData = ADCH; //get valor de A0
Si (prevData < 127 & & newData > = 127) {//if aumento y punto medio de cruce
período = contador; //get período comprendido entre el valor actual del temporizador
Contador = 0; contador //reset
}
contador ++; //increment temporizador
Luego en la función loop() principal, calcula la frecuencia dividiendo la tasa de temporizador por el período. He utilizado Serial.print para imprimir estos resultados en el monitor serie del Arduino.
frecuencia = 38462/período; //timer tasa o periodo
imprimir resultados
Serial.Print(Frequency);
Serial.println ("hz");
La Fig 1 muestra la señal que llega a A0. El inicio y el final de un ciclo medido por contador de tiempo está indicado por la nota de la imagen. Fig 2 muestra el resultado del serial monitor (comando/ctrl + Mayús + m). Esta técnica funciona muy bien para ondas sinusoidales, pero onda se convierten en más complicada (y 2.5V se cruzan más de dos veces en un ciclo) descompone esta técnica.