Poco golpes paso a paso: Arduino control de LEDs RGB de WS2812B, WS2811 y WS2812 (4 / 5 paso)

Paso 4: De números binarios a lógica Digital

Muy bien, así que ahora que estamos familiarizados con la representación binaria de números decimales podemos comunicar los valores de intensidad que queremos a la WS2811 LED driver IC.  Puesto que los valores van de 0 a 255 para cada LED, tenemos 8 posiciones (llamados bits en lógica digital) que cubren toda la gama, es de 255 11111111 en binario.  Y necesitaremos 24 bits para transmitir los valores de los 3 LEDs dentro de cada WS2812.  Pero cómo podemos saber el WS2811 que queremos un 0 o un 1.  Bueno, resulta que tenemos que manipular la sincronización de la señal de onda cuadrada para hacer esto.

Descargo de responsabilidad: allí es una pequeña variación de la sincronización que se describe a continuación dependiendo de si está usando un IC de WS2811 real, o la versión incrustada dentro de la WS2812/WS2812B.  Los números utilizados a continuación corresponden a este último caso (WS2812/WS2812B).  Si usted está usando el IC WS2811 consulte la hoja de datos para los números ligeramente diferentes (aparte de eso, todo lo descrito a continuación es lo mismo).

Principio de funcionamiento
El WS2811 espera dos cosas:
1) un pulso (es decir, rectangular) señal de la onda con una frecuencia de alrededor de 800 KHz — otras frecuencias funcionan tan bien, pero nos ceñiremos a 800 KHz en este tutorial, que establece los valores de intensidad en un registro de desplazamiento interno.  Sin embargo, Notemos que el WS2811 se comporta diferentemente que un estándar de cambio de registro en que los datos se desplazan de manera First pasado-hacia fuera.
2) después de que los datos se cambian de puesto en su lugar, el WS2811 espera una baja de la señal dura menos 50μs para enganchar los datos a sus respectivas salidas.

Cambio de los datos
Quien no esté familiarizado con el término 'pulso' podrían haber escuchado de su caso especial: la onda cuadrada.  Este tipo de señales no sinusoidales consisten en una amplitud alterna entre un máximo fijo y mínimo fijo a una frecuencia constante.  Cuando la alternancia se produce simétricamente, es decir, cuando el tiempo durante el cual la señal tiene un valor máximo es igual al tiempo durante el cual la señal tiene un valor mínimo, tenemos el caso especial de una onda cuadrada.  A alrededor de 800KHz, cada período de la onda del pulso es alrededor de 1.25μs largo (1 / 1.25μs = 800 KHz).  Para comunicarse con el WS2811 tenemos que ajustar el tiempo durante el cual la señal es baja o alta para señalar un 0 o un 1.  Hay un error en la hoja de datos de WorldSemi, así los valores reales deben ser (crédito a la gente sobre de Adafruit para la captura de esto):

Transmitir un 1:
Tiempo para que la señal permanece alta (T1H): 0.8μs
Tiempo para la señal de permanecer bajo (T1L): 0.45μs

Transmitir un 0:
Tiempo para que la señal permanece alta (T0H): 0.4μs
Tiempo para la señal de permanecer bajo (T0L): 0.85μs

Los datos de enganche
Después de enviar todos los bits correspondientes a los valores de intensidad de todos los LEDs que queremos controlar, entonces simplemente necesitamos mantener el valor de la onda del pulso en su valor mínimo para por lo menos 50μs.

Transmisión de un 'comando de cierre':
Tiempo para la señal de permanecer bajo (TL): > = 50μs

Este tipo de señal tiene las propiedades especiales de la uno mismo-ser registrado y cero volver (NZR).  Por lo tanto, lo que queda es ver cómo podemos configurar nuestro ATMega328p para producir una señal temporizada precisamente para que podamos transmitir a la matriz de LEDs de RGB WS2812.  [Alerta de spoiler!]  Utilizaremos la técnica de bitbanging.

Artículos Relacionados

Arduino controla la tira RGB LED para el salón

Arduino controla la tira RGB LED para el salón

La idea detrás de este pequeño proyecto fue que alguna luz indirecta bastante humor en la sala de estar. Es controlado por el servidor de openHAB (que el proyecto todavía está en la lista que se añade a este sitio) instalado en un Raspberry Pi. Por s
Ambilight sin Arduino no direccionable LEDs RGB

Ambilight sin Arduino no direccionable LEDs RGB

Si no sabes qué Ambilight es que debe controlar vídeos de youtube en Philips AmbilightHoy en día hay muchas manera para hacer una réplica o incluso un mejor aspecto reflexiones...es la forma más fácil de hacer tal cosa con un barato RGB led que no es
Control de LEDs RGB con nuestras

Control de LEDs RGB con nuestras

hace unos días he publicado un instructivo para las nuestras, que es sólo un nombre de fantasia para un Imp leer un potenciometro y un interruptor y empujando los datos en el planificador eléctrico Imp. Si usted no ha visto todavía, puede comprobarlo
Arduino - control de leds con Joystick PS2 - KY-023

Arduino - control de leds con Joystick PS2 - KY-023

¡Hola mundo! Hoy hice un ejemplo sencillo de cómo usar el KY-023.Vamos a controlar un módulo RGB y una de 7 colores Led módulo.Puede añadir cualquier otra cosa como Servos, relés, o lo que viene en tu mente.Los Joysticks son muy fácil de usar, y el c
Control de un LED RGB con el módulo de Bluetooth HC-06 con Android OS(Arduino)

Control de un LED RGB con el módulo de Bluetooth HC-06 con Android OS(Arduino)

Este tutorial explicará el proceso de conectarse un Arduino con un módulo de Bluetooth HC-06 y controlar el color de un LED RGB mediante la aplicación de ArduDroid en el sistema operativo Android. Esta configuración es muy probable que también trabaj
Control LED RGB con arduino y procesamiento.

Control LED RGB con arduino y procesamiento.

Hoy te diré cómo controlar un LED RGB con ayuda del lenguaje Arduino y procesamiento. Este es mi primer instructable, déjeme por favor saber si pudiera mejorar algo y si tienes cualquier tipo de preguntas les dejan en la caja de comentario, me encant
Control LED RGB utilizando Amarino Nano 1.0

Control LED RGB utilizando Amarino Nano 1.0

Qué es Amarino Nano 1.0Este es mi nuevo kit de bricolaje para Android-Arduino comunicación vía Bluetooth.Amarino Nano particularmente usa Arduino Nano, así que usé el título como 'Nano'. Es un juego muy simple para probar la mayoría de las funciones
Control de LED por teléfono y MangoCube WiFi en modo AP

Control de LED por teléfono y MangoCube WiFi en modo AP

Este Instructable muestra cómo controlar un LED (pin 13) de MangoCube WiFi con un Smart Phone (Android/iOS).Cosas necesarias para este Instructable;1. MangoCube WiFi o (placa WiFi + tablero de Arduino UNO/Leonardo)2. smart Phone (Android/iOS)3. TCP l
Arduino controla cabeza madera animatronic (lámpara)

Arduino controla cabeza madera animatronic (lámpara)

esta es una lámpara de lectura que puede ser ajustada para la dirección de la iluminación y atenuada como sea necesario.Este Instructable combina Arduino, programación, algunos electrónica simple, talla con herramientas manuales y eléctricas, control
Arduino controla colmena fumigador / ambientador de aire

Arduino controla colmena fumigador / ambientador de aire

Dentro del caos relativo de mi arreglos domésticos, tengo un pequeño oasis de orden perfecto. Una cosa que puedo llamar 'organizado' y totalmente funcional. Una cosa que puedo tocar y saber que es confiable y listo para la acción en un aviso de momen
Arduino controla el temporizador de cocina

Arduino controla el temporizador de cocina

Todos ustedes deben han experimentado esto que tienes algo cocinan sobre su cocina por el otro lado conseguir ocupado viendo la televisión o conseguir una conversación profunda que te das cuenta en la detección de un olor que completamente fue estrop
Arduino controla LEDs tira de vacaciones

Arduino controla LEDs tira de vacaciones

con los precios cayendo en tiras de LEDs, configuración de iluminación permanente de vacaciones es cada vez más factible todos los días.  Un Arduino hace un controlador de gran iluminación bricolaje.Para este proyecto utilicé unas tiras de LED RGB an
Arduino controla el árbol de Navidad de LED RGB posicional

Arduino controla el árbol de Navidad de LED RGB posicional

En este Instructable nos va creando un árbol de Navidad de LED RGB programables y construyendo (X, Y) posición de las luces en el Arduino que podemos crear diferentes patrones tanto animada como estática. Yo recomendaría esto a cualquier persona que
Control de luces RGB desde Android con Arduino y Bluetooth LE (BLE)

Control de luces RGB desde Android con Arduino y Bluetooth LE (BLE)

he visto muchos proyectos de Kickstarter con el nuevo estándar de Bluetooth 4.0 baja energía y un número de Bluetooth LE (BLE) activado Arduino clones provenientes en el mercado, pero muchos de estos proyectos parecen estar en alguna parte en el proc