#pragma once #include "FastLED.h" #include "pixeltypes.h" /// @file power_mgt.h /// Functions to limit the power used by FastLED FASTLED_NAMESPACE_BEGIN /// @defgroup Power Power Management Functions /// Functions to limit the amount of power used by FastLED /// @{ /// @name Power Control Setup Functions /// Functions to initialize the power control system /// @{ /// Set the maximum power used in milliamps for a given voltage /// @deprecated Use CFastLED::setMaxPowerInVoltsAndMilliamps() void set_max_power_in_volts_and_milliamps( uint8_t volts, uint32_t milliamps); /// Set the maximum power used in watts /// @deprecated Use CFastLED::setMaxPowerInMilliWatts void set_max_power_in_milliwatts( uint32_t powerInmW); /// Select a pin with an LED that will be flashed to indicate that power management /// is pulling down the brightness /// @param pinNumber output pin. Zero is "no indicator LED". void set_max_power_indicator_LED( uint8_t pinNumber); // zero = no indicator LED /// @} PowerSetup /// @name Power Control 'show()' and 'delay()' Functions /// Power-limiting replacements of `show()` and `delay()`. /// These are drop-in replacements for CFastLED::show() and CFastLED::delay(). /// In order to use these, you have to actually replace your calls to /// CFastLED::show() and CFastLED::delay() with these two functions. /// @deprecated These functions are deprecated as of [6ebcb64](https://github.com/FastLED/FastLED/commit/6ebcb6436273cc9a9dc91733af8dfd1fedde6d60), /// circa 2015. Do not use them for new programs. /// /// @{ /// Similar to CFastLED::show(), but pre-adjusts brightness to keep /// below the power threshold. /// @deprecated This is now a part of CFastLED::show() void show_at_max_brightness_for_power(); /// Similar to CFastLED::delay(), but pre-adjusts brightness to keep below the power /// threshold. /// @deprecated This is now a part of CFastLED::delay() void delay_at_max_brightness_for_power( uint16_t ms); /// @} PowerShowDelay /// @name Power Control Internal Helper Functions /// Internal helper functions for power control. /// @{ /// Determines how many milliwatts the current LED data would draw /// at max brightness (255) /// @param ledbuffer the LED data to check /// @param numLeds the number of LEDs in the data array /// @returns the number of milliwatts the LED data would consume at max brightness uint32_t calculate_unscaled_power_mW( const CRGB* ledbuffer, uint16_t numLeds); /// Determines the highest brightness level you can use and still stay under /// the specified power budget for a given set of LEDs. /// @param ledbuffer the LED data to check /// @param numLeds the number of LEDs in the data array /// @param target_brightness the brightness you'd ideally like to use /// @param max_power_mW the max power draw desired, in milliwatts /// @returns a limited brightness value. No higher than the target brightness, /// but may be lower depending on the power limit. uint8_t calculate_max_brightness_for_power_mW(const CRGB* ledbuffer, uint16_t numLeds, uint8_t target_brightness, uint32_t max_power_mW); /// @copybrief calculate_max_brightness_for_power_mW() /// @param ledbuffer the LED data to check /// @param numLeds the number of LEDs in the data array /// @param target_brightness the brightness you'd ideally like to use /// @param max_power_V the max power in volts /// @param max_power_mA the max power in milliamps /// @returns a limited brightness value. No higher than the target brightness, /// but may be lower depending on the power limit. 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 for all sets of LEDs. /// Unlike the other internal power functions which use a pointer to a /// specific set of LED data, this function uses the ::CFastLED linked list /// of LED controllers and their attached data. /// @param target_brightness the brightness you'd ideally like to use /// @param max_power_mW the max power draw desired, in milliwatts /// @returns a limited brightness value. No higher than the target brightness, /// but may be lower depending on the power limit. uint8_t calculate_max_brightness_for_power_mW( uint8_t target_brightness, fl::u32 max_power_mW); /// @} PowerInternal /// @} Power FASTLED_NAMESPACE_END