From be16caa05a8607bc2ebab4063da3d3489d47a64a Mon Sep 17 00:00:00 2001 From: Jahnkeanater Date: Thu, 12 Oct 2017 22:44:43 -0500 Subject: [PATCH 1/5] VTX color based on frequency VTX controlled LED color. 8 fixed colors rather than a variable hue. This ensures a perceivable color difference. The channel groups are based on 39Mhz spacing across the full spectrum. --- src/main/io/ledstrip.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/main/io/ledstrip.c b/src/main/io/ledstrip.c index 607cd5dd9f..8957623f64 100644 --- a/src/main/io/ledstrip.c +++ b/src/main/io/ledstrip.c @@ -646,11 +646,36 @@ static void applyLedVtxLayer(bool updateNow, timeUs_t *timer) } else { // show frequency // calculate the VTX color based on frequency - int hue = constrain((frequency - 5645.0 ) * 1.2, 0, 360); - // if we ever want to wrap the hue around the wheel for L band frequencies... - //hue = (hue+(hue<0)*((0-hue)/360+1)*361)%361; - color.h = hue; - color.s = 0; + color.s = 0; + switch (floor((Frequency-5633)/39)) { + case 0: + color.h = HSV(WHITE).h; + color.s = HSV(WHITE).s; + break; + case 1: + color.h = HSV(RED).h; + break; + case 2: + color.h = HSV(ORANGE).h; + break; + case 3: + color.h = HSV(YELLOW).h; + break; + case 4: + color.h = HSV(GREEN).h; + break; + case 5: + color.h = HSV(BLUE).h; + break; + case 6: + color.h = HSV(DARK_VIOLET).h; + break; + case 7: + color.h = HSV(MAGENTA).h; + break; + default: + color.h = HSV(BLACK).h; + break; color.v = pit ? (blink ? 15 : 0) : 255; // blink when in pit mode` applyLedHsv(LED_MOV_OVERLAY(LED_FLAG_OVERLAY(LED_OVERLAY_VTX)), &color); } From f52e4c23afccf62aa11137ab31ec2a7ecf43547a Mon Sep 17 00:00:00 2001 From: Jahnkeanater Date: Thu, 12 Oct 2017 23:31:04 -0500 Subject: [PATCH 2/5] Update ledstrip.c --- src/main/io/ledstrip.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/io/ledstrip.c b/src/main/io/ledstrip.c index 8957623f64..619e6b30f9 100644 --- a/src/main/io/ledstrip.c +++ b/src/main/io/ledstrip.c @@ -647,35 +647,36 @@ static void applyLedVtxLayer(bool updateNow, timeUs_t *timer) else { // show frequency // calculate the VTX color based on frequency color.s = 0; - switch (floor((Frequency-5633)/39)) { - case 0: + int channel = constrain(floor((Frequency-5633)/39)+1, 1, 8); + switch (channel) { + case 1: color.h = HSV(WHITE).h; color.s = HSV(WHITE).s; break; - case 1: + case 2: color.h = HSV(RED).h; break; - case 2: + case 3: color.h = HSV(ORANGE).h; break; - case 3: + case 4: color.h = HSV(YELLOW).h; break; - case 4: + case 5: color.h = HSV(GREEN).h; break; - case 5: + case 6: color.h = HSV(BLUE).h; break; - case 6: + case 7: color.h = HSV(DARK_VIOLET).h; break; - case 7: + case 8: color.h = HSV(MAGENTA).h; break; default: color.h = HSV(BLACK).h; - break; + break; color.v = pit ? (blink ? 15 : 0) : 255; // blink when in pit mode` applyLedHsv(LED_MOV_OVERLAY(LED_FLAG_OVERLAY(LED_OVERLAY_VTX)), &color); } From bf230e175ec9214daa6f49c599570c1414703505 Mon Sep 17 00:00:00 2001 From: Jahnkeanater Date: Fri, 13 Oct 2017 13:09:54 -0500 Subject: [PATCH 3/5] Update ledstrip.c rewrite based on si618's code. --- src/main/io/ledstrip.c | 53 +++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/src/main/io/ledstrip.c b/src/main/io/ledstrip.c index 619e6b30f9..2acad228c3 100644 --- a/src/main/io/ledstrip.c +++ b/src/main/io/ledstrip.c @@ -157,6 +157,9 @@ static const specialColorIndexes_t defaultSpecialColors[] = { }} }; +// custom LED colours for VTX frequency or auxillary channel +static const colorId_e customColors[] = { COLOR_WHITE, COLOR_RED, COLOR_ORANGE, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_DARK_VIOLET, COLOR_MAGENTA }; + void pgResetFn_ledStripConfig(ledStripConfig_t *ledStripConfig) { memset(ledStripConfig->ledConfigs, 0, LED_MAX_STRIP_LENGTH * sizeof(ledConfig_t)); @@ -646,38 +649,24 @@ static void applyLedVtxLayer(bool updateNow, timeUs_t *timer) } else { // show frequency // calculate the VTX color based on frequency - color.s = 0; - int channel = constrain(floor((Frequency-5633)/39)+1, 1, 8); - switch (channel) { - case 1: - color.h = HSV(WHITE).h; - color.s = HSV(WHITE).s; - break; - case 2: - color.h = HSV(RED).h; - break; - case 3: - color.h = HSV(ORANGE).h; - break; - case 4: - color.h = HSV(YELLOW).h; - break; - case 5: - color.h = HSV(GREEN).h; - break; - case 6: - color.h = HSV(BLUE).h; - break; - case 7: - color.h = HSV(DARK_VIOLET).h; - break; - case 8: - color.h = HSV(MAGENTA).h; - break; - default: - color.h = HSV(BLACK).h; - break; - color.v = pit ? (blink ? 15 : 0) : 255; // blink when in pit mode` + if (frequency <= 5672) { + color = hsv[customColors[0]]; + } else if (frequency <= 5711) { + color = hsv[customColors[1]]; + } else if (frequency <= 5750) { + color = hsv[customColors[2]]; + } else if (frequency <= 5789) { + color = hsv[customColors[3]]; + } else if (frequency <= 5828) { + color = hsv[customColors[4]]; + } else if (frequency <= 5867) { + color = hsv[customColors[5]]; + } else if (frequency <= 5906) { + color = hsv[customColors[6]]; + } else { + color = hsv[customColors[7]]; + } + color.v = pit ? (blink ? 15 : 0) : 255; // blink when in pit mode applyLedHsv(LED_MOV_OVERLAY(LED_FLAG_OVERLAY(LED_OVERLAY_VTX)), &color); } } From 09cbe88a38c6bbbfc213bcdb0fd6a602c28fedcf Mon Sep 17 00:00:00 2001 From: Jahnkeanater Date: Fri, 13 Oct 2017 13:22:34 -0500 Subject: [PATCH 4/5] Update ledstrip.c --- src/main/io/ledstrip.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/io/ledstrip.c b/src/main/io/ledstrip.c index 2acad228c3..643c61fe8d 100644 --- a/src/main/io/ledstrip.c +++ b/src/main/io/ledstrip.c @@ -157,9 +157,6 @@ static const specialColorIndexes_t defaultSpecialColors[] = { }} }; -// custom LED colours for VTX frequency or auxillary channel -static const colorId_e customColors[] = { COLOR_WHITE, COLOR_RED, COLOR_ORANGE, COLOR_YELLOW, COLOR_GREEN, COLOR_BLUE, COLOR_DARK_VIOLET, COLOR_MAGENTA }; - void pgResetFn_ledStripConfig(ledStripConfig_t *ledStripConfig) { memset(ledStripConfig->ledConfigs, 0, LED_MAX_STRIP_LENGTH * sizeof(ledConfig_t)); @@ -650,21 +647,21 @@ static void applyLedVtxLayer(bool updateNow, timeUs_t *timer) else { // show frequency // calculate the VTX color based on frequency if (frequency <= 5672) { - color = hsv[customColors[0]]; + color = HSV(WHITE); } else if (frequency <= 5711) { - color = hsv[customColors[1]]; + color = HSV(RED); } else if (frequency <= 5750) { - color = hsv[customColors[2]]; + color = HSV(ORANGE); } else if (frequency <= 5789) { - color = hsv[customColors[3]]; + color = HSV(YELLOW); } else if (frequency <= 5828) { - color = hsv[customColors[4]]; + color = HSV(GREEN); } else if (frequency <= 5867) { - color = hsv[customColors[5]]; + color = HSV(BLUE); } else if (frequency <= 5906) { - color = hsv[customColors[6]]; + color = HSV(DARK_VIOLET); } else { - color = hsv[customColors[7]]; + color = HSV(MAGENTA); } color.v = pit ? (blink ? 15 : 0) : 255; // blink when in pit mode applyLedHsv(LED_MOV_OVERLAY(LED_FLAG_OVERLAY(LED_OVERLAY_VTX)), &color); From c1763bc0cbaf911313f85509c8b71efa2125c4f7 Mon Sep 17 00:00:00 2001 From: Jahnkeanater Date: Fri, 13 Oct 2017 15:22:52 -0500 Subject: [PATCH 5/5] Update ledstrip.c Fixed 5828 so it does not fall directly on B6. --- src/main/io/ledstrip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/io/ledstrip.c b/src/main/io/ledstrip.c index 643c61fe8d..89ed83e9c8 100644 --- a/src/main/io/ledstrip.c +++ b/src/main/io/ledstrip.c @@ -654,7 +654,7 @@ static void applyLedVtxLayer(bool updateNow, timeUs_t *timer) color = HSV(ORANGE); } else if (frequency <= 5789) { color = HSV(YELLOW); - } else if (frequency <= 5828) { + } else if (frequency <= 5829) { color = HSV(GREEN); } else if (frequency <= 5867) { color = HSV(BLUE);