Cómo controlar individualmente el color y el brillo de cien LED con software

Tienes tres opciones:

  1. Dividir el espectro de frecuencia de la señal de audio para una muestra dada de x ms
  2. Muestra la amplitud de la señal de audio para una muestra dada de x ms
  3. Ignora la entrada de audio por completo

Si elige la opción 1, se convierte en un problema de dibujar un gráfico de barras 2D. Si elige la opción 2, se convierte en un problema de dibujar un gráfico lineal 2D XY. Si elige la opción tres, entonces es bastante libre de encender sus LED en cualquier orden.

Actualmente, Raspberry Pi no admite capacidades de entrada de audio con conector de 3,5 mm (http://www.raspberrypi.org/help/…). Como alternativa, puede usar una tarjeta de sonido como Wolfson o una tarjeta de sonido / micrófono USB. Encuentre controladores para la opción que elija.

A continuación, deberá escribir dos piezas de software.

  1. Lectura de datos de la línea de audio utilizando el controlador para Wolfson o tarjeta de sonido / micrófono USB.
  2. Escribir su propio controlador para la simple pantalla LED. Necesitará crear una matriz ansn de estado binario (encendido = 1 / apagado = 0) de LED en la RAM y encontrar una manera de eliminarlo en su matriz LED. Si lo hace lo suficientemente rápido, el ojo humano no notará la transición, por lo que debe agregar un poco de retraso. Consulte los conceptos básicos de la pantalla de matriz de puntos LED aquí Laboratorio 12: Conceptos básicos de la pantalla de matriz de puntos LED – Laboratorio integrado

Creo que esto debería ayudarte a comenzar un poco. Buena suerte construyendo ese proyecto 🙂

Primero, debe asegurarse de que sus LED estén cableados adecuadamente. Necesitan estar conectados en una matriz.

Para hacerlo, decida cuántas filas de LED desea y cuántos desea en cada fila (10 filas de 10 LED dan una matriz de 10 × 10). Conecte los ánodos de todos los LED en una fila juntos, y los cátodos de todos los LED en una columna juntos para crear un ánodo común para cada fila y un cátodo común para cada ánodo (si tiene LED RGB, asegúrese de conectar el mismos colores a lo largo de una fila juntos, y los pines comunes, cátodo o ánodo dependiendo de sus LED, a lo largo de una columna juntos). Elija los cátodos o ánodos comunes (sea lo que sea, sea consistente) y agregue una resistencia al final de la conexión común que recibirá una señal (más sobre esto pronto) para reducir la corriente para que sus LED no se fríen.

Para encender un LED individual, su fila debe recibir 5 V y su columna debe estar conectada a tierra (uno lógico y cero lógico respectivamente para un microcontrolador). Un LED permanece apagado si su fila y columna se suministran con 5 V o 0 V.

Para controlar cada fila y columna, puede conectar cada fila y columna individual a un pin de salida en su microcontrolador. Para alterar el brillo de un LED, use la modulación de ancho de pulso (PWM, que está integrado en el Arduino si elige usar eso, no estoy seguro sobre el Pi). PWM esencialmente parpadea el LED a una velocidad determinada para que parezca más brillante o más tenue, ya que el ojo humano no puede discernir entre encendido y apagado tan rápido. Este método está limitado por la cantidad de pines en su microcontrolador.

Alternativamente, puede utilizar los registros de desplazamiento de entrada en serie en paralelo (SIPO). Con estos chips, un pin que genera un flujo de datos (en serie) se puede convertir en múltiples salidas paralelas (por ejemplo, 011010 se convierte en

0 0

1

0 0

1

1

0 0

Observe que la primera salida va al final). Por lo tanto, solo necesitará dos pines de salida, uno para todas las filas y otro para todas las columnas. La desventaja asociada es que necesitará programar PWM usted mismo.

¡Buena suerte con tu proyecto! No dude en preguntarme a mí oa Quora cualquier otra pregunta que pueda tener.

EDITAR

74HC595 es un chip SIPO que he usado en el pasado para construir un cubo de LED RGB, donde la teoría de encender LED individuales es la misma. Ese proyecto fue inspirado por el cubo LED de Kevin Darrah.

También miré por la web en este momento y me topé con el TLC5940, que es un controlador LED con PWM incorporado. Algunas personas en la web dicen que es complicado de usar, aunque no estoy seguro de cómo la complejidad de implementar un chip ya construido se compara con la complejidad de implementar PWM en el software.

Puede usar leds RGB direccionables como WS2812B.

Esos son súper fáciles de controlar y pueden interactuar con Arduino o RPi usando solo un pin digital. También se pueden programar fácilmente usando bibliotecas. Hay toneladas de recursos y tutoriales en Internet sobre esos.

Si fuera usted, definitivamente habría usado WS2812B.