neopixel: Add support for delaying updates in SET_LED command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
ab5540bd34
commit
254789f4c5
|
@ -222,13 +222,16 @@ is enabled:
|
||||||
|
|
||||||
The following command is available when "neopixel" or "dotstar" config
|
The following command is available when "neopixel" or "dotstar" config
|
||||||
sections are enabled:
|
sections are enabled:
|
||||||
- `SET_LED LED=<config_name> INDEX=<index> RED=<value> GREEN=<value>
|
- `SET_LED LED=<config_name> RED=<value> GREEN=<value> BLUE=<value>
|
||||||
BLUE=<value>`: This sets the LED output. Each color <value> must be
|
[INDEX=<index>] [TRANSMIT=0]`: This sets the LED output. Each color
|
||||||
between 0.0 and 1.0. If multiple LED chips are daisy-chained then
|
<value> must be between 0.0 and 1.0. If multiple LED chips are
|
||||||
one may specify INDEX to alter the color of just the given chip (1
|
daisy-chained then one may specify INDEX to alter the color of just
|
||||||
for the first chip, 2 for the second, etc.). If INDEX is not
|
the given chip (1 for the first chip, 2 for the second, etc.). If
|
||||||
provided then all LEDs in the daisy-chain will be set to the
|
INDEX is not provided then all LEDs in the daisy-chain will be set
|
||||||
provided color.
|
to the provided color. If TRANSMIT=0 is specified then the color
|
||||||
|
change will only be made on the next SET_LED command that does not
|
||||||
|
specify TRANSMIT=0; this may be useful in combination with the INDEX
|
||||||
|
parameter to batch multiple updates in a daisy-chain.
|
||||||
|
|
||||||
## Servo Commands
|
## Servo Commands
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,7 @@ class PrinterDotstar:
|
||||||
red = self.gcode.get_float('RED', params, 0., minval=0., maxval=1.)
|
red = self.gcode.get_float('RED', params, 0., minval=0., maxval=1.)
|
||||||
green = self.gcode.get_float('GREEN', params, 0., minval=0., maxval=1.)
|
green = self.gcode.get_float('GREEN', params, 0., minval=0., maxval=1.)
|
||||||
blue = self.gcode.get_float('BLUE', params, 0., minval=0., maxval=1.)
|
blue = self.gcode.get_float('BLUE', params, 0., minval=0., maxval=1.)
|
||||||
|
transmit = self.gcode.get_int('TRANSMIT', params, 1)
|
||||||
red = int(red * 255. + .5)
|
red = int(red * 255. + .5)
|
||||||
blue = int(blue * 255. + .5)
|
blue = int(blue * 255. + .5)
|
||||||
green = int(green * 255. + .5)
|
green = int(green * 255. + .5)
|
||||||
|
@ -59,6 +60,8 @@ class PrinterDotstar:
|
||||||
else:
|
else:
|
||||||
self.color_data[4:-4] = color_data * self.chain_count
|
self.color_data[4:-4] = color_data * self.chain_count
|
||||||
# Send command
|
# Send command
|
||||||
|
if not transmit:
|
||||||
|
return
|
||||||
print_time = self.printer.lookup_object('toolhead').get_last_move_time()
|
print_time = self.printer.lookup_object('toolhead').get_last_move_time()
|
||||||
self.send_data(self.spi.get_mcu().print_time_to_clock(print_time))
|
self.send_data(self.spi.get_mcu().print_time_to_clock(print_time))
|
||||||
|
|
||||||
|
|
|
@ -60,8 +60,11 @@ class PrinterNeoPixel:
|
||||||
blue = self.gcode.get_float('BLUE', params, 0., minval=0., maxval=1.)
|
blue = self.gcode.get_float('BLUE', params, 0., minval=0., maxval=1.)
|
||||||
index = self.gcode.get_int('INDEX', params, None,
|
index = self.gcode.get_int('INDEX', params, None,
|
||||||
minval=1, maxval=self.chain_count)
|
minval=1, maxval=self.chain_count)
|
||||||
|
transmit = self.gcode.get_int('TRANSMIT', params, 1)
|
||||||
self.update_color_data(red, green, blue, index)
|
self.update_color_data(red, green, blue, index)
|
||||||
# Send command
|
# Send command
|
||||||
|
if not transmit:
|
||||||
|
return
|
||||||
print_time = self.printer.lookup_object('toolhead').get_last_move_time()
|
print_time = self.printer.lookup_object('toolhead').get_last_move_time()
|
||||||
self.send_data(self.mcu.print_time_to_clock(print_time))
|
self.send_data(self.mcu.print_time_to_clock(print_time))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue