Arduino - tira de LEDs WS2812B

En este tutorial, vamos a aprender cómo usar Arduino para controlar una tira de LEDs RGB WS2812B. Con un único pin de Arduino:

Acerca de la tira de LEDs RGB WS2812B

Asignación de pines

La tira de LED RGB WS2812B tiene tres pines:

  • Pin GND: debe conectarse a GND (0 V)
  • Pin VCC: debe conectarse a 5 V de una fuente de alimentación externa
  • Pin Din: es el pin que recibe la señal de control. Debe estar conectado a un pin de Arduino.
Disposición de pines de WS2812B

※ Nota:

El orden de los pines puede variar entre fabricantes. UTILICE SIEMPRE las etiquetas impresas en la tira de LEDs.

Diagrama de Cableado

Diagrama de cableado de la tira de LEDs RGB WS2812B para Arduino

This image is created using Fritzing. Click to enlarge image

Cómo programar para la tira de LED RGB WS2812B

Hay dos bibliotecas que se pueden usar para controlar la tira de LEDs WS2812B:

  • Biblioteca Adafruit NeoPixel.
  • Biblioteca FastLED.

Este tutorial utilizará la biblioteca Adafruit NeoPixel.

  • Declara un objeto WS2812B
#define PIN_WS2812B 4 // Arduino pin that connects to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Inicializa el WS2812B
WS2812B.begin(); // INITIALIZE WS2812B strip object (REQUIRED)
  • Establecer el color de cada LED individual (llamado píxel).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Establecer el brillo de todas las tiras.
WS2812B.setBrightness(100); // a value from 0 to 255

※ Nota:

  • WS2812B.setBrightness() se utiliza para todos los píxeles de la tira de LEDs.
  • Para establecer el brillo de cada píxel individual, podemos escalar el valor de color.
  • Los valores establecidos por WS2812B.setBrightness() y WS2812B.setPixelColor() solo tienen efecto cuando se llama a WS2812B.show().

Código de Arduino

El código de abajo hace:

  • Pinta los píxeles de verde uno por uno con un retraso entre cada píxel
  • Apaga todos los píxeles durante dos segundos
  • Enciende todos los píxeles en rojo al mismo tiempo durante dos segundos
  • Repite el proceso anterior indefinidamente
/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-ws2812b-led-strip */ #include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> // Required for 16 MHz Adafruit Trinket #endif #define PIN_WS2812B 4 // Arduino pin that connects to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B #define DELAY_INTERVAL 250 // 250ms pause between each pixel Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800); void setup() { WS2812B.begin(); // INITIALIZE WS2812B strip object (REQUIRED) } void loop() { WS2812B.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called // turn pixels to green one by one with delay between each pixel for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel WS2812B.setPixelColor(pixel, WS2812B.Color(0, 255, 0)); // it only takes effect if pixels.show() is called WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(DELAY_INTERVAL); // pause between each pixel } // turn off all pixels for two seconds WS2812B.clear(); WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // off time // turn on all pixels to red at the same time for two seconds for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0)); // it only takes effect if pixels.show() is called } WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // on time // turn off all pixels for one seconds WS2812B.clear(); WS2812B.show(); // send the updated pixel colors to the WS2812B hardware. delay(2000); // off time }

Pasos R\u00e1pidos

  • Dirígete al icono de Bibliotecas en la barra izquierda del IDE de Arduino.
  • Busca “NeoPixel NeoPixel”, luego encuentra la biblioteca WS2812B de Adafruit
  • Haz clic en el botón Instalar para instalar la biblioteca NeoPixel.
Librería NeoPixel para Arduino
  • Copia el código anterior y ábrelo con el IDE de Arduino
  • Haz clic en el botón Subir en el IDE de Arduino para subir el código al Arduino
  • Observa el efecto LED

※ Nota:

Para cualquier efecto LED complicado, ofrecemos el servicio de programación pagado

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!