Bueno pues sí, teníais razón, he probado este programa con una fuente de señal y efectivamente, ni de broma llega a los 4Mhz prometidos. Al final se a quedado en unos escuálidos 3,2 Khz, que limitan este frecuencímetro muy mucho y que solo lo hace apto para trabajar con señales de muy baja frecuencia. De todos modos funciona bien como detector de tonos de audio, cuenta revoluciones, puede que como tacómetro óptico de asta 180.000 Rpm, detectores de proximidad para robótica usando infrarrojos y alguna cosa más.
Pero bueno, me voy a poner manos a la obra y voy a ampliar el programa, para que pueda trabajar con señales analógicas de 1 a 3Khz como hace hasta ahora y además voy a implementarle la opción de que mida señales digitales de 1 a 1Mhz, usando solo la entrada digital del arduino y no solo la analógica como hasta ahora, que debido a la lenta velocidad de muestreo, limitaba mucho la frecuencia a determinar.
También voy a intentar que mida frecuencias por debajo del Hz, que puede ser útil, para proyectos en los que se requieran largos periodos por ciclo.
Un saludo a todos y gracias por las críticas constructivas que ayudan a mejorar y a aprender.