Un simple divisor de voltaje reducirá el voltaje, aunque exactamente qué valores de resistencia usar para ser óptimos para su teléfono dependerá - los niveles de entrada de los teléfonos están lejos de ser estandarizados. Usaría un potenciómetro y lo giraría hasta que estuviera dentro del rango.
Para detectar los pulsos de entrada, puede usar técnicas basadas en FFT como se explica en otros comentarios y respuestas. Aquí hay una introducción detallada sobre cómo hacer eso con C código.
Sin embargo, exijo precaución con este enfoque, ya que está detectando altas frecuencias, necesitará una alta frecuencia de muestreo, lo que resultará en una alta sobrecarga de cómputo. Este problema se puede resolver con algoritmo de Goertzel en lugar de la FFT, pero todavía tiene un problema que con solo 5 5 pulsos Necesitas una buena resolución de tiempo. Esto también se puede resolver con la superposición frecuente de sus ventanas, pero al final creo que debería usar una técnica diferente:
-
contando el número de veces que la señal cruza cero. Con un poco de preprocesamiento (un filtro de paso de banda sintonizado en el rango de sus frecuencias esperadas) esperaría que fuera más fácil obtener resultados sólidos con esa técnica más simple.
-
Otro enfoque, que imita cómo se haría esto en el dominio analógico, es simplemente diseñar dos filtros de paso de banda y monitorear la salida de esos. Esto puede requerir un poco de procesamiento posterior, pero creo que esto produciría excelentes resultados.
Es difícil decirlo con seguridad, pero probablemente me inclinaría hacia la técnica # 2. Depende de algunas cosas que no quede clara en su pregunta, por ejemplo, ¿es probable que los tonos aparezcan al mismo tiempo (en caso afirmativo, use el número 2), siempre escuchará un tono u otro, o algunas veces? silencio, etc. Si era probable que la especificación cambiara y tuviera que diferenciar entre los tonos que estaban muy cerca en frecuencia, me inclinaría hacia el # 1.
Si necesita ayuda para diseñar filtros, este podría ser un buen lugar para comenzar .