Enganche los valores generados por un decodificador de 4-16 líneas

Estoy usando un decodificador de 4 a 16 líneas para convertir un número de 4 bits de arduino/seeed/ESP32 para controlar circuitos como LED RGB que, de lo contrario, consumirían todos mis pines. Hay algunos problemas con este enfoque que he resuelto al estudiar las hojas de datos, pero uno me tiene perplejo: solo un pin puede estar activo (bajo) a la vez en el 74HC154, por lo que si conecto 5 LED de ánodo común RGB solo puedo pulsar cada uno cátodo R/G/B durante 1/15 del tiempo para que se apaguen.

Necesito algún tipo de pestillo de 16 canales con función clara para poner al lado del decodificador para poder acumular pines activos (bajos) hasta que pulso el pin claro. Esto es lo que necesito:

Chip izquierdo: entradas 0-15, chip derecho salidas 0-15 y un pin claro.

  1. Pulse Clear pin y TODAS las salidas van altas
  2. pulse cada pin de entrada de datos deseado (por ejemplo: 3,5,7)
  3. los pines de salida correspondientes bajan y MANTIENEN bajos para impulsar el color de LED deseado
  4. esperar 1ms
  5. pulso claro para empezar de nuevo

De esta manera, puedo usar el decodificador para 'programar' el chip de enganche y dejar que controle los LED durante 1 ms o similar, luego borrar y hacer el siguiente 1 ms. Si puedo hacer esto lo suficientemente rápido, incluso puedo enviar software PWM a través de los chips y tener la funcionalidad RBG básica (en lugar de solo R, G, B, W, cian, magenta, amarillo o apagado)

He investigado convertidores de bus y flip flops, pero no puedo encontrar esta funcionalidad sin conectar muchos chips juntos. ¿Existe ese chip o se puede ensamblar? Si no, ¿cómo resolvería el problema básico?

Esto suena muy parecido a un MCU barato. Puede escribir el software personalizado para él, fácilmente. También es flexible, ya que puede ajustar el software según lo requieran las necesidades con el tiempo. Dicho esto, no puedo decir mucho más porque no veo un diagrama del dispositivo que está buscando crear, con entradas y salidas bien diseñadas con diagramas de tiempo. ¿Puedes escribir más?
Esto suena como un CPLD barato y simple. Puede escribir el pequeño HDL necesario para el circuito lógico simple que desee y modificarlo como desee. Tu circuito puede tener los tiempos que quieras. Puede simular en su computadora y ver cada puerta en su circuito. Es simple y fácil de aprender a hacer si no sabe cómo, hay montañas de información y guías didácticas, además de muchos tableros de demostración baratos si quiere probar antes de decidir. El software de desarrollo que necesitará es de descarga y uso gratuitos.
Dos chips 74xx259. La segunda vez esta semana ha surgido esto.

Respuestas (1)

Gracias por comentar ideas.

Podría usar un PLA o un CPLD, estoy de acuerdo, pero eso es más de lo que quiero abordar ahora. Lo reduje a tres opciones para resolver el caso de uso en lugar del decodificador de 4 a 16, que no era el camino a seguir para mí.

  1. Solo para LED está el MAX7219 que controla 64 LED. Quizás esto pueda hacer RGB con menos LED o múltiples chips;

  2. Para la salida general, el componente que quería es un registro de desplazamiento como 74hc595;

  3. Para los LED existe Charlieplexing (Quizás podría adaptarse al caso general con el uso de diodos en serie con carga) http://www.pcbheaven.com/wikipages/Charlieplexing/

Doy crédito a las respuestas de este artículo: https://arduino.stackexchange.com/questions/117/is-there-a-way-to-have-more-than-14-output-pins-on-arduino

Si bien acepto que esto es un cambio de enfoque, ya que ya no uso un decodificador, es la solución a mi pregunta en espíritu.

Una cálida bienvenida al sitio. Creo que estás usando Responder en este sitio como se usa Responder en los foros de discusión. Como esta no es una respuesta única a la pregunta, ¿puede editar esta información en su pregunta al final y luego eliminar esta respuesta? Gracias de nuevo y, de nuevo, bienvenido.
spl - Hola, esta respuesta no me queda clara. O bien (a) realmente quiso escribirlo como una respuesta , porque realmente responde a su pregunta original (aunque no me parece que lo haga). En ese caso, indique claramente que esta es la solución final para usted y que no desea/necesita más respuestas. Luego, regrese en 2 días para "aceptar" esta respuesta, para cerrar todo el tema ( las respuestas automáticas solo se pueden aceptar después de que hayan transcurrido 48 horas desde que se hizo la pregunta).
[continuación] O, (b) No pretendía que esta fuera la respuesta final, y todavía quiere más respuestas. En cuyo caso, como se comentó anteriormente, esta es una actualización y no una respuesta, y debe "editarse" en su pregunta original, por ejemplo, haga clic en "Editar" debajo de la pregunta, agregue esta nueva información en la parte inferior y luego elimine esta respuesta. || ¿Cuál se aplica aquí, (a) o (b)? Gracias.