Así que lo que quieres es un codificador rotatorio. Funcionan de manera similar a la forma en que funciona el mouse de una computadora de escritorio, excepto que, a diferencia de un mouse que se mueve continuamente, pueden funcionar con interruptores internos puramente mecánicos (un mouse a menudo usa un codificador óptico debido a su movimiento más frecuente.
De todos modos, un codificador rotatorio funciona al tener dos contactos internos, que se hacen y se rompen en un orden muy específico, llamado Cuadratura. Mire este gráfico de la forma en que los contactos cambian de estado con el tiempo ...
Si lo estudia detenidamente, puede ver que es posible escribir código para identificar la dirección del movimiento, con cada transición. Una ventaja adicional de este esquema es que, aunque siempre se desea aplicar un algoritmo para rebotar contactos, no es muy crítico con el esquema de cuadratura, porque lo peor que puede suceder es generalmente un cambio aleatorio de una cuenta hacia arriba o hacia abajo (a diferencia de simple par de botones ARRIBA / ABAJO, donde un contacto deficiente podría significar varios saltos a una configuración más alta o más baja).
Espero que esto ayude. Si tiene problemas para escribir o encontrar un código escrito previamente para tratar con la salida del codificador rotatorio, puedo agregarlo a esta publicación.
O, como parece que aún no tiene un microcontrolador en su circuito, también es posible hacerlo con circuitos integrados lógicos comunes. Por ejemplo, si toma un flip flop tipo 'D' y conecta una de las salidas del codificador a la entrada 'D', y la otra a la entrada del reloj (con resistencias pull up según sea necesario, por supuesto) la salida del flip flop siempre indicará si está cambiando CW o CCW. Si luego agrega un poco más de lógica para simplemente cambiar de estado cuando se produzca CUALQUIER transición (como una exclusiva o compuerta), entonces tendrá pulsos de dirección y de subida / bajada, tal como lo hizo con los botones simples.