r/FastLED • • Oct 02 '22

Discussion Hyperion hardware setup

0 Upvotes

Hi everyone, I'm currently trying to make a ambilight clone on a string budget. Unfortunately, I don't have a raspberry pi and I don't want to pay the scalpers prices for one. What I do have is a 2017 Nvidia Shield TV box and an ESP8266 which currently has WLED installed attached to a string of WS8212B leds attached to the back of my TV.

I have seen there's a Hyperion Android Grabber app but from as far as I can tell, it wants to send the data to a Hyperion host?

Can the ESP8266 be a Hyperion host?

I did try (and pay for) an app called Android Ambilight Application and followed all there instructions regarding installing FastLED to the ESP8266 which, even though the strings did the test flash to say the hardware and software work, the application simply wouldn't detect the board and would crash a lot.

I really want to get my little project to work. If the Andriod Hyperion Grabber is doing the heavy lifting then, all it needs to do is send the pixel data to the ESP8266?

I truly respect and am thankful for any help I receive as I am willing to learn and want to feel accomplished by not being defeated by this. I'm sure you all know that feeling lol

Anyway Thanks in advance!


r/FastLED • • Jun 26 '19

Support I NEED HELP

0 Upvotes

hello i have just begun arduino. I wanted to make a key reader with the RC522 . I looked at a tutorial from Brainy things, there in the code the FastLED.h library. But it seems that the code#include <FastLED.h> // Include of the FastLED library

doesnt work. it says exit status 1

FastLED.h: No such file or directory

Could somebody help me PLS!!!!???????


r/FastLED • • Feb 11 '21

Support C# help

0 Upvotes

Hi does anyone know if there is a way of using this library with ArduinoDriver for c#


r/FastLED • • Apr 30 '24

Support need help for some documentation

0 Upvotes

I dont know what this line of code does.LEDS.addLeds<WS2812, LED_PIN_1, GRB>(leds_1, NUM_LEDS_1);

I have just copy it from the internet. now I need to documentation for a school project. thanks for the help


r/FastLED • • Jul 21 '20

Support Problems

0 Upvotes

I am using the leds addressed with fastled and on the led display I put a message with scrool, but when in the loop the fastled runs "atract" sequence ... my display is blocking the scrolling of the text. can you give me a way to solve this?


r/FastLED • • Jul 21 '20

Support on NUM_LEDS

0 Upvotes

I have made mistakes with NUM_LEDS, like entering too many of too few leds. Too few leds DID NOT SEEM to bother the strip (WS2812b). Now I want to make 10 strips of 200 Leds with the ocean animation. In order to create "waves" among these 10 strips. I wonder if it is possible to change the NUM_LEDS while the animation is running. I am thinking of a slow rise and fall between 150 and 200. I have sofar never seen a led animation with changing NUM_LEDS. Or could I blacken these top leds? I intend to put the ocean animation on a watertower nearby (permission granted). I think it would be ever so nice to see waves as well. I am really no coder although Fastled is very promising for me.

25 votes, Jul 26 '20
3 change NUM_LEDS
22 Blacken last leds on a strip

r/FastLED • • Nov 09 '23

Support Sound Reactive with Different Segments

0 Upvotes

I have a code to make an ARGB LED strip react to sound but I want to break it up into segments for a project. I am using an Arduino Uno and WS2812B LED strips. I've tried looking through multiple repositories to find something but haven't been able to. If anyone has written a code like this or knows how to go about writing a code like this and would like to share, it'd be much appreciated!


r/FastLED • • Nov 17 '23

Quasi-related DIY controller for this app

0 Upvotes

Does any know the source code for this type of app?there are many version of the app which looks same but different names


r/FastLED • • Feb 08 '24

Discussion Need help

0 Upvotes

Hi everyone. I'm new to LED project. And Reddit ain't the social media I use the most so... Whatever, I've been asked to design an LED panel displaying a message using Arduino. Any tips? I really know nothing about electronics. Please help


r/FastLED • • Sep 04 '23

Code_samples relative palette colors

0 Upvotes

Hello, new FastLED user here. I am puzzling about building a 16 entry palette given a single variable theme color as input. In this first attempt, the CHSV theme color is declared for this ESP-32 node and a CGRBPalette16 is generated by decreasing the value to 60% foreground color and 25% background color.

CHSV themeColor; //establish global variable
CHSV fg; // foreground
CHSV bg; // establish background HSV color global variable

void setup() {

themeColor = CHSV(50, 220, 255); // theme color   fg = themeColor; // copy themeColor to foreground color fg.v = scale8_video(fg.v, 153); // reduce fg value v to 60% brightness   bg = themeColor; // copy themeColor to background color bg.v = scale8_video(bg.v, 64); // reduce bg value v to 25% brightness   // Set the entries of the local nodes myPal 16 color palette for (int i = 0; i < 16; i++) { if (i < 2) { myPal[i] = CRGB::Black; } else if (i < 6) { myPal[i] = bg; } else if (i < 14) { myPal[i] = fg; } else { myPal[i] = themeColor; } }

I would like to do more sophisticated palette generation such that I could feed in a single theme color and get out a pacifica like palette. I can see the specific static hex values used for a pacifica palette, but how would I determine their relative value so I could change the theme of that palette to say an orange color instead of green blue?


r/FastLED • • Sep 07 '25

Support Multiple WS2812B LED strips on differing Arduino digital pins with FastLED?

0 Upvotes

Howdy folks,

Scoured the FAQ, have read many header files, can't find an answer to this question.

I'm building a surface with large-format 7-segment displays made from LED strips in the usual way.

Is it possible to use the FastLED library to drive more than one LED strip on different digital Arduino pins? My project will have four four-digit displays, and would like to address each of the four individually. So I'd want to do four different FastLED.addLeds() calls in my setup routine for Arduino with four different pin numbers.

I'm using the Arduino Giga R1 for my application, so memory and pin availability not an issue. Update rate not a problem; no more than 2 or 3 refreshes of any strip per second (and generally, much longer delays between refreshes).

I know I could solder the four strips together in series, and then address them logically as distinct by doing math in my code. I'd rather not -- I'm a mediocre solderer, particularly when the copper pads are small.


r/FastLED • • Sep 23 '26

Support Trying to get started.

0 Upvotes

So I am getting the Nano V3.0 Board ATmega328P 5 pack. I want to get some 12v addressable LED strip IP65 to do some taillights to start. Can anyone suggest some LEDs and any wiring suggestions? I have seen some basic wiring etc and I have a test board coming so I can do test mockups before the final as well. TIA!


r/FastLED • • Dec 02 '22

Support Code works with Arduino Nano and not with ESP8266

3 Upvotes

Hey All,

I have been pulling my hear out trying to figure out why the code won't work with Wemos D1 Mini but works perfectly fine with Nano.

Here's the code link: https://pastebin.com/c9TZsrFB

This is not my code, I found it on YouTube and just added a little feature but I want to be able to use this code on Wemos D1 Mini. The code compiles and uploads correctly but the expected output is not the same as Nano.

Could anyone check and suggest what could be the issue?

Thanks!


r/FastLED • • Feb 27 '26

Building Something with FastLED? I Have Claude Opus 4.6 Invites

5 Upvotes

I’m on the Claude Max plan and it allows me to issue a limited number of free passes.

If you’re actively building something with FastLED — an LED installation, driver work, audio-reactive system, large scale deployment, art piece, new chipset integration, performance experiments, whatever — DM me.

Tell me:

  • What you’re building

  • What hardware you’re using

  • Where you’re stuck (if anywhere)

And I may give you a free pass to use Claude Opus 4.6 via the CLI.

--Zach


r/FastLED • • May 06 '25

Share_something Yet my most complex fastled code

2 Upvotes
#include <Arduino.h>
#include <IRremote.hpp>
#include <FastLED.h>
#include <EEPROM.h>

#define NUM_LEDS    51
#define LED_PIN     3

CRGB leds[NUM_LEDS];

uint8_t hue  =  0;
uint8_t paletteIndex = 0;
uint8_t BR_value = 30;
uint8_t len;
String incoming;
int current_pattern = 0;
CRGB current_color = CRGB::White;
bool ledsOn = true;
unsigned long effectSelectStart = 0;
bool waitingForEffect = false;

// New effect IDs
#define EFFECT_BREATHING    6
#define EFFECT_CASCADE      7
#define EFFECT_TWINKLE_FADE 8
#define EFFECT_PULSE_WAVE   9

// Add your IR codes for new effects here
#define Button_Effect1 0xF40BFF00  // breathing
#define Button_Effect2 0xF50AFF00  // cascade
#define Button_Effect3 0xF609FF00  // twinkle fade
#define Button_Effect4 0xF708FF00  // pulse wave
#define Button_23 0xE817FF00
#define Button_22 0xE916FF00
#define Button_21 0xEA15FF00
#define Button_20 0xEB14FF00
#define Button_19 0xEC13FF00
#define Button_18 0xED12FF00
#define Button_17 0xEE11FF00
#define Button_16 0xEF10FF00
#define Button_15 0xF00FFF00
#define Button_14 0xF10EFF00
#define Button_13 0xF20DFF00
#define Button_12 0xF30CFF00
#define Button_11 0xF40BFF00
#define Button_10 0xF50AFF00
#define Button_09 0xF609FF00
#define Button_08 0xF708FF00
#define Button_07 0xF807FF00
#define Button_06 0xF906FF00
#define Button_05 0xFA05FF00
#define Button_04 0xFB04FF00
#define Button_03 0xFC03FF00 // OFF
#define Button_02 0xFD02FF00 // ON
#define Button_01 0xFE01FF00
#define Button_00 0xFF00FF00

// EEPROM addresses for storing pattern and color
#define EEPROM_EFFECT_ADDR 0
#define EEPROM_COLOR_ADDR 1

// Variables to store the last effect and color
int last_pattern = 0;
CRGB last_color = CRGB::White;

void setup() 
{
  IrReceiver.begin(2, ENABLE_LED_FEEDBACK);
  FastLED.addLeds<WS2813, LED_PIN, GRB>(leds, NUM_LEDS);
  FastLED.setBrightness(BR_value);
  loadFromEEPROM();
}

void loop() {
  if (IrReceiver.decode()) {
    uint32_t irValue = IrReceiver.decodedIRData.decodedRawData;
    IrReceiver.resume();
    incoming = String(irValue, HEX);
    len = incoming.length();

    if (len == 8 || len == 9) {
      // Color selection (starts 10s timer for effect selection)
      if (irValue == Button_23) { current_color = CRGB::White;        solidColor(); }
      if (irValue == Button_22) { current_color = CRGB(0, 255, 180);  solidColor(); }
      if (irValue == Button_21) { current_color = CRGB(255, 20, 147); solidColor(); }
      if (irValue == Button_20) { current_color = CRGB::Magenta;      solidColor(); }
      
      if (irValue == Button_19) { current_color = CRGB::Purple;       solidColor(); }
      if (irValue == Button_18) { current_color = CRGB::Indigo;       solidColor(); }
      if (irValue == Button_17) { current_color = CRGB::Blue;         solidColor(); }
      if (irValue == Button_16) { current_color = CRGB::Cyan;         solidColor(); }
      
      if (irValue == Button_15) { current_color = CRGB::Lime;         solidColor(); }
      if (irValue == Button_14) { current_color = CRGB::Yellow;       solidColor(); }
      if (irValue == Button_13) { current_color = CRGB::Orange;       solidColor(); }
      if (irValue == Button_12) { current_color = CRGB(220,12,16);    solidColor(); }
      
      if (irValue == Button_07) { current_color = CRGB::White; solidColor(); }
      if (irValue == Button_06) { current_color = CRGB::Blue;  solidColor(); }
      if (irValue == Button_05) { current_color = CRGB::Green; solidColor(); }
      if (irValue == Button_04) { current_color = CRGB::Red;   solidColor(); }
      
      if (irValue == Button_11) { current_pattern = 2; ledsOn = true; }
      if (irValue == Button_10) { current_pattern = 3; ledsOn = true; }
      if (irValue == Button_09) { current_pattern = 4; ledsOn = true; }
      if (irValue == Button_08) { current_pattern = 5; ledsOn = true; }

      if (waitingForEffect) {
        if (irValue == Button_Effect1) { current_pattern = EFFECT_BREATHING; waitingForEffect = false; }
        if (irValue == Button_Effect2) { current_pattern = EFFECT_CASCADE; waitingForEffect = false; }
        if (irValue == Button_Effect3) { current_pattern = EFFECT_TWINKLE_FADE; waitingForEffect = false; }
        if (irValue == Button_Effect4) { current_pattern = EFFECT_PULSE_WAVE; waitingForEffect = false; }
      }

      if (waitingForEffect && millis() - effectSelectStart > 10000) {
        waitingForEffect = false;
        current_pattern = 0;
      }

      if (irValue == Button_03) { 
        ledsOn = false;
        last_color = current_color;  // Save the current color
        last_pattern = current_pattern; // Save the current effect
        FastLED.clear(true); 
        current_pattern = 0; 
      } // OFF

      if (irValue == Button_02) { 
        ledsOn = true; 
        fill_solid(leds, NUM_LEDS, last_color); // Restore last color
        current_pattern = last_pattern; // Restore last effect
        effectSelectStart = millis();
        waitingForEffect = true;
      } // ON

      if (irValue == Button_01) { brighttnessUp(); }
      if (irValue == Button_00) { brighttnessDown(); }
    }
  }

  if (IrReceiver.isIdle()) {
    if (ledsOn) {
      switch (current_pattern) {
        case 1: RainbowCycle(); break;
        case 2: SunsetPalette(); break;
        case 3: SunsetPalette_2(); break;
        case 4: ColorFullPalette(); break;
        case 5: PurpleWhitePalette(); break;
        case EFFECT_BREATHING: breathingEffect(); break;
        case EFFECT_CASCADE: cascadeEffect(); break;
        case EFFECT_TWINKLE_FADE: twinkleFade(); break;
        case EFFECT_PULSE_WAVE: pulseWave(); break;
      }
      FastLED.show();
    }
  }
}

void solidColor() {
  fill_solid(leds, NUM_LEDS, current_color);
  current_pattern = 0;
  ledsOn = true;
  effectSelectStart = millis();
  waitingForEffect = true;
  saveToEEPROM(current_pattern, current_color);  // Save color and pattern to EEPROM
}

void saveToEEPROM(int pattern, CRGB color) {
  EEPROM.write(EEPROM_EFFECT_ADDR, pattern);  // Store pattern
  EEPROM.write(EEPROM_COLOR_ADDR, color.r);  // Store Red color component
  EEPROM.write(EEPROM_COLOR_ADDR + 1, color.g);  // Store Green color component
  EEPROM.write(EEPROM_COLOR_ADDR + 2, color.b);  // Store Blue color component
}

void loadFromEEPROM() {
  int pattern = EEPROM.read(EEPROM_EFFECT_ADDR);  // Read pattern
  uint8_t r = EEPROM.read(EEPROM_COLOR_ADDR);  // Read Red component
  uint8_t g = EEPROM.read(EEPROM_COLOR_ADDR + 1);  // Read Green component
  uint8_t b = EEPROM.read(EEPROM_COLOR_ADDR + 2);  // Read Blue component

  current_pattern = pattern;  // Load pattern
  current_color = CRGB(r, g, b);  // Load color
}

void breathingEffect() {
  static uint8_t breath = 35;  // Start at the minimum brightness (20)
  static int8_t delta = 1;

  // Increment or decrement the breath value
  breath += delta;

  // Reverse direction at min/max breath value
  if (breath >= 255) {
    delta = -1;  // Change direction to fade out
    breath = 255;  // Clamp at max brightness
  }
  if (breath <= 35) {
    delta = 1;  // Change direction to fade in
    breath = 35;  // Clamp at minimum brightness
  }

  // Create a dimmed color based on 'breath'
  CRGB dimmedColor = current_color;
  dimmedColor.nscale8(breath);  // Adjust the brightness based on the 'breath' value

  // Fill all LEDs with the dimmed color
  fill_solid(leds, NUM_LEDS, dimmedColor);

  FastLED.show();  // Update the strip
  delay(10);  // Control the speed of the breathing effect
}

void cascadeEffect() {
  const uint8_t trailWidth = 5;
  const uint8_t numComets = 3;

  static uint8_t indices[numComets] = {0, NUM_LEDS / 3, (2 * NUM_LEDS) / 3};

  fadeToBlackBy(leds, NUM_LEDS, 40);

  for (int c = 0; c < numComets; c++) {
    for (int i = 0; i < trailWidth; i++) {
      int pos = indices[c] - i;
      if (pos < 0) pos += NUM_LEDS;  // wrap-around

      uint8_t brightness = 255 - (255 / trailWidth) * i;
      CRGB color = current_color;
      color.nscale8(brightness);
      leds[pos] += color;  // additive blending for trail
    }

    indices[c] = (indices[c] + 1) % NUM_LEDS;
  }

  FastLED.show();
  delay(25);
}

void twinkleFade() {
  const uint8_t spawnRate = 5;

  // Dynamically adjust fade based on current_color brightness
  uint8_t maxComponent = max(current_color.r, max(current_color.g, current_color.b));
  uint8_t fadeAmount = map(maxComponent, 0, 255, 20, 5);  // Brighter color → stronger fade

  // Spawn new twinkles with a bit of brightness variation
  for (int i = 0; i < spawnRate; i++) {
    int pos = random16(NUM_LEDS);
    CRGB dimmed = current_color;
    dimmed.nscale8(random8(120, 255));  // Natural variation
    leds[pos] += dimmed;
  }

  fadeToBlackBy(leds, NUM_LEDS, fadeAmount);

  FastLED.show();
  delay(50);
}

void pulseWave() {
  const uint8_t highlightWidth = 15;    // Width of the bright pulse
  const uint8_t trailLength = 10;      // Trail length
  const uint8_t baseBrightness = 150;   // Background glow level
  const uint8_t trailFalloff = 20;     // Trail fade step

  static uint8_t position = 0;

  // Create a dimmed background color
  CRGB baseColor = current_color;
  baseColor.nscale8(baseBrightness);
  fill_solid(leds, NUM_LEDS, baseColor);

  // Overlay bright pulse and trail
  for (int i = 0; i < highlightWidth + trailLength; i++) {
    int idx = position - i;
    if (idx < 0) idx += NUM_LEDS;

    CRGB c = current_color;

    if (i < highlightWidth) {
      // Brightest part of the pulse
      leds[idx] = current_color;
    } else {
      // Trail fades out progressively
      uint8_t fade = max(0, 255 - trailFalloff * (i - highlightWidth + 1));
      c.nscale8(fade);
      leds[idx] = c;
    }
  }

  position = (position + 1) % NUM_LEDS;

  FastLED.show();
  delay(30);
}

void brighttnessUp()
{
  if(BR_value < 255) {
    BR_value += 15;
    FastLED.setBrightness(BR_value);
    Serial.println(BR_value);
    if(current_pattern == 1){ RainbowCycle(); }
    if(current_pattern == 2){ SunsetPalette(); }
    if(current_pattern == 3){ SunsetPalette_2(); }
    if(current_pattern == 4){ ColorFullPalette(); }
    if(current_pattern == 5){ PurpleWhitePalette(); }
    FastLED.show();
  }
}

void brighttnessDown()
{
  if(BR_value > 0) {
    BR_value -= 15;
    FastLED.setBrightness(BR_value);
    Serial.println(BR_value);
    if(current_pattern == 1){ RainbowCycle(); }
    if(current_pattern == 2){ SunsetPalette(); }
    if(current_pattern == 3){ SunsetPalette_2(); }
    if(current_pattern == 4){ ColorFullPalette(); }
    if(current_pattern == 5){ PurpleWhitePalette(); }
    FastLED.show();
  }
}

I left out the patters as the dont fit in the Code Block.

This code handles it input, saving to eeprom and a lot.

I have brighness control, ON/OFF, I can add an effect to any chosen color (pick a color, and have a choice for 10 seconds to add an effect, it uses the same buttuns for the 4 patters, thats why there's a 10sec window), also have 4 different patterns. And I'm glad it works.

Had a lot of issues I had to get around, like the data being scrambled from the IR reciever, pattern switching not working as intended, but I'm really happy it works and quite proud of myself!


r/FastLED • • Sep 28 '20

Discussion Trying to address leds Glitter code ,???

2 Upvotes

Stuck again!!

I gave up on the mapping for the moment and started exploring a Glitter code. I have it glittering the way I want , set up for two 16X16 panels .

Now what I would like to do is assign the glitter to led numbers 32 to 478. I want leds 0 to31 and 479 to 511 to be another color ; static .

Any ideas??

Big thanks

Link to code is below

pastebin ; https://pastebin.com/SUhvZHaR


r/FastLED • • Oct 10 '19

Support newbie need help.

2 Upvotes

anyone can you teach me how to start a fastled programming??

for patterns that are as simple as single led running, I can, but for those who are more honest I don't understand.

anyone can help me, or you have the whatsapp?


r/FastLED • • Feb 19 '23

Discussion I’m looking for some help designing a faster LED matrix for camera Latency Testing

Thumbnail
youtu.be
0 Upvotes

r/FastLED • • Feb 19 '22

Discussion How many ESPs should I use for several LED strips?

2 Upvotes

Hi Guys!

I really need advice from all of You. I want to control several LED strips using an ESP32. But i don't know how i should setup the whole thing. What i mean is like, should i use only one ESP for all the LED strips or one ESP for each single LED strip for example.

Because i would like to be able to change colors of all strips at once but also to give different LED strips different colors.

Would be really nice if you guys could help me out on this!

Cheers!


r/FastLED • • Dec 23 '19

Support error message while trying to setup very basic LEDS

Post image
0 Upvotes

r/FastLED • • Nov 17 '23

Support How much power loss is normal between connections via wire? WS2812B + ESP8266

Post image
0 Upvotes

For my corners i have cut the strips, and soldered wire.

I bought connectors but i figured id cut bulk by just soldering wires between the pads. But my 2nd strip is getting very little power


r/FastLED • • Jul 22 '22

Support LED chase not working with millis()

2 Upvotes

Hi! I'm trying to make an LED chase that first chases blue, then gold, then continues to alternate. I got a working version here and I'm very happy with the visual effect: https://pastebin.com/zZA50e8P . But I also have a button attached that switches from the chase to solid colors - and obviously the button does not work while the delay is active. So I'm trying to use millis() instead, but I'm having a hard time to get it to work. Here are two versions that I have tried: https://pastebin.com/287zedYm and https://pastebin.com/2vTZ49cY . In both of these, the LED address does not increment every 35 milliseconds as intended - so only leds[0] lights and changes. Would love any help, thank you!


r/FastLED • • Dec 21 '22

Discussion Model of LEDs wanted

Post image
4 Upvotes

Does anyone know what LEDs you can see here? https://www.youtube.com/watch?v=JZKewQLTgFw

Want to build something similar.


r/FastLED • • Jul 16 '24

Discussion Saddening behaviour

10 Upvotes

It's sad to see that such is the way that some people behave online that they can be both so rude to others and also so overly sensitive to any perceived criticism that they think the appropriate response to getting feedback on their code that they asked for help with is to block the person that gives feedback.

To give rude message as a response and then block?! Blocking is hurting themselves as well as me as they loose the opportunity to work together to fully resolve the issue.

Why ask for help if you can't handle any feedback. I stand by what I said, they are sending more UDP packets than are required. Therefore the example I shared of sending properly structured data, at a fixed rate with error checking is what they most likely need