Cómo controlar LED WS2812B direccionables individualmente con Arduino

¿Te gustaría aprender cómo controlar de forma individual los LED WS2812B con Arduino? En este artículo te enseñaremos paso a paso cómo lograrlo. Los LED WS2812B son perfectos para proyectos de iluminación personalizados, y con la ayuda de Arduino podrás crear efectos sorprendentes. ¡Sigue leyendo para descubrir cómo dominar el control de estos LED direccionables!

En este tutorial aprenderemos cómo controlar LED RGB direccionables individualmente o una tira de LED WS2812B usando Arduino. Para obtener más detalles, puede ver el siguiente vídeo o leer el tutorial escrito a continuación.

descripción general

Primero explicaremos el principio de funcionamiento con algunos ejemplos básicos y luego echaremos un vistazo a un proyecto Arduino realmente interesante que utiliza estos LED: una mesa de centro interactiva LED de bricolaje. La mesa de centro cuenta con LED WS2812B, sensores de proximidad infrarrojos para detectar objetos y un módulo Bluetooth HC-05 para controlar los colores a través de una aplicación de Android especialmente desarrollada. Este proyecto es en realidad una colaboración entre yo y Marija del canal de YouTube Creativity Hero.

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Así funcionan los LED WS2812B

Primero, echemos un vistazo más de cerca a la tira de LED. Consta de LED RGB tipo 5050 en los que está integrado el controlador LED muy compacto IC WS2812B.

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Dependiendo>

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Lo>

Cómo controlar LED WS2812B direccionables individualmente con Arduino

En>

Si usa más LED y el consumo de corriente excede los límites anteriores, necesitará usar una fuente de alimentación de 5 V separada. En tal caso, también necesitarás conectar los dos cables de tierra entre sí. Además, se recomienda utilizar una resistencia de unos 330 ohmios entre el Arduino y el pin de datos de la tira de LED para reducir el ruido en esta línea, y un condensador de unos 100 uF entre 5V y tierra para suavizar el suministro de energía.

Ejemplos de LED Arduino y WS2812B

Ejemplo 1

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Ahora,>Biblioteca FastLED. Esta es una biblioteca excelente y bien documentada que permite un fácil control de los LED WS2812B.

Puede obtener los componentes necesarios para este ejemplo a través de los siguientes enlaces:

  • Tira de LED WS2812B…………………….. Amazon / Banggood / AliExpress
  • Placa Arduino……………………………… Amazon / Banggood / AliExpress
  • Fuente de alimentación de 5V 6A CC……………… Amazon / Banggood / AliExpress

Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.

Aquí está el código fuente de Arduino como primer ejemplo:

#include <FastLED.h>

#define LED_PIN     7
#define NUM_LEDS    20

CRGB leds[NUM_LEDS];

void setup() {

  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
  
}

void loop() {
  
  leds[0] = CRGB(255, 0, 0);
  FastLED.show();
  delay(500);  
  leds[1] = CRGB(0, 255, 0);
  FastLED.show();
  delay(500);
  leds[2] = CRGB(0, 0, 255);
  FastLED.show();
  delay(500);
  leds[5] = CRGB(150, 0, 255);
  FastLED.show();
  delay(500);
  leds[9] = CRGB(255, 200, 20);
  FastLED.show();
  delay(500);
  leds[14] = CRGB(85, 60, 180);
  FastLED.show();
  delay(500);
  leds[19] = CRGB(50, 255, 20);
  FastLED.show();
  delay(500);
}Code language: Arduino (arduino)

Descripción: Entonces, primero debemos incluir la biblioteca FastLED, definir el pin al que están conectados los datos de la tira de LED, definir la cantidad de LED y también definir una matriz de tipo CRGB. Este tipo contiene LED con tres elementos de datos de un byte para cada uno de los tres canales de color rojo, verde y azul.

En la sección de configuración, todo lo que necesitamos hacer es inicializar el FastLED con los parámetros definidos anteriormente. Ahora es el bucle principal el que nos permite controlar nuestros LED como queramos. Con la función CRGB podemos configurar cada LED a cualquier color usando los tres parámetros rojo, verde y azul. Para realizar el cambio en los LED, debemos llamar a la función FastLED.show().

Ejemplo 2

Con algunos bucles “for” podemos crear fácilmente algunas animaciones.

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Aquí>

#include <FastLED.h>

#define LED_PIN     7
#define NUM_LEDS    20

CRGB leds[NUM_LEDS];

void setup() {

  FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);

}

void loop() {

  for (int i = 0; i <= 19; i++) {
    leds[i] = CRGB ( 0, 0, 255);
    FastLED.show();
    delay(40);
  }
  for (int i = 19; i >= 0; i--) {
    leds[i] = CRGB ( 255, 0, 0);
    FastLED.show();
    delay(40);
  }
}Code language: Arduino (arduino)

Aquí, el primer bucle «for» hace que los 20 LED se iluminen en azul, desde el primero hasta el último LED, con un retraso de 40 milisegundos. Durante el siguiente ciclo «for», los 20 LED se encienden nuevamente, pero esta vez en rojo y en orden inverso, desde el último al primer LED.

La biblioteca FastLED tiene muchas más funciones que te permiten crear animaciones y espectáculos de luces realmente interesantes. Así que sólo depende de tu imaginación hacer brillar tu próximo proyecto LED.

Mesa de centro LED interactiva con LED WS2812B

Ahora echemos un vistazo al proyecto de mesa de centro LED interactiva de bricolaje que mencioné al principio. Así que este fue un proyecto colaborativo entre Marija y yo de Creativity Hero.

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Puedes>

Aquí está el esquema completo de este proyecto.

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Entonces,>

Puede obtener los componentes necesarios para este ejemplo a través de los siguientes enlaces:

  • Tira de LED WS2812B…………………….. Amazon / Banggood / AliExpress
  • Sensor de proximidad por infrarrojos…………………… Amazon / Banggood / AliExpress
  • Módulo Bluetooth HC-05…….…… Amazon / Banggood / AliExpress
  • Placa Arduino……………………………… Amazon / Banggood / AliExpress
  • Fuente de alimentación de 5V 6A CC……………… Amazon / Banggood / AliExpress

Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.

Relacionado: Cómo utilizar un LED RGB con Arduino | Tutorial

Códigos fuente

Aquí está el código Arduino para este proyecto. Si excluimos la función de control de color de Bluetooth, podemos encontrar que el código es realmente muy simple.

#include "FastLED.h"

#define NUM_LEDS 45
#define LED_PIN 2
#define COLOR_ORDER GRB

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<WS2812, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness(brightness);
  // Set the 45 proximity sensors pins as inputs, from digital pin 3 to pin 48
  for (int pinNo = 0 + 3; pinNo <= 45 + 3; pinNo++) {
    pinMode(pinNo, INPUT);
  }
}

void loop() {
  for (int pinNo = 0; pinNo <= NUM_LEDS-1; pinNo++) {
    leds[pinNo] = CRGB( 0, 255, 0);    // Set all 45 LEDs to green color 
    // If an object is detected on top of the particular sensor, turn on the particular led
    if ( digitalRead(pinNo + 3) == LOW ) {
      leds[pinNo] = CRGB( 0, 0, 255); // Set the reactive LED to bluee
    }
  }
  FastLED.show(); // Update the LEDs
  delay(20);
}Code language: Arduino (arduino)

Descripción: Primero necesitamos definir los parámetros básicos como se explicó anteriormente y configurar los 45 pines del sensor de proximidad como entradas.

En el bucle principal, utilizamos un único bucle «for» para configurar todos los LED en un color específico y también comprobar si el sensor de proximidad ha detectado un objeto. Si esto es cierto, o en este caso hay un estado lógico BAJO, el color reactivo respectivo se establece en el LED respectivo. Al final, actualizamos los colores de los LED usando la función FastLED.show().

Para incluir la función de control de color de Bluetooth, necesitamos agregar algunas líneas más de código y crear la aplicación de Android. Ya tengo tutoriales separados sobre el uso del módulo Bluetooth HC-05 con Arduino y la creación de su propia aplicación de Android usando la aplicación en línea MIT App Inventor, por lo que siempre puede consultarlos para obtener más detalles.

Así funciona la aplicación de Android. Consta de una imagen de paleta de colores entre la que podemos seleccionar colores, dos casillas de verificación que nos permiten elegir si el color seleccionado se debe aplicar a los LED reactivos o de fondo, y un control deslizante para ajustar el brillo.

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Si>

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Dependiendo>

Puede descargar la aplicación de Android a continuación, así como la Inventor de la aplicación del MIT Archivo de proyecto:

Aquí está el código Arduino:

#include <SoftwareSerial.h>

#include "FastLED.h"

#define NUM_LEDS 45
#define LED_PIN 2
#define COLOR_ORDER GRB

CRGB leds[NUM_LEDS];

SoftwareSerial Bluetooth(53, 52); // Arduino(RX, TX) - Bluetooth (TX, RX)

// Initial background color 
int backR = 100;
int backG = 50;
int backB = 10;

// Initial reactive color 
int reactiveR = 10;
int reactiveG = 50;
int reactiveB = 100;

int brightness = 50; // Initial brightness

String dataIn = "";

void setup() {
  FastLED.addLeds<WS2812, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness(brightness);
  Serial.begin(38400);
  Bluetooth.begin(38400); // Default baud rate of the Bluetooth module

  for (int pinNo = 0 + 3; pinNo <= 45 + 3; pinNo++) {
    pinMode(pinNo, INPUT);
  }
}

void loop() {
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.readString();
    delay(20);
    if (dataIn.startsWith("1")) {
      delay(10);
      String stringR = dataIn.substring(dataIn.indexOf("R") + 1, dataIn.indexOf("G"));
      reactiveR = stringR.toInt();
      String stringG = dataIn.substring(dataIn.indexOf("G") + 1, dataIn.indexOf("B"));
      reactiveG = stringG.toInt();
      String stringB = dataIn.substring(dataIn.indexOf("B") + 1, dataIn.indexOf("E"));
      reactiveB = stringB.toInt();
    }
    else if (dataIn.startsWith("2")) {
      String stringR = dataIn.substring(dataIn.indexOf("R") + 1, dataIn.indexOf("G"));
      backR = stringR.toInt();
      String stringG = dataIn.substring(dataIn.indexOf("G") + 1, dataIn.indexOf("B"));
      backG = stringG.toInt();
      String stringB = dataIn.substring(dataIn.indexOf("B") + 1, dataIn.indexOf("E"));
      backB = stringB.toInt();
    }
    else if (dataIn.startsWith("3")) {
      String stringBrightness = dataIn.substring(dataIn.indexOf("3") + 1, dataIn.length());
      brightness = stringBrightness.toInt();
      FastLED.setBrightness(brightness);
    }
  }

  for (int pinNo = 0; pinNo <= NUM_LEDS-1; pinNo++) {
    leds[pinNo] = CRGB( backR, backG, backB);
    if ( digitalRead(pinNo + 3) == LOW ) {
      leds[pinNo] = CRGB( reactiveR, reactiveG, reactiveB);
    }
  }
  FastLED.show();
  delay(20);
}Code language: Arduino (arduino)

Descripción: Primero necesitamos definir la comunicación serial entre el Arduino y el módulo Bluetooth HC-05 o los pines a los que está conectado el módulo. En la sección de configuración necesitamos configurar la velocidad en baudios a la que funciona este módulo. Luego usamos la función Bluetooth.available() en el bucle principal para verificar si se reciben datos desde el teléfono inteligente. Si esto es cierto, obtendremos los datos como una cadena usando la función Bluetooth.readString(). Luego usamos la función .startsWith() para verificar el primer carácter o marcador y saber si queremos cambiar el color reactivo, el fondo o el brillo.

Usando la función .substring(), extraemos los valores rojo, verde y azul del texto recibido y los convertimos a números enteros. Estos valores luego se usan en el bucle «for» a continuación, que establece el color e ilumina los LED, como se explicó anteriormente. De la misma forma ajustamos el brillo de los LED.

Eso es todo por este tutorial. No dude en hacer sus preguntas en la sección de comentarios a continuación.

Categorías tutoriales de arduino
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Cómo controlar LED WS2812B direccionables individualmente con Arduino

Introducción

En este tutorial aprenderemos cómo controlar LED RGB direccionables individualmente o una tira de LED WS2812B utilizando Arduino. En este proyecto, exploraremos ejemplos básicos y luego nos sumergiremos en un increíble proyecto de Arduino utilizando estos LEDs: una mesa de café interactiva DIY. La mesa cuenta con LEDs WS2812B, sensores de proximidad por infrarrojos para detectar objetos y un módulo Bluetooth HC-05 para controlar los colores a través de una aplicación Android personalizada.

¿Cómo funcionan los LED WS2812B?

Estos LEDs funcionan a través de una tira de LEDs tipo 5050 RGB en la cual se integra el compacto IC controlador WS2812B. Podemos simular cualquier color ajustando la intensidad de los tres LEDs individuales: rojo, verde y azul. Lo genial de estos LEDs es que podemos controlar toda la tira con un solo pin de nuestra placa Arduino.

Ejemplos de Arduino y WS2812B LEDs

Para nuestros ejemplos, utilizaremos una tira de 20 LEDs conectada a Arduino a través de una resistencia de 330 ohmios y alimentada con una fuente de alimentación de 5V separada. Utilizaremos la biblioteca FastLED para programar Arduino y controlar los LEDs. Podemos crear animaciones y mostrar colores de forma dinámica con tan solo unas líneas de código.

Mesa de Café LED Interactiva

El proyecto de mesa de café LED interactivo es una colaboración entre nosotros y Creativity Hero. La mesa cuenta con 45 LEDs direccionables, 45 sensores de proximidad por infrarrojos y un módulo Bluetooth HC-05, todos conectados a una placa Arduino Mega. La mesa es alimentada por una fuente de alimentación de 5V y 6A.

Para este proyecto, además de los materiales mencionados, necesitaremos programar Arduino para manejar los sensores de proximidad y los LEDs. También crearemos una aplicación Android utilizando el MIT App Inventor para controlar los colores de los LEDs a través de Bluetooth.

Conclusión

El uso de LED WS2812B direccionables individualmente con Arduino ofrece un sinfín de posibilidades para proyectos creativos, desde animaciones simples hasta proyectos interactivos como la mesa de café LED. La combinación de electrónica y programación nos permite crear experiencias visuales únicas y personalizadas.

En resumen, en este tutorial aprendimos cómo controlar LEDs direccionables individualmente con Arduino, exploramos ejemplos de programación y vimos un emocionante proyecto de mesa de café LED interactivo. ¡Esperamos que te haya inspirado a comenzar tu propio proyecto con LEDs WS2812B y Arduino!

Para más información detallada y código fuente, puedes consultar el artículo original en el siguiente enlace y descargar los archivos necesarios:

– [Artículo original](enlace)
– [Descargar archivos aquí](enlace)

Para más tutoriales de Arduino, visita nuestras categorías de Arduino Tutorials. ¡No dudes en dejar tus preguntas en la sección de comentarios!

1 comentario en «Cómo controlar LED WS2812B direccionables individualmente con Arduino»

Deja un comentario