Convert Figma logo to code with AI

wled logoWLED

Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!

18,425
4,267
18,425
496

Top Related Projects

18,425

Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!

11,422

ESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.

7,460

The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r We'd like to use github "issues" just for tracking library bugs / enhancements.

Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.)

:musical_note: :rainbow: Real-time LED strip music visualization using Python and the ESP8266 or Raspberry Pi

Quick Overview

WLED is an open-source firmware for ESP8266 and ESP32 microcontrollers that enables control of WS2812B and many other types of digital RGB(W) LEDs. It provides a web interface, mobile app, and API for easy configuration and control of LED effects, with support for music reactivity, alexa integration, and more.

Pros

  • Easy to install and use, with a user-friendly web interface and mobile app
  • Supports a wide range of LED types and configurations
  • Highly customizable with numerous built-in effects and the ability to create custom ones
  • Active community and frequent updates

Cons

  • Limited to ESP8266 and ESP32 microcontrollers
  • May require some technical knowledge for advanced features
  • Can be overwhelming for beginners due to the vast number of options
  • Performance may vary depending on the number of LEDs and chosen effects

Getting Started

  1. Download the latest release from the WLED GitHub releases page.
  2. Flash the firmware to your ESP8266 or ESP32 board using a tool like ESPHome Flasher or NodeMCU Pyflasher.
  3. Connect your LED strip to the appropriate pins on your microcontroller.
  4. Power on your device and connect to the "WLED-AP" Wi-Fi network.
  5. Open a web browser and navigate to http://4.3.2.1 to access the WLED interface.
  6. Configure your Wi-Fi settings and LED strip parameters in the settings menu.
  7. Start controlling your LEDs and enjoying the various effects!

For more detailed instructions and advanced features, refer to the WLED wiki.

Competitor Comparisons

18,425

Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!

Pros of WLED

  • More active development and frequent updates
  • Larger community and contributor base
  • Wider range of supported features and integrations

Cons of WLED

  • Potentially more complex for beginners due to extensive feature set
  • May require more system resources due to additional functionalities

Code Comparison

WLED:

void handleNotFound() {
  if (captivePortal()) {
    return;
  }
  handleSet(request->url());
}

WLED>:

void handleNotFound() {
  if (captivePortal()) {
    return;
  }
  server.send(404, "text/plain", "Not found");
}

The code comparison shows that WLED has a more advanced handling of "not found" requests, potentially offering better user experience and functionality.

Summary

WLED is the main repository for the project, while WLED> appears to be a fork or alternative version. WLED benefits from more active development, a larger community, and a wider range of features. However, this may come at the cost of increased complexity and resource usage. The code comparison suggests that WLED has more sophisticated request handling. For most users, WLED would likely be the preferred choice due to its ongoing development and broader support.

11,422

ESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.

Pros of ESPHome

  • More versatile, supporting a wide range of sensors and devices beyond LED control
  • Tighter integration with Home Assistant for easier automation and control
  • Allows for custom firmware creation using YAML configuration

Cons of ESPHome

  • Steeper learning curve, especially for those new to YAML and Home Assistant
  • Less specialized for LED control, potentially lacking some advanced LED-specific features
  • May require more setup time compared to WLED's plug-and-play approach

Code Comparison

WLED (Arduino-based):

void loop() {
  WLED::instance().loop();
}

ESPHome (YAML configuration):

light:
  - platform: fastled_clockless
    chipset: WS2812B
    pin: GPIO2
    num_leds: 60
    rgb_order: GRB
    name: "LED Strip"

ESPHome focuses on configuration-based setup, while WLED uses more traditional Arduino-style programming. ESPHome's approach allows for easier customization without deep coding knowledge, but may be less flexible for advanced users who prefer direct code manipulation.

Both projects are excellent choices for IoT and smart home enthusiasts, with WLED excelling in LED-specific applications and ESPHome offering broader device support and Home Assistant integration.

7,460

The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r We'd like to use github "issues" just for tracking library bugs / enhancements.

Pros of FastLED

  • More flexible and customizable for advanced LED programming
  • Supports a wider range of LED chipsets and microcontrollers
  • Better performance for complex animations and effects

Cons of FastLED

  • Requires more programming knowledge and effort to implement
  • Lacks built-in web interface or mobile app for easy control
  • No out-of-the-box support for common features like music reactivity

Code Comparison

FastLED example:

#include <FastLED.h>
#define NUM_LEDS 60
CRGB leds[NUM_LEDS];
void setup() { FastLED.addLeds<WS2812B, 6, GRB>(leds, NUM_LEDS); }
void loop() { fill_rainbow(leds, NUM_LEDS, 0, 7); FastLED.show(); }

WLED example:

#include "wled.h"
void setup() {
  WLED::instance().init();
}
void loop() {
  WLED::instance().loop();
}

WLED provides a more user-friendly approach with built-in functionality, while FastLED offers greater flexibility for custom implementations. WLED is ideal for users seeking quick setup and easy control, whereas FastLED is better suited for developers requiring fine-grained control over LED behavior and advanced effects.

Arduino library for controlling single-wire LED pixels (NeoPixel, WS2812, etc.)

Pros of Adafruit_NeoPixel

  • Simpler and more lightweight library, ideal for basic LED control
  • Easier to integrate into existing Arduino projects
  • More suitable for resource-constrained microcontrollers

Cons of Adafruit_NeoPixel

  • Limited built-in effects and animations compared to WLED
  • Lacks advanced features like web interface and network control
  • Requires more manual coding for complex lighting patterns

Code Comparison

Adafruit_NeoPixel:

#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel strip(60, PIN, NEO_GRB + NEO_KHZ800);
strip.begin();
strip.setPixelColor(i, red, green, blue);
strip.show();

WLED:

#include "wled.h"
void setup() {
  WLED::instance().initServer();
}
void loop() {
  WLED::instance().handleConnection();
}

The Adafruit_NeoPixel library provides a straightforward approach to controlling NeoPixels, with direct pixel manipulation. WLED, on the other hand, offers a more comprehensive solution with built-in networking and a web interface, requiring less manual coding for advanced features. WLED is better suited for complex, networked LED installations, while Adafruit_NeoPixel is ideal for simpler projects or when fine-grained control over individual pixels is needed.

:musical_note: :rainbow: Real-time LED strip music visualization using Python and the ESP8266 or Raspberry Pi

Pros of audio-reactive-led-strip

  • Specialized for audio reactivity, providing more advanced sound-responsive effects
  • Python-based, offering flexibility for customization and integration with other Python libraries
  • Includes real-time FFT analysis for precise audio visualization

Cons of audio-reactive-led-strip

  • Limited to audio-reactive features, lacking general-purpose LED control capabilities
  • Requires more setup and configuration compared to WLED's user-friendly interface
  • Less active development and community support

Code Comparison

WLED (C++):

void colorWipe(CRGB color, int speed) {
  for (int i = 0; i < NUM_LEDS; i++) {
    leds[i] = color;
    FastLED.show();
    delay(speed);
  }
}

audio-reactive-led-strip (Python):

def visualize_spectrum(y):
    y = np.copy(y)
    y = interpolate(y, config.N_PIXELS)
    spectrum = np.array([qi.color(r, g, b) for r, g, b in y])
    np.concatenate((spectrum, spectrum[::-1]))
    return spectrum

The code snippets demonstrate the different approaches: WLED focuses on general LED control, while audio-reactive-led-strip emphasizes audio processing and visualization. WLED's C++ implementation is more efficient for real-time LED control, whereas audio-reactive-led-strip's Python code allows for easier integration of complex audio analysis algorithms.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Welcome to WLED! ✨

A fast and feature-rich firmware for ESP32 microcontrollers to control addressable LEDs — from simple strips to large 2D matrices and HUB75 panels.

Originally created by Aircoookie, now maintained by a community of contributors.

⚙️ Features

Effects & Visuals

Segments & Control

  • Segments — apply different effects, colors and palettes to independent parts of your LED setup simultaneously
  • Up to 250 presets to save and recall colors, effects and segment configurations — supports playlists for automated cycling
  • Nightlight function with configurable dimming curve
  • Configurable Auto Brightness Limiter (per output) for safe operation

Hardware Support

  • ESP32 (all variants: original, S2, S3, C3)
  • Up to 17 LED outputs on ESP32 using parallel I2S + RMT
  • Addressable LED support: WS2812B, WS2811, WS2815, SK6812, WS2805, TM1914, APA102, WS2801, LPD8806, and many more
  • RGBW, RGB+CCT and white-only strips
  • PWM outputs for analog LEDs and dimmers
  • Ethernet support for a wide range of boards (QuinLED, LILYGO, Olimex, and more)
  • Filesystem-based config for easy backup and restore of presets and settings
  • Full OTA firmware updates (HTTP + ArduinoOTA), password-protectable

Connectivity & Integrations

Developer-Friendly

  • Usermod system — extend WLED with community or custom modules without modifying core code
  • Large and active usermod library including AudioReactive, temperature sensors, rotary encoders, displays, and much more
  • Well-documented JSON API
  • Licensed under the EUPL v1.2

📲 Quick start guide and documentation

See the documentation at kno.wled.ge!

Tutorials and getting-started guides to help you get your project running quickly.

🖼️ User interface

💾 Compatible hardware

See the compatible hardware list on the wiki.

✌️ Other

Licensed under the EUPL v1.2.
Credits to all contributors!
CORS proxy by Corsfix.

Join the Discord server to discuss everything about WLED!

Check out the WLED Discourse forum!

If you'd like to reach the original creator privately: dev.aircoookie@gmail.com.

If WLED brightens up your day, you can send a gift to Aircoookie via PayPal.


Disclaimer:

If you are prone to photosensitive epilepsy, we recommend you do not use this software.
If you still want to try, avoid strobe, lightning or noise modes and high effect speed settings.

As per the EUPL license, no liability is assumed for any damage to you or any other person or equipment.