Usando dos interruptores para encender / apagar los LED consecutivos

1

Estoy intentando crear un circuito que controla 10 LED con dos interruptores momentáneos. Llamemos a un botón ButtonUp y al otro ButtonDown.

Cuando presiono ButtonUp, el primer LED se ilumina. Si vuelvo a pulsar ButtonUp, se enciende el segundo LED, etc., lo que hace que todos los LED se enciendan si presiona ButtonUp 10 veces.

Si presiono ButtonDown, el LED encendido más recientemente se apaga.

  • ¿Hay una manera de hacer esto con un circuito y, de ser así, cómo?

  • ¿Es este un trabajo más adecuado para un chip programable como el que se encuentra en un Arduino?

pregunta user37866

3 respuestas

4

Puede adoptar varios enfoques para esto dependiendo de sus motivos ocultos. P.ej. ¿Se está acercando a esto como una experiencia de aprendizaje de nivel principiante en diseño lógico, microprocesadores o FPGA? O, quizás, ¿esto tendrá algún tipo de aplicación de producto?

Esto se puede hacer usando la lógica de la familia 7400 con un puñado de chips. La pieza central sería un contador up-down decenio (por ejemplo, 74x168 o 74x192) o un contador up-down binario (por ejemplo, 74x169 o 74x193. La salida de este contador iría a un chip decodificador 1: n de algún tipo (por ejemplo, 74x145) Esto, a su vez, impulsaría los LED en una "cadena" para que obtenga el efecto de histograma que está buscando. Los pulsadores deberían estar "condicionados" por alguna lógica para obtener los impulsos ascendentes y descendentes convertidos en una dirección y un reloj. el formato que necesita el contador que elija. Definitivamente se puede hacer, pero deberá aplicar una dosis moderada de ingenio. ¡Sin duda habrá aprendido mucho sobre diseño lógico cuando haya terminado!

Otro enfoque lógico sería utilizar un registro de desplazamiento bidireccional de 10 bits (probablemente dos unidades de 8 bits conectadas en serie como 74x299 o 74x323). Usted "bombearía" un registro de cambios de 1 bit hacia arriba y hacia abajo con los botones pulsadores (nuevamente "condicionado" para proporcionar el formato de las señales que necesita el registro de cambios específico que elija). El bit 1 se propagaría como una cadena de 1 bit a través de las etapas del registro de desplazamiento, creciendo a medida que se desplaza a la derecha, reduciéndose a medida que se desplaza a la izquierda. Los LED se accionan directamente desde las salidas del registro de desplazamiento. Este enfoque es probablemente más sencillo de implementar que el enfoque de contador descrito anteriormente. De nuevo, un excelente proyecto para principiantes para aprender el diseño lógico fundamental.

Realizar esta función con un pequeño micro es casi trivial, suponiendo que tenga un nivel fundamental de experiencia de diseño con tales dispositivos. Si no lo haces, sería un buen micro proyecto para principiantes.

Por último, y dependiendo de su fondo, puede usar un FPGA ("array de puertas programables de campo") o CPLD ("dispositivo lógico programable complejo"). Esta sería la solución más elegante en términos de conteo mínimo de piezas. Sería el chip FPGA, los botones y los LED y no mucho más. El inconveniente es reunir las herramientas de diseño necesarias y aprender a usarlas. Además, es probable que tengas que aprender el lenguaje de diseño de programación VeriLog o VHDL FPGA. Este es un muro alto para escalar para principiantes. Especialmente si no sabes mucho sobre diseño de lógica fundamental para empezar.

En resumen, depende de dónde vienes y hacia dónde te diriges.

¡Buena suerte!

    
respondido por el FiddyOhm
1

Se podría hacer con unos pocos chips HCMOS (por ejemplo, un 74HC14, uno 74HC00 y tres 74HC194) y un chip de reinicio (hasta 12 LED).

Carga paralela en el encendido, y desplace 0 o 1 hacia la izquierda o hacia la derecha para encender o apagar los LED. Necesita demoras y demoras de tiempo de configuración izquierda / derecha, así que algunas partes discretas.

Sería más fácil usar un microcontrolador una vez que haya superado la curva de aprendizaje. El único hardware requerido podría ser un microcontrolador con suficientes pines de puerto, los LED y algunas resistencias.

    
respondido por el Spehro Pefhany
1

Si decide utilizar la lógica digital de integración de escala media, una opción es crearla alrededor de tres registros de desplazamiento bidireccionales de 4 bits. Una parte es el 74HC194. Tiene pines de entrada de datos separados para desplazarse hacia la derecha y hacia la izquierda. Si un pin de entrada de datos está atado alto y el otro atado bajo, puede cambiarlo desde (digamos) la izquierda, hacia la derecha. Los unos se propagarán hacia la derecha. Si cada LED se acciona desde un pin de salida, obtendrá el resultado deseado. Cuando se desplaza desde la derecha, los ceros se desplazan hacia adentro, conduciendo los hacia la izquierda.

Necesitará un circuito para provocar un reloj cuando se presiona cualquiera de los botones, pero los pasadores de modo dependen de qué botón se presionó. Usted podría O los botones para que disparan un 555 para emitir un pulso, con el borde posterior del pulso siendo el reloj del registro de desplazamiento. Eso también hará que rebote el botón. Si los botones también van por separado al ajuste y al restablecimiento, respectivamente, de un Ajuste / restablecimiento de FF, las salidas de las barras Q y Q del flop pueden controlar los pines del modo S0 y S1. abajo. También deberá hacer algo para restablecer el registro de cambios en el encendido. El 74HC194 tiene un reinicio maestro que debería hacer que sea fácil de hacer.

    
respondido por el George White

Lea otras preguntas en las etiquetas