91 lines
3.3 KiB
Arduino
91 lines
3.3 KiB
Arduino
|
#include <FastLED.h>
|
||
|
|
||
|
#define LED_PIN 12
|
||
|
#define LED_PIN2 6
|
||
|
#define status 13
|
||
|
#define NUM_LEDS 48
|
||
|
#define BRIGHTNESS 64
|
||
|
#define LED_TYPE WS2812B
|
||
|
#define COLOR_ORDER GRB
|
||
|
|
||
|
CRGB strip[NUM_LEDS];
|
||
|
CRGB strip2[NUM_LEDS];
|
||
|
|
||
|
#define BRIGHTNESS 128
|
||
|
|
||
|
|
||
|
// FastLED v2.1 provides two color-management controls:
|
||
|
// (1) color correction settings for each LED strip, and
|
||
|
// (2) master control of the overall output 'color temperature'
|
||
|
//
|
||
|
// THIS EXAMPLE demonstrates the second, "color temperature" control.
|
||
|
// It shows a simple rainbow animation first with one temperature profile,
|
||
|
// and a few seconds later, with a different temperature profile.
|
||
|
//
|
||
|
// The first pixel of the strip will show the color temperature.
|
||
|
//
|
||
|
// HELPFUL HINTS for "seeing" the effect in this demo:
|
||
|
// * Don't look directly at the LED pixels. Shine the LEDs aganst
|
||
|
// a white wall, table, or piece of paper, and look at the reflected light.
|
||
|
//
|
||
|
// * If you watch it for a bit, and then walk away, and then come back
|
||
|
// to it, you'll probably be able to "see" whether it's currently using
|
||
|
// the 'redder' or the 'bluer' temperature profile, even not counting
|
||
|
// the lowest 'indicator' pixel.
|
||
|
//
|
||
|
//
|
||
|
// FastLED provides these pre-conigured incandescent color profiles:
|
||
|
// Candle, Tungsten40W, Tungsten100W, Halogen, CarbonArc,
|
||
|
// HighNoonSun, DirectSunlight, OvercastSky, ClearBlueSky,
|
||
|
// FastLED provides these pre-configured gaseous-light color profiles:
|
||
|
// WarmFluorescent, StandardFluorescent, CoolWhiteFluorescent,
|
||
|
// FullSpectrumFluorescent, GrowLightFluorescent, BlackLightFluorescent,
|
||
|
// MercuryVapor, SodiumVapor, MetalHalide, HighPressureSodium,
|
||
|
// FastLED also provides an "Uncorrected temperature" profile
|
||
|
// UncorrectedTemperature;
|
||
|
|
||
|
#define TEMPERATURE_1 Tungsten100W
|
||
|
#define TEMPERATURE_2 OvercastSky
|
||
|
|
||
|
// How many seconds to show each temperature before switching
|
||
|
#define DISPLAYTIME 20
|
||
|
// How many seconds to show black between switches
|
||
|
#define BLACKTIME 0
|
||
|
|
||
|
#define NUM 0
|
||
|
void loop()
|
||
|
{
|
||
|
// draw a generic, no-name rainbow
|
||
|
static uint8_t starthue = 0;
|
||
|
fill_rainbow( strip + NUM, NUM_LEDS - NUM, --starthue, 20);
|
||
|
fill_rainbow( strip2 + NUM, NUM_LEDS - NUM, --starthue, 20);
|
||
|
|
||
|
// Choose which 'color temperature' profile to enable.
|
||
|
uint8_t secs = (millis() / 1000) % (DISPLAYTIME * 2);
|
||
|
if( secs < DISPLAYTIME) {
|
||
|
FastLED.setTemperature( TEMPERATURE_1 ); // first temperature
|
||
|
//strip[0] = TEMPERATURE_1; // show indicator pixel
|
||
|
} else {
|
||
|
FastLED.setTemperature( TEMPERATURE_2 ); // second temperature
|
||
|
//strip[0] = TEMPERATURE_2; // show indicator pixel
|
||
|
}
|
||
|
|
||
|
// Black out the LEDs for a few secnds between color changes
|
||
|
// to let the eyes and brains adjust
|
||
|
if( (secs % DISPLAYTIME) < BLACKTIME) {
|
||
|
memset8( strip, 0, NUM_LEDS * sizeof(CRGB));
|
||
|
}
|
||
|
|
||
|
FastLED.show();
|
||
|
FastLED.delay(8);
|
||
|
}
|
||
|
|
||
|
void setup() {
|
||
|
delay( 3000 ); // power-up safety delay
|
||
|
// It's important to set the color correction for your LED strip here,
|
||
|
// so that colors can be more accurately rendered through the 'temperature' profiles
|
||
|
FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(strip, NUM_LEDS).setCorrection( TypicalSMD5050 );
|
||
|
FastLED.addLeds<LED_TYPE, LED_PIN2, COLOR_ORDER>(strip2, NUM_LEDS).setCorrection( TypicalSMD5050 );
|
||
|
FastLED.setBrightness( BRIGHTNESS );
|
||
|
}
|