mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-13 11:29:56 +03:00
Merge pull request #7618 from jeffhendrix/led_channel
Add ability to adjust LED Strip color with RC channel
This commit is contained in:
commit
acf5e54694
4 changed files with 21 additions and 4 deletions
1
AUTHORS
1
AUTHORS
|
@ -39,6 +39,7 @@ Hyon Lim
|
||||||
Hubert Jozwiak
|
Hubert Jozwiak
|
||||||
James Harrison
|
James Harrison
|
||||||
Jan Staal
|
Jan Staal
|
||||||
|
Jeff Hendrix
|
||||||
Jeremy Waters
|
Jeremy Waters
|
||||||
Joe Hermaszewski
|
Joe Hermaszewski
|
||||||
Joe Poser
|
Joe Poser
|
||||||
|
|
|
@ -115,6 +115,7 @@ Each LED has one base function:
|
||||||
* `G` - `G`PS state.
|
* `G` - `G`PS state.
|
||||||
* `S` - R`S`SSI level.
|
* `S` - R`S`SSI level.
|
||||||
* `L` - Battery `L`evel.
|
* `L` - Battery `L`evel.
|
||||||
|
* `H` - C`H`annel.
|
||||||
|
|
||||||
And each LED has overlays:
|
And each LED has overlays:
|
||||||
|
|
||||||
|
@ -125,7 +126,7 @@ And each LED has overlays:
|
||||||
* `O` - Lars`O`n Scanner (Cylon Effect).
|
* `O` - Lars`O`n Scanner (Cylon Effect).
|
||||||
* `N` - Blink on la`N`ding (throttle < 50%).
|
* `N` - Blink on la`N`ding (throttle < 50%).
|
||||||
|
|
||||||
`cc` specifies the color number (0 based index).
|
`cc` specifies the color number (0 based index), or Channel number to adjust Hue
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -137,6 +138,7 @@ led 3 0,15:SD:AWI:0
|
||||||
led 4 7,7::C:1
|
led 4 7,7::C:1
|
||||||
led 5 8,8::C:2
|
led 5 8,8::C:2
|
||||||
led 6 8,9::B:1
|
led 6 8,9::B:1
|
||||||
|
led 7 8,10::H:6
|
||||||
```
|
```
|
||||||
|
|
||||||
To erase an led, and to mark the end of the chain, use `0,0::` as the second argument, like this:
|
To erase an led, and to mark the end of the chain, use `0,0::` as the second argument, like this:
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
#include "telemetry/telemetry.h"
|
#include "telemetry/telemetry.h"
|
||||||
|
|
||||||
|
|
||||||
PG_REGISTER_WITH_RESET_FN(ledStripConfig_t, ledStripConfig, PG_LED_STRIP_CONFIG, 0);
|
PG_REGISTER_WITH_RESET_FN(ledStripConfig_t, ledStripConfig, PG_LED_STRIP_CONFIG, 1);
|
||||||
|
|
||||||
static bool ledStripInitialised = false;
|
static bool ledStripInitialised = false;
|
||||||
static bool ledStripEnabled = true;
|
static bool ledStripEnabled = true;
|
||||||
|
@ -220,7 +220,7 @@ static const hsvColor_t* getSC(ledSpecialColorIds_e index)
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char directionCodes[LED_DIRECTION_COUNT] = { 'N', 'E', 'S', 'W', 'U', 'D' };
|
static const char directionCodes[LED_DIRECTION_COUNT] = { 'N', 'E', 'S', 'W', 'U', 'D' };
|
||||||
static const char baseFunctionCodes[LED_BASEFUNCTION_COUNT] = { 'C', 'F', 'A', 'L', 'S', 'G', 'R' };
|
static const char baseFunctionCodes[LED_BASEFUNCTION_COUNT] = { 'C', 'F', 'A', 'L', 'S', 'G', 'R', 'H' };
|
||||||
static const char overlayCodes[LED_OVERLAY_COUNT] = { 'T', 'O', 'B', 'N', 'I', 'W' };
|
static const char overlayCodes[LED_OVERLAY_COUNT] = { 'T', 'O', 'B', 'N', 'I', 'W' };
|
||||||
|
|
||||||
#define CHUNK_BUFFER_SIZE 11
|
#define CHUNK_BUFFER_SIZE 11
|
||||||
|
@ -438,6 +438,7 @@ static void applyLedFixedLayers(void)
|
||||||
|
|
||||||
int fn = ledGetFunction(ledConfig);
|
int fn = ledGetFunction(ledConfig);
|
||||||
int hOffset = HSV_HUE_MAX;
|
int hOffset = HSV_HUE_MAX;
|
||||||
|
uint8_t channel = 0;
|
||||||
|
|
||||||
switch (fn) {
|
switch (fn) {
|
||||||
case LED_FUNCTION_COLOR:
|
case LED_FUNCTION_COLOR:
|
||||||
|
@ -470,6 +471,18 @@ static void applyLedFixedLayers(void)
|
||||||
hOffset += scaleRange(getRSSI() * 100, 0, 1023, -30, 120);
|
hOffset += scaleRange(getRSSI() * 100, 0, 1023, -30, 120);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LED_FUNCTION_CHANNEL:
|
||||||
|
channel = ledGetColor(ledConfig) - 1;
|
||||||
|
color = HSV(RED);
|
||||||
|
hOffset = scaleRange(rxGetChannelValue(channel), PWM_RANGE_MIN, PWM_RANGE_MAX, -1, 360);
|
||||||
|
// add black and white to range of colors
|
||||||
|
if (hOffset < 0) {
|
||||||
|
color = HSV(BLACK);
|
||||||
|
} else if (hOffset > HSV_HUE_MAX) {
|
||||||
|
color = HSV(WHITE);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
#define LED_CONFIGURABLE_COLOR_COUNT 16
|
#define LED_CONFIGURABLE_COLOR_COUNT 16
|
||||||
#define LED_MODE_COUNT 6
|
#define LED_MODE_COUNT 6
|
||||||
#define LED_DIRECTION_COUNT 6
|
#define LED_DIRECTION_COUNT 6
|
||||||
#define LED_BASEFUNCTION_COUNT 7
|
#define LED_BASEFUNCTION_COUNT 8
|
||||||
#define LED_OVERLAY_COUNT 6
|
#define LED_OVERLAY_COUNT 6
|
||||||
#define LED_SPECIAL_COLOR_COUNT 11
|
#define LED_SPECIAL_COLOR_COUNT 11
|
||||||
|
|
||||||
|
@ -124,6 +124,7 @@ typedef enum {
|
||||||
LED_FUNCTION_RSSI,
|
LED_FUNCTION_RSSI,
|
||||||
LED_FUNCTION_GPS,
|
LED_FUNCTION_GPS,
|
||||||
LED_FUNCTION_THRUST_RING,
|
LED_FUNCTION_THRUST_RING,
|
||||||
|
LED_FUNCTION_CHANNEL,
|
||||||
} ledBaseFunctionId_e;
|
} ledBaseFunctionId_e;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue