fbpixel
Etiquetas: ,
ws2812b-led-strip Usando una cinta LED WS2812B con Arduino

Las cintas de LED están compuestas por una sucesión de LEDs RGB direccionables, es decir, el brillo y el color de cada LED pueden definirse de forma independiente. Hay varios modelos de cinta: de un solo color, no direccionable, 5 o 12V, etc. Presta atención al modelo que quieres usar.

Hardware

  • Computadora
  • Arduino UNO
  • Cable USB A macho a B macho
  • Cinta de LED WS2812b

Esquema

arduino-ledstrips-ws2812b_bb Usando una cinta LED WS2812B con Arduino

La cinta de LED utiliza un pin PWM en el microcontrolador para determinar el color, la intensidad y el LED a encender. Asegúrese de usar una fuente de alimentación externa para alimentar los LED. Una cinta de LED puede tener mucha necesidad de energía, especialmente si es larga o si varias cintas se alimentan en serie. Para una cinta de LED WS2812B, se requiere 50mA por LED o 2.5A para 50 LEDs. Compruebe cuidadosamente el número y el tipo de LED que desea iluminar para elegir la mejor fuente de voltaje.

Código

Se pueden utilizar varias bibliotecas dependiendo de la marca de la cinta de LED como Adafruit_NeoPixel o PololuLedStrip. En este tutorial usamos la biblioteca FastLED.h. Para inicializar la biblioteca, hay que especificar el tipo y el número de LEDs utilizados y el orden de los colores (Rojo, Verde, Azul) que pueden ser diferentes según el modelo de cinta.
Una vez que el objeto ha sido inicializado, es posible acceder a cada LED a través de la mesa de leds. Es posible definir el color y la intensidad luminosa del LED i utilizando la función de LED [i].setRGB() y luego validarlo con la función FastLED.show().

//Libraries
#include <FastLED.h>//https://github.com/FastLED/FastLED

//Constants
#define NUM_STRIPS 1
#define NUM_LEDS 60
#define BRIGHTNESS 10
#define LED_TYPE WS2812B
#define COLOR_ORDER BRG//RGB
#define FASTLED_ALLOW_INTERRUPTS 0
#define FASTLED_INTERRUPT_RETRY_COUNT 1
#define FRAMES_PER_SECOND 60
#define COOLING 55
#define SPARKING 120

//Parameters
const int stripPin  = 3;

//Variables
bool gReverseDirection  = false;

//Objects
CRGB leds[NUM_LEDS];

void setup() {
  //Init Serial USB
  Serial.begin(9600);
  Serial.println(F("Initialize System"));
  //Init led strips
  FastLED.addLeds<LED_TYPE, stripPin, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness(  BRIGHTNESS );
}

void loop() {
  ledScenario();
}

void ledScenario(void ) { /* function ledScenario */
  ////LEDS Strip scenario
  for (int i = 0; i < NUM_LEDS; i++) {
    //leds[i] = CRGB::Goldenrod;
    leds[i].setRGB(255, 0, 255);
    leds[i + 3].setRGB(255, 0, 255);
    FastLED.show();
    delay(100);
    leds[i] = CRGB::Black;
    FastLED.show();
    delay(100);
  }
}

Aplicaciones

  • Crear una atmósfera brillante en tu apartamento
  • Crear una lámpara que cambie la luz de acuerdo con la música

Fuentes

Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código