Pregunta

He acabo de comprar un Rainbowduino para controlar una carga de LEDs individuales (no una matriz RGB). Toda la documentación hasta ahora está dirigido hacia el control de matrices RGB que es no lo que busco.

Si no está familiarizado con el Rainbowduino es un clon Arduino con 24 canales de corriente constante de 120 mA, 8 súper canal conductor fuente de 500 mA cada uno y una amplia adaptación de voltaje de salida de 5 V - 12 V DC. Perfecta para los LED de conducción. La página del producto está aquí: http://www.seeedstudio.com/blog/?page_id= 187

He conectado hasta 16 LEDs y quiero ser capaz de convertir cada uno de ellos dentro y fuera de forma individual con digitalWrite(). He subido un cierto código de demostración de la junta que no está funcionando realmente. He calculado que los canales de origen Conductor 8 son fácilmente controlables con digitalWrite() en los pines 3-11. Sin embargo el control de los otros 24 canales de hundimiento es más difícil. Parece que están controlados por 3 registros de desplazamiento (uno cada uno) que sólo pueden acceder con SHIFTOUT. Tengo ni idea de cómo funciona esto. ¿Puede alguien ayudarme a apuntar en la dirección correcta?

La mitad de los LEDs están conectados en azul 1-8 y la otra mitad están cableados en verde 1-8. Las piernas positivos están cableados en VCC1-2 que se han establecido en alto. Estoy seguro de que el circuito está conectado correctamente, es la programación que estoy teniendo problemas con.

He mirado el código de ejemplo que se incluye con el Rainbowduino, pero no puedo hacer sentido de ella. ¿Cómo puedo solucionar este problema?

¿Fue útil?

Solución

El uso de un registro de desplazamiento para multiplexar (o de-multiplex, dependiendo de su punto de vista) entradas / salidas es muy común en la electrónica digital.

Básicamente, el comercio de ahorro de pines en su controlador de tener que incluir otro chip (registro de desplazamiento) en el diseño.

En este caso, el registro funciona como un convertidor de serie a paralelo; que tiene una línea de entrada en serie, que se alimenta con los bits de la CPU. También tiene 8 salidas paralelas, conectados a una memoria de 8 bits que se carga en serie desde la CPU. Usando esto, se puede "cambiar" fuera 8 bits de datos en un solo pasador (más un pin para clocking, típicamente), que se almacenan entonces en el registro de desplazamiento y puede conducir 8 LED en paralelo.

En este caso particular, es necesario averiguar cuál AVR pines del puerto los registros de desplazamiento (los conductores MBI5168 sumidero de corriente constante contienen los registros de desplazamiento, aquí) están conectados a. Tendrían que estar encadenado a un par de salidas, una para datos y otra para el reloj. Una vez que sepas los pines, usted debe ser capaz de conducir por sí mismo utilizando la ShiftOut comando .

Excavación de un poco más allá, esta muestra "bosquejo" contiene las siguientes definiciones, en el archivo llamado "Rainbow.h":

//MBI5168
#define SH_DIR_OE    DDRC
#define SH_DIR_SDI   DDRC
#define SH_DIR_CLK   DDRC
#define SH_DIR_LE    DDRC

#define SH_BIT_OE    0x08
#define SH_BIT_SDI   0x01
#define SH_BIT_CLK   0x02
#define SH_BIT_LE    0x04

#define SH_PORT_OE   PORTC
#define SH_PORT_SDI  PORTC
#define SH_PORT_CLK  PORTC
#define SH_PORT_LE   PORTC

Esto es por supuesto "rumores" digital total (no me pertenece el dispositivo, nunca he programado en cualquier tipo de Duino *), pero yo diría que este es el sistema de suministro de bala de partículas que escupe usted' re buscando.

interpreto este modo:

  • PORTC es el conectado a los registros de desplazamiento, todas las clavijas de control están en PORTC.
  • Cuatro pernos están dedicados (en lugar de los dos optimista que he mencionado anteriormente).
  • El reloj es PORTC pin: 2 y los datos son PORTC:. 1

Otros consejos

El control de cada LED individual es tiempo bastante caro, es mejor pensar en filas, mientras que cada color del LED se presenta como en bits, por lo que es 8 bits x 3 colores (rojo, verde, azul). Escribí una pequeña biblioteca Rainbowduino que le permite configurar cada fila o marco fácilmente:

leer mi blog el que

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top