Paso 3: Software
La función 'putc' pondrá un carácter en la pantalla como sigue:
putc (carácter, posición, color de primer plano, color de fondo)
Esto demuestra que sólo dos de las funciones, hay otros como dibujo cuadros, líneas y texto scroll de izquierda a derecha.
El software se construye en capas que hace más fácil de entender y desarrollar. La siguiente es una descripción de cada capa y cómo funciona.
Conductor del LED
Hay una descripción completa de la conducción de estos LEDs direccionables en http://www.bypic.co.uk/projects/colour-addressable-leds/ sin embargo un resumen no irá mal.
El controlador de WS2811 necesita solo un cable, la señal es enviada de un LED en LED de un específico ritmo (frecuencia) y por el momento es importante. Los dispositivos utilizados en esta pantalla son 400kHz según la hoja de datos es la velocidad media, velocidad máxima es de 800 kHz
El de 0 y 1 se envían como sobre donde se produce la transición de H a L antes de mitad de camino para 0 y después de mitad de camino para 1. El tiempo real para el marco o el celular es 2500nS de 400kHz. Para el BV500 funcionando a 40MHz esto es 24 ciclos de CPU por lo que se arregla eso 1 es 16/8 ciclos (alto/bajo) y 0 8/16 ciclos (alta/baja).
Esto se hace por retrasar el lazo de la sincronización con nop o dummy instrucciones. ¿He visto la interfaz SPI para ello pero no se puede entender por qué?
El siguiente paso es el LED con tres bytes que describe el color de la fuente, el orden es verde, rojo y azul, cuanto mayor sea el número el más brillante de ese color. Para mayor comodidad se colocan los tres bytes en un entero de 32 bits y hay tantos enteros como hay LEDs para una franja de 40 LED habrá 40 números enteros de 32 bits. Una matriz de ByPic convenientemente se utiliza para almacenar estos y dos matriz bidimensional se utiliza porque hay 8 tiras, una dimensión por cada tira.
Porque el momento es crítico se maneja directamente en C, mediante una función de plug-in. ByPic puede llamar a una función y pasar información a él. La función encarga de la sincronización crítica enviando los datos que se pasan a ella. Afortunadamente los LEDs conservan su estado y así el plug-in sólo tiene que ejecutar cuando hay una actualización. Esto se llama render() que actualizará todas las 8 tiras.
Iluminar un LED individual es simplemente una cuestión de establecer el valor de la matriz RGB requiere y luego haciéndola llamando la función render(). El tamaño de la matriz es mayor que 8 x 40, como algunos de los primeros bytes de la matriz se utilizan para contar el plug-in que puerto y líneas a utilizar, así el real primer LED en tira 1 es disp(7,0).
Niveles más altos
El siguiente conjunto de funciones inicializar el array y cuidado de mostrar caracteres. Las formas del carácter se forman usando 5 bytes y se muestran como un celular de 5 x 7 en la pantalla. Ya tenía el archivo fuente y lo hizo uso de ella.
Una complicación leve es el desplazamiento, en lugar de mostrar el carácter todo a la vez es posible sólo visualiza una columna de él, esto es lo que permite desplazamiento.
En total, hay 7 programas enumerados en la parte posterior de este texto. Aparte de la RTC cada uno se basa en la función anterior. Esto podría se todos han colocado en un programa pero al hacerlo de esta manera hace desarrollo mucho más fácil.
Por ejemplo hay un programa de gráficos que dibuja líneas y cajas, etc.. Por contar con las funciones básicas, en Flash es fácil y rápido de desarrollar y tener derecho a estas funciones sin tener que cargar todas las funciones anteriores una y otra vez. De la misma manera el programa de 'efectos' fue desarrollado después del programa de gráficos utilizando algunas de las funciones en el programa de gráficos.
Trampas
Como anteriormente dije que esta exhibición es un concepto y por lo tanto si va a construir algo como esto entonces son las siguientes cosas para.
LED muerto: La pantalla que he construido tiene 3 LED muerto – no totalmente solo un color. No era algo que esperaba y así lo hizo no busque. Antes de usar una tira de hacer seguros de todos los colores.
Distancias de LED: Estaba bajo la impresión que cuando compró una cadena de 5m de LEDs era todo una tira, no así. Los LED se unen a intervalos soldando juntas las piezas de cobre del PCB. La articulación hace que el espacio de LED variar y así deben ser de soldado y soldada a la distancia correcta.
Construcción: Acrílico sobre un bastidor de aluminio funciona bien pero el ángulo de 20mm que usé no es realmente lo suficientemente profundo como para los componentes de la casa.
Fuente de alimentación: Si los reguladores pequeños de 5V están utilizado entonces por dos tiras se requieren, son lo suficientemente baratos para ello pero toma algo de espacio. Diez amperios es una fuente de alimentación lineal fuerte y así iría para una fuente conmutada. La alternativa mencionada en el texto es una batería de litio y un cargador tipo verruga. Esto todavía podría ser un problema aunque como supongo que sería la corriente media en la región de 2-4A
Mejoras
Lotes; pero probablemente es una buena idea incluir un módulo de tiempo de radio DCF y temperatura / sensor de humedad.