Tienes rebotes y por eso lees más pulsos de los que realmente deberían haber.
¿El opto tiene salida por relé?
Sí el caso es ese, la solución vía hardware está en poner una red r/c antirebotes, aquí tienes información:
http://www.iesleonardo.info/ele/pro/CURSO%202002-2003/Jorge%20Gonzalez/el%20pic%2016f84.htm
En particular el circuito de la izquierda de esta imagen:
![]()
Por otro lado si la salida es digital igual tienes un problema de componentes.
También se puede hacer por software, creo recordar que en los ejemplos que vienen con el IDE tienes alguno.
Saludos.