mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
1. changed default number of pwm LEDs to 256
2. Adds support for level shifters that invert the data Config option - "invert" (integer) if omitted, do not invert if == 0, do not invert if !=0, invert Former-commit-id: fd5b2863a85b11ac3a8444d1e02822f852feb556
This commit is contained in:
parent
9cbc005ee0
commit
6143075365
@ -324,12 +324,13 @@ LedDevice * LedDeviceFactory::construct(const Json::Value & deviceConfig)
|
|||||||
else if (type == "ws281x")
|
else if (type == "ws281x")
|
||||||
{
|
{
|
||||||
const int gpio = deviceConfig.get("gpio", 18).asInt();
|
const int gpio = deviceConfig.get("gpio", 18).asInt();
|
||||||
const int leds = deviceConfig.get("leds", 12).asInt();
|
const int leds = deviceConfig.get("leds", 256).asInt();
|
||||||
const uint32_t freq = deviceConfig.get("freq", (Json::UInt)800000ul).asInt();
|
const uint32_t freq = deviceConfig.get("freq", (Json::UInt)800000ul).asInt();
|
||||||
const int dmanum = deviceConfig.get("dmanum", 5).asInt();
|
const int dmanum = deviceConfig.get("dmanum", 5).asInt();
|
||||||
const int pwmchannel = deviceConfig.get("pwmchannel", 0).asInt();
|
const int pwmchannel = deviceConfig.get("pwmchannel", 0).asInt();
|
||||||
|
const int invert = deviceConfig.get("invert", 0).asInt();
|
||||||
|
|
||||||
LedDeviceWS281x * ledDeviceWS281x = new LedDeviceWS281x(gpio, leds, freq, dmanum, pwmchannel);
|
LedDeviceWS281x * ledDeviceWS281x = new LedDeviceWS281x(gpio, leds, freq, dmanum, pwmchannel, invert);
|
||||||
device = ledDeviceWS281x;
|
device = ledDeviceWS281x;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
#include "LedDeviceWS281x.h"
|
#include "LedDeviceWS281x.h"
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
LedDeviceWS281x::LedDeviceWS281x(const int gpio, const int leds, const uint32_t freq, const int dmanum, const int pwmchannel)
|
LedDeviceWS281x::LedDeviceWS281x(const int gpio, const int leds, const uint32_t freq, const int dmanum, const int pwmchannel, const int invert)
|
||||||
{
|
{
|
||||||
initialized = false;
|
initialized = false;
|
||||||
led_string.freq = freq;
|
led_string.freq = freq;
|
||||||
@ -14,13 +14,13 @@ LedDeviceWS281x::LedDeviceWS281x(const int gpio, const int leds, const uint32_t
|
|||||||
}
|
}
|
||||||
chan = pwmchannel;
|
chan = pwmchannel;
|
||||||
led_string.channel[chan].gpionum = gpio;
|
led_string.channel[chan].gpionum = gpio;
|
||||||
led_string.channel[chan].invert = 0;
|
led_string.channel[chan].invert = invert;
|
||||||
led_string.channel[chan].count = leds;
|
led_string.channel[chan].count = leds;
|
||||||
led_string.channel[chan].brightness = 255;
|
led_string.channel[chan].brightness = 255;
|
||||||
led_string.channel[chan].strip_type = WS2811_STRIP_RGB;
|
led_string.channel[chan].strip_type = WS2811_STRIP_RGB;
|
||||||
|
|
||||||
led_string.channel[!chan].gpionum = 0;
|
led_string.channel[!chan].gpionum = 0;
|
||||||
led_string.channel[!chan].invert = 0;
|
led_string.channel[!chan].invert = invert;
|
||||||
led_string.channel[!chan].count = 0;
|
led_string.channel[!chan].count = 0;
|
||||||
led_string.channel[!chan].brightness = 0;
|
led_string.channel[!chan].brightness = 0;
|
||||||
led_string.channel[!chan].strip_type = WS2811_STRIP_RGB;
|
led_string.channel[!chan].strip_type = WS2811_STRIP_RGB;
|
||||||
|
@ -16,8 +16,11 @@ public:
|
|||||||
/// @param leds The number of leds attached to the gpio pin
|
/// @param leds The number of leds attached to the gpio pin
|
||||||
/// @param freq The target frequency for the data line, default is 800000
|
/// @param freq The target frequency for the data line, default is 800000
|
||||||
/// @param dmanum The DMA channel to use, default is 5
|
/// @param dmanum The DMA channel to use, default is 5
|
||||||
|
/// @param pwmchannel The pwm channel to use
|
||||||
|
/// @param invert Invert the output line to support an inverting level shifter
|
||||||
|
|
||||||
///
|
///
|
||||||
LedDeviceWS281x(const int gpio, const int leds, const uint32_t freq, int dmanum, int pwmchannel);
|
LedDeviceWS281x(const int gpio, const int leds, const uint32_t freq, int dmanum, int pwmchannel, int invert);
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Destructor of the LedDevice, waits for DMA to complete and then cleans up
|
/// Destructor of the LedDevice, waits for DMA to complete and then cleans up
|
||||||
|
Loading…
Reference in New Issue
Block a user