Usando Arduino-UNO para controlar los pines LED Más que el número de pines de E / S

1

Nuestra clase recibió un proyecto para crear una miniatura de nuestro departamento de departamentos. Contará con 11 salas de laboratorio, 1 sala de servidores, 1 sala de profesores. Cada sala de laboratorio contendrá 18 PC, cada una representada por un LED. El servidor y la sala de la facultad tendrán cada uno 3 LED.

Ahora, cada grupo de 3 LED debe controlarse individualmente mediante un programa de computadora. Así que son 68 grupos de LED que necesitan control individual.

Estamos planeando utilizar un Arduino UNO que tiene solo 13 pines de E / S. ¿Hay alguna forma de usar esos 13 pines de E / S para 68 controles separados?

La fecha límite está cerca y estamos en un apuro. Cualquier respuesta será tremendamente apreciada, gracias de antemano.

    
pregunta Dan

5 respuestas

3

Hay dos enfoques básicos que se pueden combinar: extensión de E / S y multiplexación.

Hay chips que están conectados a tu Arduino usando unos pocos pines (2 o 3), y que pueden proporcionar más pines IO. Algunos ejemplos son el registro de desplazamiento 74HC595 (requiere 3 pines, proporciona 8 pines de salida, se puede encadenar) y el expansor de E / S MCP23017 (requiere 2 pines, proporciona 16 pines de E / S, 8 de estos chips pueden compartir estos dos pines). p>

La multiplexación significa que usted divide sus pines de E / S en filas y columnas, digamos 6 filas y 7 columnas, y coloca un LED en cada punto de cruce de fila / columna. Al manipular las filas y columnas, puede encender selectivamente un LED (o una fila de LED o una columna de LED). Haga esto rápido, y el ojo humano tendrá la impresión de que todos los LED están encendidos. Esto le dará control sobre hasta 42 LEds.

Hay un truco avanzado llamado Charlieplexing que le permite controlar los LED N * (N - 1) con N pins. Lo he usado para 12 LED (4 pines0, pero no estoy seguro de que funcione lo suficientemente bien para una N. más grande.

Lo que elijas depende de ti. Personalmente, consideraría la posibilidad de liberar más pines Arduino y usar los pines directamente en una matriz, o usar los MCP23017.

    
respondido por el Wouter van Ooijen
2

¡Considere utilizar NeoPixels !

Puedes controlar fácilmente 68 ( o 1,000+! )) NeoPixels desde un solo pin Arduino IO .

Vienen en un rollo y puedes cortar cuantas veces necesites colocar en cada lugar con unas tijeras ...

...opuedescomprarlosindividualmente...

Solo hay una línea de datos que va a cada píxel, luego sale por el otro lado y pasa al siguiente neopíxel, de modo que se conectan en serie en lugar de tener un cable para cada LED en su configuración. Esto hará que su trabajo de cableado sea muy fácil.

Hay muchas bibliotecas de Arduino disponibles para controlar los píxeles, por lo que tendrás una interfaz de alto nivel que te permitirá activar y desactivar los píxeles casi de inmediato.

    
respondido por el bigjosh
1

Tienes varias opciones, en realidad.

Puedes usar algunos chips específicos, intenta buscar el "controlador led i2c" o algo así. Conecta tantos controladores como sea necesario a la misma línea i2c y auge, virtualmente conduces mucho de leds.

Pero también hay multiplexación . Usted organiza sus leds en una matriz cuadrada y los enciende uno a la vez, pero eso le permite controlar más de 42 LED. Pero puede conectar sus LED en pares y conducir hasta 84 LED, y eso debería ser suficiente. Echa un vistazo a aquí . Para encender un LED, deberá atar la columna a la altura, la fila baja, y todas las demás columnas y filas deben tener una Z alta. Para activar su complemento, deberá atar la columna a la baja y la fila alta.

Esta última técnica parece muy atractiva pero:

  • deberá hacer muchísimo de cableado
  • el ciclo de trabajo máximo es 1/68 que puede ser bajo
  • asumiendo que desea un promedio de 1 mA en cada LED que le pide 68 mA al micro, que puede ser alto

Si el proyecto es solo una prueba de concepto, vaya con la segunda opción, haga algunos cálculos sobre el ciclo de trabajo actual y así sucesivamente y no obtendrá la parte de cableado. Yo diría que vaya con el segundo porque es inteligente, y eso es lo que recompensaría si fuera su profesor.

    
respondido por el Vladimir Cravero
0

Utilice 9 registros de desplazamiento en serie de 8 bits conectados en serie. Solo deberá proporcionar alimentación, conexión a tierra, entrada de reloj, entrada de datos (4 pines en total, 2 pines de E / S). Estos pueden ser conectados en serie para que pueda conectar la salida serial a la entrada serial del próximo registro de desplazamiento, y así sucesivamente.

Este artículo específicamente para arduino describe lo que hay que hacer. enlace

Para las piezas, generalmente puede obtenerlas de Digikey (www.digikey.com) o mouser. En su aplicación arduino, solo necesitará saber cuál será el patrón para cambiar en serie los datos a los LED.

    
respondido por el cowboydan
0

Eche un vistazo a este controlador LED

16 bits de ancho, por lo que solo necesitarás cinco de ellos, las salidas son de corriente constante, y cada salida puede hundir 120 mA.

Además, la cosa es un registro de desplazamiento con un pestillo de salida, por lo que solo necesitarás usar 3 de las E / S de tu Arduino para hablar con él.

    
respondido por el EM Fields

Lea otras preguntas en las etiquetas