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);
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_GLOBAL_CONSTRUCTORS 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.
FL_DISABLE_WARNING_PUSH FL_DISABLE_WARNING_NULL_DEREFERENCE 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
#define FASTLED_NAMESPACE_BEGIN
Implements the FastLED namespace macros.
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)