| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- // NeoPixelGamma
- // This example will display a timed series of color gradiants with gamma correction
- // and then without.
- // If the last pixel is on, then the colors being shown are color corrected.
- // It will show Red grandiant, Green grandiant, Blue grandiant, a White grandiant, and
- // then repeat.
- //
- // This will demonstrate the use of the NeoGamma class
- //
- //
- #include <NeoPixelBus.h>
- #include <NeoPixelAnimator.h>
- const uint16_t PixelCount = 16; // make sure to set this to the number of pixels in your strip
- const uint8_t PixelPin = 2; // make sure to set this to the correct pin, ignored for Esp8266
- NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(PixelCount, PixelPin);
- // for esp8266 omit the pin
- //NeoPixelBus<NeoGrbFeature, Neo800KbpsMethod> strip(PixelCount);
- // uncomment only one of these to compare memory use or speed
- //
- // NeoGamma<NeoGammaEquationMethod> colorGamma;
- NeoGamma<NeoGammaTableMethod> colorGamma;
- void DrawPixels(bool corrected, HslColor startColor, HslColor stopColor)
- {
- for (uint16_t index = 0; index < strip.PixelCount() - 1; index++)
- {
- float progress = index / static_cast<float>(strip.PixelCount() - 2);
- RgbColor color = HslColor::LinearBlend<NeoHueBlendShortestDistance>(startColor, stopColor, progress);
- if (corrected)
- {
- color = colorGamma.Correct(color);
- }
- strip.SetPixelColor(index, color);
- }
- // use the last pixel to indicate if we are showing corrected colors or not
- if (corrected)
- {
- strip.SetPixelColor(strip.PixelCount() - 1, RgbColor(64));
- }
- else
- {
- strip.SetPixelColor(strip.PixelCount() - 1, RgbColor(0));
- }
- strip.Show();
- }
- void setup()
- {
- strip.Begin();
- strip.Show();
- }
- void loop()
- {
- HslColor startColor;
- HslColor stopColor;
- // red color
- startColor = HslColor(0.0f, 1.0f, 0.0f);
- stopColor = HslColor(0.0f, 1.0f, 0.5f);
- DrawPixels(true, startColor, stopColor);
- delay(5000);
- DrawPixels(false, startColor, stopColor);
- delay(5000);
- // green color
- startColor = HslColor(0.33f, 1.0f, 0.0f);
- stopColor = HslColor(0.33f, 1.0f, 0.5f);
- DrawPixels(true, startColor, stopColor);
- delay(5000);
- DrawPixels(false, startColor, stopColor);
- delay(5000);
- // blue color
- startColor = HslColor(0.66f, 1.0f, 0.0f);
- stopColor = HslColor(0.66f, 1.0f, 0.5f);
- DrawPixels(true, startColor, stopColor);
- delay(5000);
- DrawPixels(false, startColor, stopColor);
- delay(5000);
- // white color
- startColor = HslColor(0.0f, 0.0f, 0.0f);
- stopColor = HslColor(0.0f, 0.0f, 0.5f);
- DrawPixels(true, startColor, stopColor);
- delay(5000);
- DrawPixels(false, startColor, stopColor);
- delay(5000);
- }
|