Cómo hacer una barra de progreso mecánica de MP3 usando cobre / madera para reproducir / progresar un audio MP3 en Raspberry Pi

Aquí hay una ilustración de lo que debe hacer para construir un codificador lineal simple:


(Haga clic en la imagen para ampliarla)

Hay un bloque largo de material aislante (por ejemplo, madera), con agujeros perforados en él en varios lugares, y con alambre de cobre desnudo tendido entre los agujeros (mostrados como líneas negras gruesas). Cada cable está conectado a través de una resistencia de 1 kohm a un pin GPIO (la resistencia está allí para proteger las entradas GPIO). Para mayor protección, es posible que también desee conectar cada pin GPIO a tierra con otra resistencia mucho más grande, de aproximadamente 200 kohm o más. El control deslizante debe estar hecho de cobre u otro material conductor, y debe ser lo suficientemente estrecho como para caber entre las líneas rojas dibujadas en el bloque, y lo suficientemente largo como para abarcar los cinco cables.

Desde su software (supongo que Python), debe configurar los cinco pines GPIO como entradas, habilitar la histéresis y habilitar el pull-up (no el pull-down).

El codificador usa código Gray, en lugar de binario, por lo que debe realizar la conversión en su software. (El código gris permite una transición más suave de un valor al siguiente, sin saltos, porque solo un bit cambia a la vez). Cada vez que el control deslizante contacta un cable, el pin GPIO correspondiente va a 0; cuando el control deslizante está sobre un espacio en el cable, el pin GPIO va a 1. Entonces, por ejemplo, cuando el control deslizante está en la posición 12, las líneas A, C y E estarán en 0, mientras que las líneas B y D estarán en 1. Entonces su software necesita interpretar eso como 12. Y lo mismo para todas las otras posiciones, 32 en total.

Hasta donde sé, el único reproductor de audio / video para Raspberry Pi que le permite controlarlo a través de su API es el reproductor VLC. Hay una interfaz de Python disponible: libVLC. Sin embargo, no tengo experiencia con eso, así que no puedo ofrecerle muchos consejos al respecto.