mirror of
				https://github.com/hyperion-project/hyperion.ng.git
				synced 2025-03-01 10:33:28 +00: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:
		| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user