Esto sin duda habrá de añadir retrasos como usted son de votación el pin de bloqueo de bucle
while (digitalRead(RCpin) == LOW) { // count how long it takes to rise up to HIGH
reading++; // increment to keep track of time
if (reading == 30000) {
// if we got this far, the resistance is so high
// its likely that nothing is connected!
break; // leave the loop
}
Suponiendo que el compilador puede optimizar el código de una forma extremadamente eficiente este circuito podría tomar algo como 4 líneas de código a ejecutar, ya que tienes que leer el pin, luego se compara con un valor y, a continuación, rama sobre la base del resultado (me gustaría ser muy impresionado si usted puede obtener este par de instrucciones). Suponga que cada una de esas instrucciones se tarda sólo 1 ciclo de reloj para ejecutar (este es también, probablemente, va a tomar más, pero es de gran ayuda para acotar el problema). Esta rutina puede tomar en la mayoría de los:
\$MaxRoutineTime = LoopIterations \times \frac{Instructions}{LoopIteration} \times \frac{Seconds}{Instructions}\$
\$MaxRoutineTime = 30,000 \espacio de Iteraciones\times \frac{4 \espacio de Instrucciones}
{LoopIteration} \times \frac{Segundos}{8,000,000 espacio \Instrucciones}\$
\$MaxRoutineTime = 15 espacio \mS\$
pero supongo que tardará un poco más que porque de las citadas prestaciones.
La razón por la que no agrega retrasos cuando se utiliza un ADC es debido a que el periférico se puede configurar para generar interrupciones y sólo serán notificados cuando el ADC lectura está completa. El tiempo que tarda el ADC para completar una medición es un número finito de ciclos de reloj, por lo que la aplicación de la nota que usted está de referencia es de señalar que si lento su velocidad de reloj, a pesar de que el ADC todavía va a tomar el mismo número de ciclos de reloj para completar una medición, la medición va a tomar más tiempo debido a que el reloj es más lento.
Editar
A primera vista, de su imagen, combinado con el hecho de que usted ha mencionado de audio, pensé que eras la medición de una entrada de micrófono. Sin embargo, parece que sólo estás usando Sensible a la Fuerza Resistencia (FSR), que es un sensor de presión. Si usted no necesita saber la cantidad de presión, sólo que fue empujado, usted no tiene que ir a través de todo el problema de encontrar la lectura exacta. Usted puede simplemente utilizar cualquier interrupción de generación, de entrada digital si se escoge el correcto valor de la resistencia (en lugar del condensador). Usted simplemente establecer un pin digital para generar interrupciones en los flancos de subida y de selección de una resistencia que le dará un cambio de estado (alta/baja) con la cantidad deseada de la fuerza para su toque. Entonces sabrás que cada vez que el FSR se empuja y se puede manejar con un bloqueo de fashioner, la introducción de la menor latencia posible.