en algunos codigos tengo visto usar array de 128 elementos o similar para saber el seno o cos de una señal. en tu caso puedes crear un array de 1023 elementos (yo emepezaria con uno pequeño 128: indice=analogread(a1)>>3;).
#include <avr/pgmspace.h>
prog_uint16_t tiempo[128] PROGMEM ={8333, 8332, 8328, 8322, 8313, 8302, 8288, 8272, 8253, 8232, 8208, 8182,
8154, 8123, 8090, 8054, 8016, 7976, 7933, 7888, 7841, 7792, 7741, 7687, 7631, 7573, 7513, 7451,
7388, 7322, 7254, 7184, 7113, 7040, 6965, 6888, 6810, 6730, 6649, 6566, 6482, 6396, 6309, 6220,
6131, 6040, 5948, 5855, 5761, 5666, 5570, 5474, 5376, 5278, 5179, 5080, 4980, 4879, 4778, 4677,
4575, 4473, 4371, 4269, 4167, 4064, 3962, 3860, 3758, 3657, 3555, 3454, 3354, 3254, 3154, 3055,
2957, 2860, 2763, 2667, 2572, 2478, 2385, 2293, 2203, 2113, 2025, 1938, 1852, 1767, 1685, 1603,
1523, 1445, 1369, 1294, 1220, 1149, 1079, 1012, 946, 882, 820, 760, 702, 646, 593, 541, 492, 445,
400, 357, 317, 279, 244, 210, 179, 151, 125, 101, 80, 61, 45, 31, 20, 11, 5, 1};
utilizo define para reducir el uso de ram pues son demasiados datos. Para generarla use excel la ecuación es: =(cos(entrada hasta 128 *PI()/128)+1 )*1000000/240
240 para 60hz y 200 para 50hz
ahora mismo no se me ocurre como comprobar que sea lineal la conversión pero matemáticamente tiene buena pinta. si llegas a comprobar que es correcto avísame para guardar este codigo