Arduino/Raspberry Pi 2 Matrices LED

¿Alguien sabe si puedo usar un solo Arduino o Raspberry Pi para controlar dos matrices LED de 32x32 como se venden en el sitio web de Adafruit? Aquí hay un tutorial donde puede cablear la matriz de 32x32 .

Idealmente, me gustaría poder controlarlos por separado, pero si el cableado solo permite el control simultáneo de los dos, está bien.

Que usted por su tiempo.

¿Tiene una pregunta específica que no está respondida por el tutorial al que se vinculó? Me parece bastante claro.
@DaveTweed Al tener una experiencia muy limitada en Arduino/Ingeniería eléctrica (soy un estudiante de Ciencias de la Computación), no tenía muy claros algunos de los detalles.

Respuestas (2)

Estos paneles necesitan inherentemente MUCHA renovación, debido a su diseño. Va a matar al Arduino si quieres hacer muchos colores, especialmente si quieres encadenar estos paneles. Escribí una explicación bastante genérica sobre cómo funciona la pantalla de 16x32, y puedes extrapolarla al panel de 32x32, que básicamente solo agrega otra línea de dirección. Básicamente, puede manejar un panel tan grande como desee siempre que pueda colocar los datos en paralelo y pasar rápidamente por las líneas de dirección. Esta es la razón por la que Adafruit menciona varias veces el uso de un FPGA para controlar estas pantallas: se adaptan perfectamente a salidas de datos paralelos y de sincronización rápida.


Cómo funcionan las pantallas Adafruit RGB de 16x32 (y otras posibles):
esta pantalla dibuja información de imagen mediante multiplexación, lo que básicamente significa actualizar las filas y columnas de la pantalla más rápido de lo que el ojo puede procesar. Si se actualiza lo suficientemente rápido, el ojo ve una imagen completa, sin parpadeos ni artefactos. Primero, se debe seleccionar la fila a actualizar. En esta pantalla, esto se hace usando un decodificador de direcciones de 3 a 8 (74HC138D). Hay tres entradas de dirección en la pantalla marcadas A, B y C. Según la tabla de verdad, puede ver que solo una entrada está activa (baja) a la vez.

ingrese la descripción de la imagen aquí
Fig 1. Tabla de verdad 74HC138D

Quizás se pregunte cómo se pueden usar los 8 bits del decodificador para seleccionar 16 filas en total. El truco utilizado aquí es seleccionar filas en paralelo. Por ejemplo, cuando se selecciona la primera fila (Fila 0), seleccione también la novena fila (Fila 8). El uso de esta técnica implica que debemos proporcionar datos para las columnas de dos filas únicas a la vez. (Más sobre esto más adelante)

Las salidas del decodificador solo pueden manejar corrientes bajas y no pueden controlar una fila de LED directamente. Para remediar esto, se utiliza un MOSFET de canal P como interruptor, que nos proporciona la alta corriente que necesitamos para impulsar una fila de LED. Puede ver que las salidas del decodificador se comparten entre cada 8 salidas (0 y 8, 1 y 9, repitiendo ese patrón hasta la fila 7 y 15)

ingrese la descripción de la imagen aquí
Fig. 2. Esquema del 74HC138D que muestra los MOSFET de salida.

Ahora que hemos ordenado nuestras filas, necesitamos almacenar los datos de la columna. Los datos de la columna se almacenan en un registro de desplazamiento de entrada en serie y salida en paralelo de 16 bits. Dado que la pantalla tiene 32 píxeles de ancho, se deben encadenar dos registros de desplazamiento. El registro de desplazamiento está diseñado para funcionar con LED e implementa un sistema de corriente constante que garantiza que el brillo del LED permanezca uniforme.

Hay 12 de estos registros de desplazamiento en la pantalla. 3 de cada uno se utilizan para contener los datos rojo, verde y azul para 1 de los 4 cuadrantes de la pantalla. (3 colores * 4 cuadrantes = 12 fichas)

ingrese la descripción de la imagen aquí
Fig 3. Cuadrícula de pantalla LED RGB de 16x32, que muestra los 4 cuadrantes

¿De dónde vienen los cuadrantes? Recuerde nuestro método para dibujar 16 filas usando las 8 salidas del decodificador y cómo implica que debemos tener datos únicos para cada par de filas. Cuando se seleccionan la Fila 0 y la Fila 8, debemos proporcionar a cada fila datos únicos. Esto nos obliga a utilizar dos registros de desplazamiento diferentes para cada par de filas, un registro superior y un registro inferior. Debido a esto, la pantalla se divide en una mitad superior y una mitad inferior. Los datos se desplazan a la mitad superior a través de las señales R1, G1 y B1 en el conector. Los datos de la mitad inferior son suministrados por las señales R2, G2 y B2 en el conector. Luego, dado que nuestra pantalla tiene 32 píxeles de ancho, debemos usar 2 registros de desplazamiento para contener los 32 bits de datos de píxeles para una sola fila. Esto crea las mitades izquierda y derecha de la pantalla. (Por supuesto,

Notará que si quisiéramos tener un registro de desplazamiento para cada fila, eso requeriría 16 filas * 2 mitades de la pantalla = 32 registros de desplazamiento, ¡solo para un color! Necesitaría 96 registros de desplazamiento para todos los colores si usara uno por fila. Obviamente, esto es muy inviable, tanto en el diseño como en el costo. Para remediar esto, básicamente volvemos a la idea de multiplexación: si lo hacemos lo suficientemente rápido, la pantalla aparecerá perfecta a la vista. Cada cuadrante de la pantalla está controlado por 3 registros de desplazamiento, uno para cada color. Primero, se seleccionan la Fila 0 y la Fila 8. Se desplazan 32 bits de datos al registro de desplazamiento de cada color (R1, G1, B1) y luego se bloquean. Al mismo tiempo, también se desplazan 32 bits de datos al registro de desplazamiento de cada color para la mitad inferior (R2, G2, B2) y luego se bloquean. El proceso se repite 7 veces más,

ingrese la descripción de la imagen aquí
Fig 4. Diagrama que indica el funcionamiento de los registros de desplazamiento.

Cada cuadrante está controlado por 3 registros de desplazamiento, uno para cada color R, G, B. Estas pantallas se describen con una "tasa de escaneo de 1:8" y ahora puede ver que se necesitan 8 actualizaciones muy rápidas para dibujar 1 pantalla de datos.

Excelente respuesta!
+1000000 por una explicación increíble!!!!
Meh, la respuesta estuvo bien.

Para ejecutar dos de las matrices con información de pantalla idéntica , las líneas de control (dirección y datos) se pueden conectar a ambos paneles en paralelo, pin por pin idéntico, ya que las entradas al panel son de alta impedancia, es decir, consumirán muy poca corriente. del arduino. El número de pines GPIO en el Arduino también seguirá siendo el mismo.

Por lo tanto, simplemente siga el tutorial de AdaFruit con precisión, excepto que el pin que conduce R1 tendrá que ir a R1 en ambos paneles, y así sucesivamente.

Por supuesto, también necesitará energía suficiente para hacer funcionar ambos paneles a la vez, es decir, alrededor de 4 amperios en lugar de los 2 amperios especificados en el sitio.


Para manejar los paneles con imágenes separadas , no hay información disponible de AdaFruit aparte de que aparentemente se pueden conectar en cascada. Además, no hay una hoja de datos, como dice claramente el sitio.

Si usted u otra persona se aventuran a abrir uno de los paneles, identifican los circuitos integrados en el interior, específicamente los controladores de 16 canales de corriente constante y cualquier otro circuito integrado de muchos pines, y luego ubican las hojas de datos para ellos, tal vez alguien en este sitio lo haría. ser capaz de sugerir cómo ponerlos en cascada.

A partir del conocimiento de otros paneles de matriz de LED conectables en cascada, la conexión suele ser conectores en cadena (en este caso, el IDC desde la "J-out" hasta la "J-in" del siguiente panel). La conexión en cascada de los datos de visualización de un panel al siguiente se realiza pulsando la entrada "Latch" baja. Esto podría o no funcionar para estos paneles. Dependería de usted intentarlo bajo su propio riesgo.