Quiero mostrar el estado de un programa con LED. Hay 22 pasos, cada paso está representado por un LED.
Solo me queda un pin en mi MCU, tal vez dos.
Básicamente, me gustaría que el pin funcione como un 'reloj'. Para cada pulso, el LED "siguiente" se enciende, todos los demás LED están apagados.
Podría usar un reloj para IC binario. (por ejemplo, contador binario 74HC393) Esto crearía un nibble, que luego podría alimentar a un multiplexor (por ejemplo, 700-MAX336CPI+) que encendería una de sus 16 salidas a la vez. (Puedo vivir con 16 pasos).
Quiero hacerlo relativamente barato. Me pregunto si hay una solución más elegante. Tal vez con un IC especializado, o si hay una solución con componentes discretos simples, oh, tal vez incluso podría usar un pequeño servo para señalar el paso correcto... ¿Qué te viene a la mente?
Usaría 3 contadores 4017, encadenados juntos. Simplemente registre la cadena desde su microcontrolador. El 4017 es muy económico, tiene una salida para cada LED (por lo que no hay decodificación) y se puede configurar muy fácilmente para encadenarlo. Necesitaría 3 para su aplicación. La salida de 23 pines debería restablecerlos todos para reiniciar el conteo.
Editar: es posible que pueda piratear algo usando diodos y menús desplegables para probar si el 'reinicio' (es decir, la salida 23) es alto usando el pin del reloj. Un diodo de 23 a la salida del reloj a través de una resistencia de 10k, con una resistencia de 100k en el pin como desplegable. Cuando el uC está bajando el reloj, cámbielo momentáneamente a una entrada. Si se mantiene bajo, aún no es el final. También es posible que deba probar 24 (es decir, tener ambos conectados al reloj a través de un diodo y una resistencia de 10k) ya que el pull-up probablemente lo registre nuevamente (pero solo una vez, hasta que lo vuelva a bajar). No estoy seguro, no lo he probado, pero probablemente.
Es mucho más fácil volar otro pin uC para probar 23, pero dijiste que no querías hacer eso.
Actualice su MCU a uno con más pines. Será más barato que añadir más piezas.
Las tiras LED RGB direccionables funcionan con un solo pin de datos.
Utilice una segunda MCU.
Conéctese a él usando un pin de E/S e implemente un protocolo UART entre los dos en el software. Eso le da un byte de datos completo en el que codificar su control de patrón de LED, que es mucho a medida que describe los requisitos.
Puede comprar una MCU de 28 pines que funcionará por menos de una libra (£ 1). Eso le brinda sus 22 pines de E/S para la conducción directa de LED con solo uno encendido, más 1 E/S para la conexión de MCU host.
Este es el circuito más pequeño con la menor cantidad de circuitos integrados para el control directo de LED: un circuito integrado, probablemente un cristal, dos condensadores de desacoplamiento. Ahorra en una carga de registros de desplazamiento, etc. y utiliza LED y resistencias baratos.
Si está feliz de colocar los LED en una matriz de unidades multiplexadas, podría usar menos resistencias y menos pines de MCU, por lo que una MCU más pequeña. El circuito de ejemplo a continuación muestra 20 LED en una matriz, controlados por 5 E/S de MCU y con 4 E/S de MCU absorbiendo la corriente de retorno.
Necesitaría una matriz de LED de 5x5 para usar 10 pines de E / S de MCU. Con 1 pin de E/S más para la recepción de UART, puede usar una MCU de 14 o 16 pines.
Imagen del mundo de Nduli
Además del costo de la pieza, pagará el tiempo y los gastos de desarrollo/prueba del programa. Si solo eres tú por tu cuenta, no un trabajo profesional, entonces eso es menos importante. Si se trata de un trabajo profesional, esa es una consideración que se debe calcular.
Su solución propuesta con un pulso para avanzar al siguiente LED suena factible.
Con dos pines dedicados (datos+reloj), puede usar I2C (bit-banged en el software si es necesario) y conectar un par de expansores de E/S o un controlador LED multicanal.
Con un solo pin de datos, puede probar una tira LED RGB direccionable o su propia disposición de chips LED direccionables conectados en cadena en una PCB. Son bastante baratos, pero necesitarán 5V y un cambiador de nivel.
También puede ver la familia de chips de 1 cable.
Una solución con un servo y dial definitivamente tendría algo de carácter, si puedes vivir con el ruido;)
Al igual que Justme, sugeriría el uso de LED direccionables, como el ubicuo WS2812 (se necesita un solo pin, protocolo extraño basado en el tiempo, pero muy compatible), o el APA102 (se necesitan dos pines, SPI estándar).
Los LED están conectados en cadena, por lo que envía comandos a los cables y puede cambiar todos los LED a la vez.
Esto puede ser excesivo en su caso como:
¡Pero la simplicidad y la flexibilidad adicional pueden ser útiles!
se establece la secuencia (hacia delante o hacia atrás).
Incluso si usa 74HC4017, necesitará un segundo pin para reiniciar.
Si desea escanear en ambas direcciones, necesita un pin de reloj y un pin de dirección, por lo que 2 pines. Con 2 pines, puede usar registros de desplazamiento 74HC595 encadenados.
Si no tiene dos pines libres, puede mover una de las salidas como otro LED a una de las salidas HC595, o mux algunos botones para guardar un pin.
Estera
usuario173271
AnalógicoNiño
veta
FeRD
Damián
J...