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
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
- Cambiar el color de un LED RGB
- https://github.com/adafruit/Adafruit_NeoPixel
- https://github.com/pololu/pololu-led-strip-arduino
- https://github.com/FastLED/FastLED
Encuentre otros tutoriales y ejemplos en el generador de código automático
Arquitecto de Código