ellensp
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
29 additions and
10 deletions
-
Marlin/src/feature/leds/neopixel.cpp
-
Marlin/src/feature/leds/neopixel.h
-
Marlin/src/gcode/feature/leds/M150.cpp
|
|
@ -35,6 +35,7 @@ |
|
|
|
#endif |
|
|
|
|
|
|
|
Marlin_NeoPixel neo; |
|
|
|
int8_t Marlin_NeoPixel::neoindex; |
|
|
|
|
|
|
|
Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIXEL_TYPE + NEO_KHZ800) |
|
|
|
#if MULTIPLE_NEOPIXEL_TYPES |
|
|
@ -52,6 +53,11 @@ Adafruit_NeoPixel Marlin_NeoPixel::adaneo1(NEOPIXEL_PIXELS, NEOPIXEL_PIN, NEOPIX |
|
|
|
#endif |
|
|
|
|
|
|
|
void Marlin_NeoPixel::set_color(const uint32_t color) { |
|
|
|
if (get_neo_index() < 0) { |
|
|
|
set_pixel_color(get_neo_index(), color); |
|
|
|
set_neo_index(-1); |
|
|
|
} |
|
|
|
else { |
|
|
|
for (uint16_t i = 0; i < pixels(); ++i) { |
|
|
|
#ifdef NEOPIXEL_BKGD_LED_INDEX |
|
|
|
if (i == NEOPIXEL_BKGD_LED_INDEX && color != 0x000000) { |
|
|
@ -61,6 +67,7 @@ void Marlin_NeoPixel::set_color(const uint32_t color) { |
|
|
|
#endif |
|
|
|
set_pixel_color(i, color); |
|
|
|
} |
|
|
|
} |
|
|
|
show(); |
|
|
|
} |
|
|
|
|
|
|
@ -71,7 +78,8 @@ void Marlin_NeoPixel::set_color_startup(const uint32_t color) { |
|
|
|
} |
|
|
|
|
|
|
|
void Marlin_NeoPixel::init() { |
|
|
|
set_brightness(NEOPIXEL_BRIGHTNESS); // 0 - 255 range
|
|
|
|
set_neo_index(-1); // -1 .. NEOPIXEL_PIXELS-1 range
|
|
|
|
set_brightness(NEOPIXEL_BRIGHTNESS); // 0 .. 255 range
|
|
|
|
begin(); |
|
|
|
show(); // initialize to all off
|
|
|
|
|
|
|
|
|
|
@ -65,6 +65,7 @@ private: |
|
|
|
, adaneo2 |
|
|
|
#endif |
|
|
|
; |
|
|
|
static int8_t neoindex; |
|
|
|
|
|
|
|
public: |
|
|
|
static void init(); |
|
|
@ -72,6 +73,9 @@ public: |
|
|
|
|
|
|
|
static void set_color(const uint32_t c); |
|
|
|
|
|
|
|
FORCE_INLINE static void set_neo_index(const int8_t neoIndex) { neoindex = neoIndex; } |
|
|
|
FORCE_INLINE static int8_t get_neo_index() { return neoindex; } |
|
|
|
|
|
|
|
#ifdef NEOPIXEL_BKGD_LED_INDEX |
|
|
|
static void set_color_background(); |
|
|
|
#endif |
|
|
|
|
|
@ -34,6 +34,9 @@ |
|
|
|
* Always sets all 3 or 4 components. If a component is left out, set to 0. |
|
|
|
* If brightness is left out, no value changed |
|
|
|
* |
|
|
|
* With NEOPIXEL_LED: |
|
|
|
* I<index> Set the Neopixel index to affect. Default: All |
|
|
|
* |
|
|
|
* Examples: |
|
|
|
* |
|
|
|
* M150 R255 ; Turn LED red |
|
|
@ -43,8 +46,12 @@ |
|
|
|
* M150 W ; Turn LED white using a white LED |
|
|
|
* M150 P127 ; Set LED 50% brightness |
|
|
|
* M150 P ; Set LED full brightness |
|
|
|
* M150 I1 R ; Set NEOPIXEL index 1 to red |
|
|
|
*/ |
|
|
|
void GcodeSuite::M150() { |
|
|
|
#if ENABLED(NEOPIXEL_LED) |
|
|
|
neo.set_neo_index(parser.intval('I', -1)); |
|
|
|
#endif |
|
|
|
leds.set_color(MakeLEDColor( |
|
|
|
parser.seen('R') ? (parser.has_value() ? parser.value_byte() : 255) : 0, |
|
|
|
parser.seen('U') ? (parser.has_value() ? parser.value_byte() : 255) : 0, |
|
|
|