mirror of
https://github.com/wled/WLED.git
synced 2025-07-24 19:26:40 +00:00
commit
e610a1ffe4
@ -1025,15 +1025,22 @@ uint16_t WS2812FX::larson_scanner(bool dual) {
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Firing comets from one end.
|
* Firing comets from one end. "Lighthouse"
|
||||||
*/
|
*/
|
||||||
uint16_t WS2812FX::mode_comet(void) {
|
uint16_t WS2812FX::mode_comet(void) {
|
||||||
uint16_t counter = now * (SEGMENT.speed >>3) +1;
|
uint16_t counter = now * ((SEGMENT.speed >>2) +1);
|
||||||
uint16_t index = counter * SEGLEN >> 16;
|
uint16_t index = counter * SEGLEN >> 16;
|
||||||
|
if (SEGENV.call == 0) SEGENV.aux0 = index;
|
||||||
|
|
||||||
fade_out(SEGMENT.intensity);
|
fade_out(SEGMENT.intensity);
|
||||||
|
|
||||||
setPixelColor( index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0));
|
setPixelColor( index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0));
|
||||||
|
if (index > SEGENV.aux0) {
|
||||||
|
for (uint16_t i = SEGENV.aux0; i < index ; i++) {
|
||||||
|
setPixelColor( i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SEGENV.aux0 = index++;
|
||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
@ -1172,19 +1179,26 @@ uint16_t WS2812FX::mode_loading(void) {
|
|||||||
//American Police Light with all LEDs Red and Blue
|
//American Police Light with all LEDs Red and Blue
|
||||||
uint16_t WS2812FX::police_base(uint32_t color1, uint32_t color2)
|
uint16_t WS2812FX::police_base(uint32_t color1, uint32_t color2)
|
||||||
{
|
{
|
||||||
uint16_t counter = now * ((SEGMENT.speed >> 3) +1);
|
uint16_t counter = now * ((SEGMENT.speed >> 2) +1);
|
||||||
uint16_t idexR = (counter * SEGLEN) >> 16;
|
uint16_t idexR = (counter * SEGLEN) >> 16;
|
||||||
if (idexR >= SEGLEN) idexR = 0;
|
if (idexR >= SEGLEN) idexR = 0;
|
||||||
|
|
||||||
uint16_t topindex = SEGLEN >> 1;
|
uint16_t topindex = SEGLEN >> 1;
|
||||||
uint16_t idexB = idexR + topindex;
|
uint16_t idexB = idexR + topindex;
|
||||||
|
if (SEGENV.call == 0) SEGENV.aux0 = idexR;
|
||||||
|
|
||||||
if (idexR > topindex) idexB -= SEGLEN;
|
if (idexR > topindex) idexB -= SEGLEN;
|
||||||
if (idexB >= SEGLEN) idexB = 0; //otherwise overflow on odd number of LEDs
|
if (idexB >= SEGLEN) idexB = 0; //otherwise overflow on odd number of LEDs
|
||||||
|
|
||||||
setPixelColor(idexR, color1);
|
uint8_t gap = (SEGENV.aux0 < idexR)? idexR - SEGENV.aux0:SEGLEN - SEGENV.aux0 + idexR;
|
||||||
setPixelColor(idexB, color2);
|
for (uint8_t i = 0; i < gap ; i++) {
|
||||||
|
if ((idexR - i) < 0) idexR = SEGLEN-1 + i;
|
||||||
|
if ((idexB - i) < 0) idexB = SEGLEN-1 + i;
|
||||||
|
setPixelColor(idexR-i, color1);
|
||||||
|
setPixelColor(idexB-i, color2);
|
||||||
|
}
|
||||||
|
SEGENV.aux0 = idexR;
|
||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2486,22 +2500,33 @@ uint16_t WS2812FX::mode_bouncing_balls(void) {
|
|||||||
*/
|
*/
|
||||||
uint16_t WS2812FX::sinelon_base(bool dual, bool rainbow=false) {
|
uint16_t WS2812FX::sinelon_base(bool dual, bool rainbow=false) {
|
||||||
fade_out(SEGMENT.intensity);
|
fade_out(SEGMENT.intensity);
|
||||||
int pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1);
|
uint16_t pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1);
|
||||||
|
if (SEGENV.call == 0) SEGENV.aux0 = pos;
|
||||||
uint32_t color1 = color_from_palette(pos, true, false, 0);
|
uint32_t color1 = color_from_palette(pos, true, false, 0);
|
||||||
|
uint32_t color2 = SEGCOLOR(2);
|
||||||
if (rainbow) {
|
if (rainbow) {
|
||||||
color1 = color_wheel((pos & 0x07) * 32);
|
color1 = color_wheel((pos & 0x07) * 32);
|
||||||
}
|
}
|
||||||
setPixelColor(pos, color1);
|
setPixelColor(pos, color1);
|
||||||
|
|
||||||
if (dual) {
|
if (dual) {
|
||||||
uint32_t color2 = SEGCOLOR(2);
|
|
||||||
|
|
||||||
if (!color2) color2 = color_from_palette(pos, true, false, 0);
|
if (!color2) color2 = color_from_palette(pos, true, false, 0);
|
||||||
if (rainbow) color2 = color1; //rainbow
|
if (rainbow) color2 = color1; //rainbow
|
||||||
|
|
||||||
setPixelColor(SEGLEN-1-pos, color2);
|
setPixelColor(SEGLEN-1-pos, color2);
|
||||||
}
|
}
|
||||||
|
if (SEGENV.aux0 != pos) {
|
||||||
|
if (SEGENV.aux0 < pos) {
|
||||||
|
for (uint16_t i = SEGENV.aux0; i < pos ; i++) {
|
||||||
|
setPixelColor(i, color1);
|
||||||
|
if (dual) setPixelColor(SEGLEN-1-i, color2);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (uint16_t i = SEGENV.aux0; i > pos ; i--) {
|
||||||
|
setPixelColor(i, color1);
|
||||||
|
if (dual) setPixelColor(SEGLEN-1-i, color2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SEGENV.aux0 = pos;
|
||||||
|
}
|
||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
||||||
@ -2985,23 +3010,26 @@ uint16_t WS2812FX::mode_plasma(void) {
|
|||||||
uint16_t WS2812FX::mode_percent(void) {
|
uint16_t WS2812FX::mode_percent(void) {
|
||||||
|
|
||||||
uint8_t percent = max(0, min(100, SEGMENT.intensity));
|
uint8_t percent = max(0, min(100, SEGMENT.intensity));
|
||||||
|
uint16_t active_leds = SEGLEN * percent / 100.0;
|
||||||
float active_float = SEGLEN * percent / 100.0;
|
|
||||||
uint16_t active_leds = active_float;
|
if (SEGENV.call == 0) SEGENV.step = 0;
|
||||||
uint16_t active_part = (active_float - active_leds) * 255;
|
uint8_t size = (1 + ((SEGMENT.speed * SEGLEN) >> 11)) & 0xFF ;
|
||||||
CRGB color;
|
|
||||||
|
for (uint16_t i = 0; i < SEGLEN; i++) {
|
||||||
for (uint16_t i = 0; i < SEGLEN; i++) {
|
if (i < SEGENV.step) {
|
||||||
if (i < active_leds) {
|
|
||||||
setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0));
|
setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0));
|
||||||
}
|
}
|
||||||
else if (i == active_leds) {
|
|
||||||
setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0, active_part));
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
setPixelColor(i, SEGCOLOR(1));
|
setPixelColor(i, SEGCOLOR(1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(active_leds > SEGENV.step) {
|
||||||
|
SEGENV.step += size;
|
||||||
|
if (SEGENV.step > active_leds) SEGENV.step = active_leds;
|
||||||
|
} else if (active_leds < SEGENV.step) {
|
||||||
|
SEGENV.step -= size;
|
||||||
|
if (SEGENV.step < active_leds) SEGENV.step = active_leds;
|
||||||
|
}
|
||||||
|
|
||||||
return FRAMETIME;
|
return FRAMETIME;
|
||||||
}
|
}
|
@ -469,7 +469,19 @@ void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping,
|
|||||||
if (seg.stop) setRange(seg.start, seg.stop -1, 0); //turn old segment range off
|
if (seg.stop) setRange(seg.start, seg.stop -1, 0); //turn old segment range off
|
||||||
if (i2 <= i1) //disable segment
|
if (i2 <= i1) //disable segment
|
||||||
{
|
{
|
||||||
seg.stop = 0; return;
|
seg.stop = 0;
|
||||||
|
if (n == mainSegment) //if main segment is deleted, set first active as main segment
|
||||||
|
{
|
||||||
|
for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++)
|
||||||
|
{
|
||||||
|
if (_segments[i].isActive()) {
|
||||||
|
mainSegment = i;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mainSegment = 0; //should not happen (always at least one active segment)
|
||||||
|
}
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (i1 < _length) seg.start = i1;
|
if (i1 < _length) seg.start = i1;
|
||||||
seg.stop = i2;
|
seg.stop = i2;
|
||||||
@ -482,6 +494,7 @@ void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void WS2812FX::resetSegments() {
|
void WS2812FX::resetSegments() {
|
||||||
|
mainSegment = 0;
|
||||||
memset(_segments, 0, sizeof(_segments));
|
memset(_segments, 0, sizeof(_segments));
|
||||||
//memset(_segment_runtimes, 0, sizeof(_segment_runtimes));
|
//memset(_segment_runtimes, 0, sizeof(_segment_runtimes));
|
||||||
_segment_index = 0;
|
_segment_index = 0;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
//#define USE_LPD8806 // Uncomment for using LPD8806
|
//#define USE_LPD8806 // Uncomment for using LPD8806
|
||||||
//#define WLED_USE_ANALOG_LEDS //Uncomment for using "dumb" PWM controlled LEDs (see pins below, default R: gpio5, G: 12, B: 15, W: 13)
|
//#define WLED_USE_ANALOG_LEDS //Uncomment for using "dumb" PWM controlled LEDs (see pins below, default R: gpio5, G: 12, B: 15, W: 13)
|
||||||
//#define WLED_USE_H801 //H801 controller. Please uncomment #define WLED_USE_ANALOG_LEDS as well
|
//#define WLED_USE_H801 //H801 controller. Please uncomment #define WLED_USE_ANALOG_LEDS as well
|
||||||
//#define WLED_USE_5CH //5 Channel H801 for cold and warm white
|
//#define WLED_USE_5CH_LEDS //5 Channel H801 for cold and warm white
|
||||||
|
|
||||||
#define BTNPIN 0 //button pin. Needs to have pullup (gpio0 recommended)
|
#define BTNPIN 0 //button pin. Needs to have pullup (gpio0 recommended)
|
||||||
#define IR_PIN 4 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0
|
#define IR_PIN 4 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0
|
||||||
@ -34,7 +34,7 @@
|
|||||||
#define RPIN 15 //R pin for analog LED strip
|
#define RPIN 15 //R pin for analog LED strip
|
||||||
#define GPIN 13 //G pin for analog LED strip
|
#define GPIN 13 //G pin for analog LED strip
|
||||||
#define BPIN 12 //B pin for analog LED strip
|
#define BPIN 12 //B pin for analog LED strip
|
||||||
#define WPIN 14 //W pin for analog LED strip (W1: 14, W2: 04)
|
#define WPIN 14 //W pin for analog LED strip
|
||||||
#define W2PIN 04 //W2 pin for analog LED strip
|
#define W2PIN 04 //W2 pin for analog LED strip
|
||||||
#undef BTNPIN
|
#undef BTNPIN
|
||||||
#undef IR_PIN
|
#undef IR_PIN
|
||||||
@ -44,7 +44,7 @@
|
|||||||
#define RPIN 5 //R pin for analog LED strip
|
#define RPIN 5 //R pin for analog LED strip
|
||||||
#define GPIN 12 //G pin for analog LED strip
|
#define GPIN 12 //G pin for analog LED strip
|
||||||
#define BPIN 15 //B pin for analog LED strip
|
#define BPIN 15 //B pin for analog LED strip
|
||||||
#define WPIN 13 //W pin for analog LED strip (W1: 14, W2: 04)
|
#define WPIN 13 //W pin for analog LED strip
|
||||||
#endif
|
#endif
|
||||||
#undef RLYPIN
|
#undef RLYPIN
|
||||||
#define RLYPIN -1 //disable as pin 12 is used by analog LEDs
|
#define RLYPIN -1 //disable as pin 12 is used by analog LEDs
|
||||||
|
@ -189,7 +189,7 @@ const char PAGE_settings_sync[] PROGMEM = R"=====(<!DOCTYPE html>
|
|||||||
<h2>Sync setup</h2>
|
<h2>Sync setup</h2>
|
||||||
<h3>Button setup</h3>
|
<h3>Button setup</h3>
|
||||||
On/Off button enabled: <input type="checkbox" name="BT"><br>
|
On/Off button enabled: <input type="checkbox" name="BT"><br>
|
||||||
Infrared receiver type (0 = disabled): <input name="IR" type="number" min="0" max="5" required><br>
|
Infrared receiver type (0 = disabled): <input name="IR" type="number" min="0" max="6" required><br>
|
||||||
<a href="https://github.com/Aircoookie/WLED/wiki/Infrared-Control" target="_blank">IR info</a>
|
<a href="https://github.com/Aircoookie/WLED/wiki/Infrared-Control" target="_blank">IR info</a>
|
||||||
<h3>WLED Broadcast</h3>
|
<h3>WLED Broadcast</h3>
|
||||||
UDP Port: <input name="UP" type="number" min="1" max="65535" required><br>
|
UDP Port: <input name="UP" type="number" min="1" max="65535" required><br>
|
||||||
@ -234,13 +234,13 @@ Group Topic: <input name="MG" maxlength="32"><br>
|
|||||||
<i>Reboot required to apply changes. </i><a href="https://github.com/Aircoookie/WLED/wiki/MQTT" target="_blank">MQTT info</a>
|
<i>Reboot required to apply changes. </i><a href="https://github.com/Aircoookie/WLED/wiki/MQTT" target="_blank">MQTT info</a>
|
||||||
<h3>Philips Hue</h3>
|
<h3>Philips Hue</h3>
|
||||||
<i>You can find the bridge IP and the light number in the 'About' section of the hue app.</i><br>
|
<i>You can find the bridge IP and the light number in the 'About' section of the hue app.</i><br>
|
||||||
Poll Hue light <input name="HL" type="number" min="1" max="99" required> every <input name="HI" type="number" min="100" max="65000" required> ms: <input type="checkbox" name="HP"><br>
|
Poll Hue light <input name="HL" type="number" min="1" max="99" > every <input name="HI" type="number" min="100" max="65000"> ms: <input type="checkbox" name="HP"><br>
|
||||||
Then, receive <input type="checkbox" name="HO"> On/Off, <input type="checkbox" name="HB"> Brightness, and <input type="checkbox" name="HC"> Color<br>
|
Then, receive <input type="checkbox" name="HO"> On/Off, <input type="checkbox" name="HB"> Brightness, and <input type="checkbox" name="HC"> Color<br>
|
||||||
Hue Bridge IP:<br>
|
Hue Bridge IP:<br>
|
||||||
<input name="H0" type="number" min="0" max="255" required> .
|
<input name="H0" type="number" min="0" max="255" > .
|
||||||
<input name="H1" type="number" min="0" max="255" required> .
|
<input name="H1" type="number" min="0" max="255" > .
|
||||||
<input name="H2" type="number" min="0" max="255" required> .
|
<input name="H2" type="number" min="0" max="255" > .
|
||||||
<input name="H3" type="number" min="0" max="255" required><br>
|
<input name="H3" type="number" min="0" max="255" ><br>
|
||||||
<b>Press the pushlink button on the bridge, after that save this page!</b><br>
|
<b>Press the pushlink button on the bridge, after that save this page!</b><br>
|
||||||
(when first connecting)<br>
|
(when first connecting)<br>
|
||||||
Hue status: <span class="hms"> Internal ESP Error! </span><hr>
|
Hue status: <span class="hms"> Internal ESP Error! </span><hr>
|
||||||
|
@ -4,6 +4,16 @@
|
|||||||
#define IRCUSTOM_ONOFF 0xA55AEA15 //Pioneer RC-975R "+FAV" button (example)
|
#define IRCUSTOM_ONOFF 0xA55AEA15 //Pioneer RC-975R "+FAV" button (example)
|
||||||
#define IRCUSTOM_MACRO1 0xFFFFFFFF //placeholder, will never be checked for
|
#define IRCUSTOM_MACRO1 0xFFFFFFFF //placeholder, will never be checked for
|
||||||
|
|
||||||
|
// Default IR codes for 6-key learning remote https://www.aliexpress.com/item/4000307837886.html
|
||||||
|
// This cheap remote has the advantage of being more powerful (longer range) than cheap credit-card remotes
|
||||||
|
#define IR6_POWER 0xFF0FF0
|
||||||
|
#define IR6_CHANNEL_UP 0xFF8F70
|
||||||
|
#define IR6_CHANNEL_DOWN 0xFF4FB0
|
||||||
|
#define IR6_VOLUME_UP 0xFFCF30
|
||||||
|
#define IR6_VOLUME_DOWN 0xFF2FD0
|
||||||
|
#define IR6_MUTE 0xFFAF50
|
||||||
|
|
||||||
|
|
||||||
//Infrared codes for 24-key remote from http://woodsgood.ca/projects/2015/02/13/rgb-led-strip-controllers-ir-codes/
|
//Infrared codes for 24-key remote from http://woodsgood.ca/projects/2015/02/13/rgb-led-strip-controllers-ir-codes/
|
||||||
#define IR24_BRIGHTER 0xF700FF
|
#define IR24_BRIGHTER 0xF700FF
|
||||||
#define IR24_DARKER 0xF7807F
|
#define IR24_DARKER 0xF7807F
|
||||||
|
@ -90,7 +90,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
//version code in format yymmddb (b = daily build)
|
//version code in format yymmddb (b = daily build)
|
||||||
#define VERSION 2001191
|
#define VERSION 2001281
|
||||||
|
|
||||||
char versionString[] = "0.9.0-b2";
|
char versionString[] = "0.9.0-b2";
|
||||||
|
|
||||||
@ -535,6 +535,9 @@ void loop() {
|
|||||||
if (!offMode) strip.service();
|
if (!offMode) strip.service();
|
||||||
}
|
}
|
||||||
yield();
|
yield();
|
||||||
|
#ifdef ESP8266
|
||||||
|
MDNS.update();
|
||||||
|
#endif
|
||||||
if (millis() - lastMqttReconnectAttempt > 30000) initMqtt();
|
if (millis() - lastMqttReconnectAttempt > 30000) initMqtt();
|
||||||
|
|
||||||
//DEBUG serial logging
|
//DEBUG serial logging
|
||||||
|
@ -14,6 +14,7 @@ decode_results results;
|
|||||||
unsigned long irCheckedTime = 0;
|
unsigned long irCheckedTime = 0;
|
||||||
uint32_t lastValidCode = 0;
|
uint32_t lastValidCode = 0;
|
||||||
uint16_t irTimesRepeated = 0;
|
uint16_t irTimesRepeated = 0;
|
||||||
|
uint8_t lastIR6ColourIdx = 0;
|
||||||
|
|
||||||
|
|
||||||
//Add what your custom IR codes should trigger here. Guide: https://github.com/Aircoookie/WLED/wiki/Infrared-Control
|
//Add what your custom IR codes should trigger here. Guide: https://github.com/Aircoookie/WLED/wiki/Infrared-Control
|
||||||
@ -84,6 +85,9 @@ void decodeIR(uint32_t code)
|
|||||||
case 3: decodeIR40(code); break; // blue 40-key remote with 25%, 50%, 75% and 100% keys
|
case 3: decodeIR40(code); break; // blue 40-key remote with 25%, 50%, 75% and 100% keys
|
||||||
case 4: decodeIR44(code); break; // white 44-key remote with color-up/down keys and DIY1 to 6 keys
|
case 4: decodeIR44(code); break; // white 44-key remote with color-up/down keys and DIY1 to 6 keys
|
||||||
case 5: decodeIR21(code); break; // white 21-key remote
|
case 5: decodeIR21(code); break; // white 21-key remote
|
||||||
|
case 6: decodeIR6(code); break; // black 6-key learning remote defaults: "CH" controls brightness,
|
||||||
|
// "VOL +" controls effect, "VOL -" controls colour/palette, "MUTE"
|
||||||
|
// sets bright plain white
|
||||||
default: return;
|
default: return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -346,6 +350,49 @@ void decodeIR21(uint32_t code)
|
|||||||
colorUpdated(2); //for notifier, IR is considered a button input
|
colorUpdated(2); //for notifier, IR is considered a button input
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void decodeIR6(uint32_t code)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (code) {
|
||||||
|
case IR6_POWER: toggleOnOff(); break;
|
||||||
|
case IR6_CHANNEL_UP: relativeChange(&bri, 10); break;
|
||||||
|
case IR6_CHANNEL_DOWN: relativeChange(&bri, -10, 5); break;
|
||||||
|
case IR6_VOLUME_UP: /* next effect */ relativeChange(&effectCurrent, 1); break;
|
||||||
|
case IR6_VOLUME_DOWN:
|
||||||
|
/* next palette */
|
||||||
|
|
||||||
|
relativeChange(&effectPalette, 1);
|
||||||
|
|
||||||
|
switch(lastIR6ColourIdx)
|
||||||
|
{
|
||||||
|
case 0: colorFromUint32(COLOR_RED); break;
|
||||||
|
case 1: colorFromUint32(COLOR_REDDISH); break;
|
||||||
|
case 2:colorFromUint32(COLOR_ORANGE); break;
|
||||||
|
case 3:colorFromUint32(COLOR_YELLOWISH); break;
|
||||||
|
case 4:colorFromUint32(COLOR_GREEN); break;
|
||||||
|
case 5:colorFromUint32(COLOR_GREENISH); break;
|
||||||
|
case 6:colorFromUint32(COLOR_TURQUOISE); break;
|
||||||
|
case 7: colorFromUint32(COLOR_CYAN); break;
|
||||||
|
case 8:colorFromUint32(COLOR_BLUE); break;
|
||||||
|
case 9:colorFromUint32(COLOR_DEEPBLUE); break;
|
||||||
|
case 10:colorFromUint32(COLOR_PURPLE); break;
|
||||||
|
case 11:colorFromUint32(COLOR_PINK); break;
|
||||||
|
case 12:colorFromUint32(COLOR_WHITE); break;
|
||||||
|
default:break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
lastIR6ColourIdx++;
|
||||||
|
if(lastIR6ColourIdx > 12) lastIR6ColourIdx = 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
case IR6_MUTE: effectCurrent = 0; effectPalette = 0; colorFromUint32(COLOR_WHITE); bri=255; break;
|
||||||
|
}
|
||||||
|
lastValidCode = code;
|
||||||
|
colorUpdated(2); //for notifier, IR is considered a button input
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void initIR()
|
void initIR()
|
||||||
{
|
{
|
||||||
if (irEnabled > 0)
|
if (irEnabled > 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user