5#define FASTLED_INTERNAL
52#define POWER_DEBUG_PRINT 0
63 uint32_t red32 = 0, green32 = 0, blue32 = 0;
64 const CRGB* firstled = &(ledbuffer[0]);
65 uint8_t*
p = (uint8_t*)(firstled);
67 uint16_t count = numLeds;
85 uint32_t total = red32 + green32 + blue32 + (
gDark_mW * numLeds);
98 uint32_t requested_power_mW = ((uint32_t)total_mW * target_brightness) / 256;
100 uint8_t recommended_brightness = target_brightness;
101 if(requested_power_mW > max_power_mW) {
102 recommended_brightness = (uint32_t)((uint8_t)(target_brightness) * (uint32_t)(max_power_mW)) / ((uint32_t)(requested_power_mW));
105 return recommended_brightness;
121#if POWER_DEBUG_PRINT == 1
122 Serial.print(
"power demand at full brightness mW = ");
123 Serial.println( total_mW);
126 uint32_t requested_power_mW = ((uint32_t)total_mW * target_brightness) / 256;
127#if POWER_DEBUG_PRINT == 1
128 if( target_brightness != 255 ) {
129 Serial.print(
"power demand at scaled brightness mW = ");
130 Serial.println( requested_power_mW);
132 Serial.print(
"power limit mW = ");
133 Serial.println( max_power_mW);
136 if( requested_power_mW < max_power_mW) {
142#if POWER_DEBUG_PRINT == 1
143 Serial.print(
"demand is under the limit");
145 return target_brightness;
148 uint8_t recommended_brightness = (uint32_t)((uint8_t)(target_brightness) * (uint32_t)(max_power_mW)) / ((uint32_t)(requested_power_mW));
149#if POWER_DEBUG_PRINT == 1
150 Serial.print(
"recommended brightness # = ");
151 Serial.println( recommended_brightness);
153 uint32_t resultant_power_mW = (total_mW * recommended_brightness) / 256;
154 Serial.print(
"resultant power demand mW = ");
155 Serial.println( resultant_power_mW);
166 return recommended_brightness;
177 FastLED.setMaxPowerInVoltsAndMilliamps(volts, milliamps);
182 FastLED.setMaxPowerInMilliWatts(powerInmW);
CFastLED FastLED
Global LED strip management instance.
central include file for FastLED, defines the CFastLED class/object
CLEDController * next()
Get the next controller in the linked list after this one.
virtual int size()
How many LEDs does this controller manage?
static CLEDController * head()
Get the first LED controller in the linked list of controllers.
CRGB * leds()
Pointer to the CRGB array for this controller.
Base definition for an LED controller.
void hi()
Set the pin state to HIGH
void lo()
Set the pin state to LOW
Naive fallback solution for low level pin access.
void set_max_power_in_milliwatts(uint32_t powerInmW)
Set the maximum power used in watts.
void show_at_max_brightness_for_power()
Similar to CFastLED::show(), but pre-adjusts brightness to keep below the power threshold.
void delay_at_max_brightness_for_power(uint16_t ms)
Similar to CFastLED::delay(), but pre-adjusts brightness to keep below the power threshold.
uint32_t calculate_unscaled_power_mW(const CRGB *ledbuffer, uint16_t numLeds)
Determines how many milliwatts the current LED data would draw at max brightness (255)
void set_max_power_in_volts_and_milliamps(uint8_t volts, uint32_t milliamps)
Set the maximum power used in milliamps for a given voltage.
void set_max_power_indicator_LED(uint8_t pinNumber)
Select a pin with an LED that will be flashed to indicate that power management is pulling down the b...
uint8_t calculate_max_brightness_for_power_vmA(const CRGB *ledbuffer, uint16_t numLeds, uint8_t target_brightness, uint32_t max_power_V, uint32_t max_power_mA)
Determines the highest brightness level you can use and still stay under the specified power budget f...
uint8_t calculate_max_brightness_for_power_mW(const CRGB *ledbuffer, uint16_t numLeds, uint8_t target_brightness, uint32_t max_power_mW)
Determines the highest brightness level you can use and still stay under the specified power budget f...
#define FASTLED_NAMESPACE_END
Implements the FastLED namespace macros.
static FASTLED_NAMESPACE_BEGIN uint8_t const p[]
static const uint8_t gGreen_mW
11mA @ 5v = 55mW
static const uint8_t gBlue_mW
15mA @ 5v = 75mW
static const uint8_t gRed_mW
16mA @ 5v = 80mW
static const uint8_t gDark_mW
1mA @ 5v = 5mW
static uint8_t gMaxPowerIndicatorLEDPinNumber
static const uint8_t gMCU_mW
Functions to limit the power used by FastLED.
Representation of an RGB pixel (Red, Green, Blue)