Tira de LED Neopixel (RGB direccionables) con Arduino

Para tener animaciones de colores para hermosas pantallas, Neopixel es bueno ya que puede dar cualquier combinación de colores. Parece un LED RGB, pero puede funcionar con un pin para controlar todo en serie. Es barato y fácil de instalar para la decoración de habitaciones.

En este tutorial, conectaremos los LED Neopixel con Arduino Uno. Este tutorial proporciona la codificación, el diagrama de cableado y la lista de componentes para Neopixel con Arduino. Para tener la decoración LED controlada, es mejor usar Neopixel para la iluminación, ya que tiene la capacidad de dar varios colores. El propósito de esta publicación es presentar los conceptos básicos de Neopixel, su funcionamiento e integrarlo con Arduino. WS2812B y WS2811B son los tipos de LED Neopixel.

Introducción

Los LED Neopixel son LED RGB direccionables a los que se accede uno por uno y de forma colectiva. Cada LED se puede encender y apagar con un color definido por el usuario. Cada LED es un RGB cuyos posibles estados son rojo, verde y azul. Al usar una combinación de la escala RGB, puede obtener cualquier color. Los neopíxeles pueden dar todos los colores del arcoíris además del blanco.

Hay diferentes formas que contienen un número diferente de LED.

Formas de LED

Fenómenos de trabajo

Los NeoPixels necesitan un microcontrolador compatible con Arduino y algo de programación para encenderse; no se encienden solos. Funcionan con una interfaz de control de un solo cable, los píxeles de color NeoPixel RGB y las tiras de Adafruit se basan en WS2812 y WS2811. El último desarrollo en la búsqueda de un LED a todo color escalable ya un precio razonable. Un paquete compacto de montaje en superficie con LED rojo, verde y azul integrado junto con un chip controlador se controla mediante un solo cable. Hay 3 pines de los LED NeoPixel que son señal, alimentación y GND. Cada LED está conectado al controlador para que la señal se encienda sola y la comparta con el siguiente LED. El controlador IC realiza el intercambio y la transferencia de datos.

Lo que necesitamos

Como de costumbre, sugiero agregar desde ahora a su carrito de compras de comercio electrónico favorito todo el hardware necesario, para que al final pueda evaluar los costos generales y decidir si continúa con el proyecto o los elimina del carrito de compras. Entonces, el hardware será solo:

Consulta precios de hardware en los siguientes enlaces:

Procedimiento paso a paso

Diagrama de cableado de NeoPixel con Arduino

En el circuito, NeoPixel LED trata con el PIN de alimentación de 3.3V de Arduino, pero también podemos conectarlo a 5V. De acuerdo con el siguiente diagrama, conectamos:

  • Neopixel PIN 1 con Arduino PIN 2
  • Neopixel PIN 2 con Arduino 3.3V (o 5V)
  • Neopixel PIN 3 con Arduino GND.

Siga el cableado de la siguiente imagen, de acuerdo con Arduino Uno Pinout:

Diagrama de cableado

Obtenga el código y la biblioteca de Neopixel

Conecte su PC a Arduino y abra Arduino IDE. Para los primeros pasos, puede consultar el tutorial Conexión de PC con Windows con Arduino. Puede obtener el código .ino y las bibliotecas desde mi área de descarga con el siguiente enlace:

También necesita instalar la siguiente biblioteca, de acuerdo con mi tutorial Instalar bibliotecas de Arduino: métodos para agregar bibliotecas con el IDE de Arduino. Obtenga el archivo .zip del siguiente enlace o agréguelo de las bibliotecas disponibles en su IDE de Arduino.

neopixelcode.ino Explicación

Sección 1

Comenzamos incluyendo la biblioteca Adafruit Neopixel, luego definimos tanto el número de PIN de la señal como el número de LED de acuerdo con su dispositivo NeoPixel.

Inicializamos un objeto «píxeles», pasando los siguientes argumentos:

  • el no. de LED
  • el número PIN de la señal
  • el tipo de LED (NEO_RGB para cable rojo-verde-azul, NEO_GRB para cable verde-rojo-azul). Para píxeles con transmisión bistream de 400 kilohercios, usaremos NEO_KHZ400. Del mismo modo, NEO_KHZ800 se ocupa de píxeles de transmisión doble de 800 kilohercios.

La constante «delayval» administrará el tiempo (en milisegundos) entre los cambios de LED. El “redColor”, “greenColor” y “blueColor” identificarán la composición RGB de nuestros colores.

En la configuración, los LED de NeoPixel finalmente se inicializan.

#include <Adafruit_NeoPixel.h> #define PIN 2   // input pin Neopixel is attached to #define NUMPIXELS      12 // number of neopixels in strip Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 100; // timing delay in milliseconds int redColor = 0; int greenColor = 0; int blueColor = 0; void setup() {   // Initialize the NeoPixel library.   pixels.begin(); }

Sección 2:

En la sección principal del bucle, llamamos a la función «setcolor()»: esta obtiene un valor aleatorio para cada rojo, verde y azul de 0 a 255.

En el bucle for, configuramos cada LED con el valor de color RGB, con incrementos de 1 para cada actualización de LED. La función Pixels.show() actualizará el color en el dispositivo, mostrando el color en el hardware. El retraso creará un intervalo para evitar que la actualización del color suceda demasiado rápido en comparación con la capacidad del ojo humano.

void loop() {   setColor();    for (int i=0; i < NUMPIXELS; i++) {     // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255     pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));      // This sends the updated pixel color to the hardware.     pixels.show();      // Delay for a period of time (in milliseconds).     delay(delayval);   } }  // setColor() // picks random values to set for RGB void setColor(){   redColor = random(0, 255);   greenColor = random(0,255);   blueColor = random(0, 255); }

Conexión serie NeoPixel

Puede conectar varias tiras de NeoPixel (al menos hasta que no alcance la corriente de salida máxima de Arduino) realizando una conexión en serie. En la siguiente imagen, usamos dos tiras de LED: una con 8 LED y una segunda con 4 LED. El total es 8+4 = 12 LED, lo que coincide con la constante NUMPIXELS de nuestro código.

Puede realizar esta conexión en serie utilizando los PIN de salida de datos de la primera cadena y conectándolos a la entrada de datos de la segunda tira.