¿Cómo manejar 30 LED con una cantidad menor de pines?

0

Tenemos 30 LEDs seguidos, y queremos encenderlos de izquierda a derecha. Sin embargo, hay muchos para que el Arduino tenga a cada uno en un pin diferente.

¿Hay un IC que puede tomar una salida binaria y una salida en base 1?

    
pregunta avery-whitaker

5 respuestas

6

Este tipo de LED son comúnmente controlados por registros de desplazamiento. Un registro de desplazamiento toma 3 entradas del arduino (Datos, Habilitar y Reloj), toma un (por ejemplo) número de 8 bits, luego lo envía a 8 pines diferentes. Un ejemplo es el siguiente: Shift Register 8-Bit - 74HC595

    
respondido por el dscharge
2

Realmente deberías sumergirte en charlieplexing. Con esta técnica es posible conducir muchos leds con solo unos pocos pines. La fórmula es n x n-1. Lo que significa que con 4 pines puede conducir 4 x (4-1) = 12 leds. Imagina que 12 leds con solo 4 pines. Con 5 pines, puede conducir 5 x (5-1) = 20 leds.

Con charlieplexing puede parpadear cada uno de estos leds individualmente o incluso hacer que se quemen todos al mismo tiempo. Se trata de un cableado y software realmente ingeniosos, pero hay mucha documentación al respecto en la red. solo busca en google por arduino y charlieplexing.

Hice un reloj de arena con 20 leds usando solo un Attiny85 y un escáner Larson con 12 leds también usando un Attiny85.

Estoy a punto de escribir una serie detallada sobre charlieplexing en mi sitio web, pero oye, eso llevará un tiempo. enlace

    
respondido por el Luc Volders
1

Lo que estás buscando es un decoder o un multiplexer .

    
respondido por el clabacchio
1

La respuesta correcta es a: tome la cantidad de LEDS que tiene y llame a esa cantidad de bits de almacenamiento que necesita. Si tiene 8 LED, debe conectarse a 8 bits de almacenamiento externo. A continuación, deberá encontrar un protocolo de interfaz con un número igual o menor cantidad de pines de los que tiene. Si solo tiene 3 pines GPIO externos, puede utilizar la interfaz SPI o la interfaz IIC.

Considere esta parte como una solución:

enlace

    
respondido por el Jotorious
0

Está bien, el código del termómetro. No sé de ningún decodificador comercial para eso.

Si te gusta la lógica programable, creo que un solo CPLD como el XC2C64 podría programarse para controlar (digamos) 50 LED con una entrada de 6 bits. Eso te da una unidad estática.

Una forma más fácil y económica es utilizar los controladores de fuente de unidad de disco multiplexado 8 (UDN2803 o similar) con un puerto de su micro y 8 controladores de disipador (ULN2803) con otro puerto. Eso permitirá que se conduzcan hasta 256 LED con solo 16 pines de puerto, dos chips y 8 resistencias.

Es posible que los controladores de origen tengan que ser MOSFET o algo más fuerte, ya que deben conducir la corriente promedio de un solo LED * 16 (con un ciclo de trabajo del 12.5%). Los controladores del fregadero deben manejar la corriente promedio de un solo LED * 8 (pero todos pueden estar encendidos a la vez). El diseño puede ser más conveniente utilizando un registro de desplazamiento y una unidad estática; el diseño de la matriz es mejor para un rectángulo, no tan bueno para un gráfico de barras lineal.

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas