Hi, I'm hitting an issue on 2.1 from an arduino uno where I'm getting

Hi, I’m hitting an issue on 2.1 from an arduino uno where I’m getting flickering on yellow, teal and purple. It seems to be there whether or not I’m using dithering. Any clues?

My code is on http://github.com/zekekoch/cuphead/

79bd96cddfa1c03636ff27e4ec95a2b1.gif

[side note: I was going to build one of those this week! looks great!]

Some lessons:

  1. the inner diameter of the cup is very important (Glitchyween uses 76 8.5 oz syrofoam cups, I have 144 8 oz paper cups. That’s twice the soldering. )

  2. I got ‘hot’ paper cups (they’re a little sturdier), but they’re waxed or something inside (gloss instead of matt). You might want either plain cups or suck it up and go with syrofoam (which would be prettier I think).

  3. If you try and get the outside of the cups to ‘line up’ you’ll go crazy. On my third try I just focused on the inside of the cups and it looks a lot more ‘regular’

  4. Use as little hot glue as you can (you can always add more later). I used a lot and probably half the weight is hot glue).

  5. Oh, my GOD, Wiha ‘Self Adjusting Strippers’ are the most amazing electronics purchase I have ever made (up to now). I spend 4-5 hours stripping most of the wires by hand which I can now do in 15 minutes or os. http://www.amazon.com/gp/product/B0015BKS6Y/. So amazing.

  6. Books on tape are really nice for long monotonous activites (like cutting ws2812 strips, tinning them, stripping ribbon cable)

  7. Use thicker wire and don’t forget to add power regularly. I have 65 lights per strand with 28 gauge ribbon connecting then and I’m still getting enough power loss down the cable to turn a lot of my whites to pink.

  8. Even after all of that it’s super awesome and fun.

At full brightness is seems rock solid on white. When I lower the power (to say 128 or even 64) then I get a lot of flickering on white.

Hmm, I tried Adafruit’s Neopixel library and I’m getting the same problem… Ugh. I guess I can go with flickery patterns and call it an advantage!

So let me get this part straight:

  1. With full White, at full setBrightness, you get no flickering.
  2. With full White, at (say) half or quarter setBrightness, you do get flickering.
  3. The flickering in Item 2 (above) is not at all affected by the setDither setting.

Is that all correct as far as your have observed?

And
4. If you use a pure hue instead of White, there is no flickering, even at lower setBrightness levels.

Is that also correct?

Hmm, no. I spent some more time debugging this morning.

I get solid colors (and combinations) if I manually set all of the pixels and call FastLED.show(). The problem is in showColor.

code is here: http://pastebin.com/E8KtfL4K

void loop() {
static uint8_t hue = 0;

debugBlink(CRGB::Red); // flash a color so I can tell which is which
// this is rock solid
setAllColor(CRGB::White);
FastLED.show();
FastLED.delay(3000);

debugBlink(CRGB::Blue); // flash a color so I can tell which is which
// this is rock solid
setAllColor(CRGB::White);
FastLED.show();
delay(3000);

debugBlink(CRGB::Green); // flash a color so I can tell which is which
// lots of flickering
setAllColor(CRGB::White);
show_at_max_brightness_for_power();
delay_at_max_brightness_for_power(3000);

debugBlink(CRGB::Purple); // flash a color so I can tell which is which
// this is flickering purple
FastLED.showColor(CRGB::White);
FastLED.delay(3000);
}

How many pixels total again? And what’s the ‘max power setting’ that you have? And what MCU are you using? An ATmega something?

144 pixels, 3 amps max power (but I never get up to 2 amps on my meter probably due to too small a gauge wiring), arduino uno.

I’m confused because when I use this “setAllRainbow” I’m back to getting this flickering only on multi-led colors.

void setAllRainbow()
{
byte curLed = numLeds;
byte hue = 0;
while(curLed–)
{
leds[curLed] = CHSV(hue++,255,255);;
}

}

void debugBlink (CRGB color)
{
setAllColor(color);
FastLED.show();
delay(50);
}

// This function runs over and over, and is where you do the magic to light
// your leds.
void loop() {
static uint8_t hue = 0;

debugBlink(CRGB::Teal); // flash a color so I can tell which is which
// flickery white
setAllRainbow();
FastLED.show();
delay(10000);
}