diff --git a/printer_data/config/TOOLHEAD/c_stealthburner_leds.cfg b/printer_data/config/TOOLHEAD/c_stealthburner_leds.cfg index e3f187c..b44467e 100644 --- a/printer_data/config/TOOLHEAD/c_stealthburner_leds.cfg +++ b/printer_data/config/TOOLHEAD/c_stealthburner_leds.cfg @@ -1,254 +1,254 @@ -# Macros for setting the status leds on the Voron StealthBurner toolhead (or for any neopixel-type leds). -# -# You will need to configure a neopixel (or other addressable led, such as dotstar). See -# https://www.klipper3d.org/Config_Reference.html#neopixel for configuration details. - - -##################################### -# INSTRUCTIONS # -##################################### -# How to use all this stuff: -# -# 1. Copy this .cfg file into your Klipper config directory and then add [include stealthburner_leds.cfg] -# to the top of your printer.cfg in order to register the LEDs and macros with Klipper. -# 2. Define your LEDs by editing [neopixel sb_leds] below and entering the data pin from your control board -# as well as the color order. -# -# Note: RGB and RGBW are different and must be defined explicitly. RGB and RGBW are also not able to -# be mix-and-matched in the same chain. A separate data line would be needed for proper functioning. -# -# RGBW LEDs will have a visible yellow-ish phosphor section to the chip. If your LEDs do not have -# this yellow portion, you have RGB LEDs. -# -# 3. Save your config and restart Klipper. -# -# Note: We set RED and BLUE to 1.0 to make it easier for users and supporters to detect -# misconfigurations or miswiring. The default color format is for Neopixels with a dedicated -# white LED. On startup, all three SB LEDs should light up. -# -# If you get random colors across your LEDs, change the color_order to GRB and restart. Then -# omit the W for each suggested color_order in the next paragraph. -# -# If you get MAGENTA, your color order is correct. If you get CYAN, you need to use RGBW. If -# you get YELLOW, you need to use BRGW (note that BRG is only supported in the latest Klipper -# version). -# -# 4. Once you have confirmed that the LEDs are set up correctly, you must now decide where you want -# these macros called up...which means adding them to your existing gcode macros. NOTHING will happen -# unless you add the STATUS_????? macros to your existing gcode macros. -# -# Example: add STATUS_LEVELING to the beginning of your QGL gcode macro, and then add STATUS_READY -# to the end of it to set the logo LED and nozzle LEDs back to the `ready` state. -# -# Example: add STATUS_CLEANING to the beginning of your nozzle-cleaning macro, and then STATUS_READY -# to the end of it to return the LEDs back to `ready` state. -# -# 5. Feel free to change colors of each macro, create new ones if you have a need to. The macros provided below -# are just an example of what is possible. If you want to try some more complex animations, you will most -# likely have to use WLED with Moonraker and a small micro-controller -# -##################################### -# END INSTRUCTRUCTIONS # -##################################### - - - -[neopixel sb_leds] -pin: EBB:gpio15 -# The pin connected to the neopixel. This parameter must be provided. -chain_count: 3 -# The number of Neopixel chips that are "daisy chained" to the -# provided pin. The default is 1 (which indicates only a single -# Neopixel is connected to the pin). -color_order: GRBW -# Set the pixel order required by the LED hardware. Options are GRB, -# RGB, GRBW, or RGBW. The default is GRB. -initial_RED: 1.0 -initial_GREEN: 0.0 -initial_BLUE: 1.0 -initial_WHITE: 0.0 -# Sets the initial LED color of the Neopixel. Each value should be -# between 0.0 and 1.0. The WHITE option is only available on RGBW -# LEDs. The default for each color is 0.# - -# Most configuration for the macros can be done by modifying the variables in the _sb_vars macro -# at the start of this file. - -########## -# MACROS # -########## - -# The following status macros are available (these go inside of your macros): -# -# STATUS_READY -# STATUS_OFF -# STATUS_BUSY -# STATUS_HEATING -# STATUS_LEVELING -# STATUS_HOMING -# STATUS_CLEANING -# STATUS_MESHING -# STATUS_CALIBRATING_Z -# -# With additional macros for basic control: -# -# SET_NOZZLE_LEDS_ON -# SET_LOGO_LEDS_OFF -# SET_NOZZLE_LEDS_OFF -# -# Contributed by Voron discord users wile.e, Tetsunosuke, and etherwalker - - -[gcode_macro _sb_vars] -# User settings for the StealthBurner status leds. You can change the status colors and led -# configurations for the logo and nozzle here. -variable_colors: { - 'logo': { # Colors for logo states - 'busy': {'r': 0.4, 'g': 0.0, 'b': 0.0, 'w': 0.0}, - 'cleaning': {'r': 0.0, 'g': 0.02, 'b': 0.5, 'w': 0.0}, - 'calibrating_z': {'r': 0.8, 'g': 0., 'b': 0.35, 'w': 0.0}, - 'heating': {'r': 0.3, 'g': 0.18, 'b': 0.0, 'w': 0.0}, - 'homing': {'r': 0.0, 'g': 0.6, 'b': 0.2, 'w': 0.0}, - 'leveling': {'r': 0.5, 'g': 0.1, 'b': 0.4, 'w': 0.0}, - 'meshing': {'r': 0.2, 'g': 1.0, 'b': 0.0, 'w': 0.0}, - 'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, - 'printing': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, - 'standby': {'r': 0.01, 'g': 0.01, 'b': 0.01, 'w': 0.1}, - }, - 'nozzle': { # Colors for nozzle states - 'heating': {'r': 0.8, 'g': 0.35, 'b': 0.0, 'w':0.0}, - 'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, - 'on': {'r': 0.8, 'g': 0.8, 'b': 0.8, 'w':1.0}, - 'standby': {'r': 0.6, 'g': 0.0, 'b': 0.0, 'w':0.0}, - }, - 'thermal': { - 'hot': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, - 'cold': {'r': 0.3, 'g': 0.0, 'b': 0.3, 'w': 0.0} - } - } -variable_logo_led_name: "sb_leds" -# The name of the addressable LED chain that contains the logo LED(s) -variable_logo_idx: "1" -# A comma-separated list of indexes LEDs in the logo -variable_nozzle_led_name: "sb_leds" -# The name of the addressable LED chain that contains the nozzle LED(s). This will -# typically be the same LED chain as the logo. -variable_nozzle_idx: "2,3" -# A comma-separated list of indexes of LEDs in the nozzle -gcode: - # This section is required. Do Not Delete. - -[gcode_macro _set_sb_leds] -gcode: - {% set red = params.RED|default(0)|float %} - {% set green = params.GREEN|default(0)|float %} - {% set blue = params.BLUE|default(0)|float %} - {% set white = params.WHITE|default(0)|float %} - {% set led = params.LED|string %} - {% set idx = (params.IDX|string).split(',') %} - {% set transmit_last = params.TRANSMIT|default(1) %} - - {% for led_index in idx %} - {% set transmit=transmit_last if loop.last else 0 %} - set_led led={led} red={red} green={green} blue={blue} white={white} index={led_index} transmit={transmit} - {% endfor %} - -[gcode_macro _set_sb_leds_by_name] -gcode: - {% set leds_name = params.LEDS %} - {% set color_name = params.COLOR %} - {% set color = printer["gcode_macro _sb_vars"].colors[leds_name][color_name] %} - {% set led = printer["gcode_macro _sb_vars"][leds_name + "_led_name"] %} - {% set idx = printer["gcode_macro _sb_vars"][leds_name + "_idx"] %} - {% set transmit = params.TRANSMIT|default(1) %} - - _set_sb_leds led={led} red={color.r} green={color.g} blue={color.b} white={color.w} idx="{idx}" transmit={transmit} - -[gcode_macro _set_logo_leds] -gcode: - {% set red = params.RED|default(0)|float %} - {% set green = params.GREEN|default(0)|float %} - {% set blue = params.BLUE|default(0)|float %} - {% set white = params.WHITE|default(0)|float %} - {% set led = printer["gcode_macro _sb_vars"].logo_led_name %} - {% set idx = printer["gcode_macro _sb_vars"].logo_idx %} - {% set transmit=params.TRANSMIT|default(1) %} - - _set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit} - -[gcode_macro _set_nozzle_leds] -gcode: - {% set red = params.RED|default(0)|float %} - {% set green = params.GREEN|default(0)|float %} - {% set blue = params.BLUE|default(0)|float %} - {% set white = params.WHITE|default(0)|float %} - {% set led = printer["gcode_macro _sb_vars"].nozzle_led_name %} - {% set idx = printer["gcode_macro _sb_vars"].nozzle_idx %} - {% set transmit=params.TRANSMIT|default(1) %} - - _set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit} - -[gcode_macro set_logo_leds_off] -gcode: - {% set transmit=params.TRANSMIT|default(1) %} - _set_logo_leds red=0 blue=0 green=0 white=0 transmit={transmit} - -[gcode_macro set_nozzle_leds_on] -gcode: - {% set transmit=params.TRANSMIT|default(1) %} - _set_sb_leds_by_name leds="nozzle" color="on" transmit={transmit} - -[gcode_macro set_nozzle_leds_off] -gcode: - {% set transmit=params.TRANSMIT|default(1) %} - _set_sb_leds_by_name leds="nozzle" color="off" transmit={transmit} - -[gcode_macro status_off] -gcode: - set_logo_leds_off transmit=0 - set_nozzle_leds_off - -[gcode_macro status_ready] -gcode: - _set_sb_leds_by_name leds="logo" color="standby" transmit=0 - _set_sb_leds_by_name leds="nozzle" color="standby" transmit=1 - -[gcode_macro status_busy] -gcode: - _set_sb_leds_by_name leds="logo" color="busy" transmit=0 - set_nozzle_leds_on - -[gcode_macro status_heating] -gcode: - _set_sb_leds_by_name leds="logo" color="heating" transmit=0 - _set_sb_leds_by_name leds="nozzle" color="heating" transmit=1 - -[gcode_macro status_leveling] -gcode: - _set_sb_leds_by_name leds="logo" color="leveling" transmit=0 - set_nozzle_leds_on - -[gcode_macro status_homing] -gcode: - _set_sb_leds_by_name leds="logo" color="homing" transmit=0 - set_nozzle_leds_on - -[gcode_macro status_cleaning] -gcode: - _set_sb_leds_by_name leds="logo" color="cleaning" transmit=0 - set_nozzle_leds_on - -[gcode_macro status_meshing] -gcode: - _set_sb_leds_by_name leds="logo" color="meshing" transmit=0 - set_nozzle_leds_on - -[gcode_macro status_calibrating_z] -gcode: - _set_sb_leds_by_name leds="logo" color="calibrating_z" transmit=0 - set_nozzle_leds_on - -[gcode_macro status_printing] -gcode: - _set_sb_leds_by_name leds="logo" color="printing" transmit=0 +# Macros for setting the status leds on the Voron StealthBurner toolhead (or for any neopixel-type leds). +# +# You will need to configure a neopixel (or other addressable led, such as dotstar). See +# https://www.klipper3d.org/Config_Reference.html#neopixel for configuration details. + + +##################################### +# INSTRUCTIONS # +##################################### +# How to use all this stuff: +# +# 1. Copy this .cfg file into your Klipper config directory and then add [include stealthburner_leds.cfg] +# to the top of your printer.cfg in order to register the LEDs and macros with Klipper. +# 2. Define your LEDs by editing [neopixel sb_leds] below and entering the data pin from your control board +# as well as the color order. +# +# Note: RGB and RGBW are different and must be defined explicitly. RGB and RGBW are also not able to +# be mix-and-matched in the same chain. A separate data line would be needed for proper functioning. +# +# RGBW LEDs will have a visible yellow-ish phosphor section to the chip. If your LEDs do not have +# this yellow portion, you have RGB LEDs. +# +# 3. Save your config and restart Klipper. +# +# Note: We set RED and BLUE to 1.0 to make it easier for users and supporters to detect +# misconfigurations or miswiring. The default color format is for Neopixels with a dedicated +# white LED. On startup, all three SB LEDs should light up. +# +# If you get random colors across your LEDs, change the color_order to GRB and restart. Then +# omit the W for each suggested color_order in the next paragraph. +# +# If you get MAGENTA, your color order is correct. If you get CYAN, you need to use RGBW. If +# you get YELLOW, you need to use BRGW (note that BRG is only supported in the latest Klipper +# version). +# +# 4. Once you have confirmed that the LEDs are set up correctly, you must now decide where you want +# these macros called up...which means adding them to your existing gcode macros. NOTHING will happen +# unless you add the STATUS_????? macros to your existing gcode macros. +# +# Example: add STATUS_LEVELING to the beginning of your QGL gcode macro, and then add STATUS_READY +# to the end of it to set the logo LED and nozzle LEDs back to the `ready` state. +# +# Example: add STATUS_CLEANING to the beginning of your nozzle-cleaning macro, and then STATUS_READY +# to the end of it to return the LEDs back to `ready` state. +# +# 5. Feel free to change colors of each macro, create new ones if you have a need to. The macros provided below +# are just an example of what is possible. If you want to try some more complex animations, you will most +# likely have to use WLED with Moonraker and a small micro-controller +# +##################################### +# END INSTRUCTRUCTIONS # +##################################### + + + +[neopixel sb_leds] +pin: EBB:gpio15 +# The pin connected to the neopixel. This parameter must be provided. +chain_count: 3 +# The number of Neopixel chips that are "daisy chained" to the +# provided pin. The default is 1 (which indicates only a single +# Neopixel is connected to the pin). +color_order: GRBW +# Set the pixel order required by the LED hardware. Options are GRB, +# RGB, GRBW, or RGBW. The default is GRB. +initial_RED: 1.0 +initial_GREEN: 0.0 +initial_BLUE: 1.0 +initial_WHITE: 0.0 +# Sets the initial LED color of the Neopixel. Each value should be +# between 0.0 and 1.0. The WHITE option is only available on RGBW +# LEDs. The default for each color is 0.# + +# Most configuration for the macros can be done by modifying the variables in the _sb_vars macro +# at the start of this file. + +########## +# MACROS # +########## + +# The following status macros are available (these go inside of your macros): +# +# STATUS_READY +# STATUS_OFF +# STATUS_BUSY +# STATUS_HEATING +# STATUS_LEVELING +# STATUS_HOMING +# STATUS_CLEANING +# STATUS_MESHING +# STATUS_CALIBRATING_Z +# +# With additional macros for basic control: +# +# SET_NOZZLE_LEDS_ON +# SET_LOGO_LEDS_OFF +# SET_NOZZLE_LEDS_OFF +# +# Contributed by Voron discord users wile.e, Tetsunosuke, and etherwalker + + +[gcode_macro _sb_vars] +# User settings for the StealthBurner status leds. You can change the status colors and led +# configurations for the logo and nozzle here. +variable_colors: { + 'logo': { # Colors for logo states + 'busy': {'r': 0.4, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'cleaning': {'r': 0.0, 'g': 0.02, 'b': 0.5, 'w': 0.0}, + 'calibrating_z': {'r': 0.8, 'g': 0., 'b': 0.35, 'w': 0.0}, + 'heating': {'r': 0.3, 'g': 0.18, 'b': 0.0, 'w': 0.0}, + 'homing': {'r': 0.0, 'g': 0.6, 'b': 0.2, 'w': 0.0}, + 'leveling': {'r': 0.5, 'g': 0.1, 'b': 0.4, 'w': 0.0}, + 'meshing': {'r': 0.2, 'g': 1.0, 'b': 0.0, 'w': 0.0}, + 'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'printing': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'standby': {'r': 0.01, 'g': 0.01, 'b': 0.01, 'w': 0.1}, + }, + 'nozzle': { # Colors for nozzle states + 'heating': {'r': 0.8, 'g': 0.35, 'b': 0.0, 'w':0.0}, + 'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'on': {'r': 0.8, 'g': 0.8, 'b': 0.8, 'w':0.1}, + 'standby': {'r': 0.6, 'g': 0.0, 'b': 0.0, 'w':0.0}, + }, + 'thermal': { + 'hot': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0}, + 'cold': {'r': 0.3, 'g': 0.0, 'b': 0.3, 'w': 0.0} + } + } +variable_logo_led_name: "sb_leds" +# The name of the addressable LED chain that contains the logo LED(s) +variable_logo_idx: "1" +# A comma-separated list of indexes LEDs in the logo +variable_nozzle_led_name: "sb_leds" +# The name of the addressable LED chain that contains the nozzle LED(s). This will +# typically be the same LED chain as the logo. +variable_nozzle_idx: "2,3" +# A comma-separated list of indexes of LEDs in the nozzle +gcode: + # This section is required. Do Not Delete. + +[gcode_macro _set_sb_leds] +gcode: + {% set red = params.RED|default(0)|float %} + {% set green = params.GREEN|default(0)|float %} + {% set blue = params.BLUE|default(0)|float %} + {% set white = params.WHITE|default(0)|float %} + {% set led = params.LED|string %} + {% set idx = (params.IDX|string).split(',') %} + {% set transmit_last = params.TRANSMIT|default(1) %} + + {% for led_index in idx %} + {% set transmit=transmit_last if loop.last else 0 %} + set_led led={led} red={red} green={green} blue={blue} white={white} index={led_index} transmit={transmit} + {% endfor %} + +[gcode_macro _set_sb_leds_by_name] +gcode: + {% set leds_name = params.LEDS %} + {% set color_name = params.COLOR %} + {% set color = printer["gcode_macro _sb_vars"].colors[leds_name][color_name] %} + {% set led = printer["gcode_macro _sb_vars"][leds_name + "_led_name"] %} + {% set idx = printer["gcode_macro _sb_vars"][leds_name + "_idx"] %} + {% set transmit = params.TRANSMIT|default(1) %} + + _set_sb_leds led={led} red={color.r} green={color.g} blue={color.b} white={color.w} idx="{idx}" transmit={transmit} + +[gcode_macro _set_logo_leds] +gcode: + {% set red = params.RED|default(0)|float %} + {% set green = params.GREEN|default(0)|float %} + {% set blue = params.BLUE|default(0)|float %} + {% set white = params.WHITE|default(0)|float %} + {% set led = printer["gcode_macro _sb_vars"].logo_led_name %} + {% set idx = printer["gcode_macro _sb_vars"].logo_idx %} + {% set transmit=params.TRANSMIT|default(1) %} + + _set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit} + +[gcode_macro _set_nozzle_leds] +gcode: + {% set red = params.RED|default(0)|float %} + {% set green = params.GREEN|default(0)|float %} + {% set blue = params.BLUE|default(0)|float %} + {% set white = params.WHITE|default(0)|float %} + {% set led = printer["gcode_macro _sb_vars"].nozzle_led_name %} + {% set idx = printer["gcode_macro _sb_vars"].nozzle_idx %} + {% set transmit=params.TRANSMIT|default(1) %} + + _set_sb_leds led={led} red={red} green={green} blue={blue} white={white} idx="{idx}" transmit={transmit} + +[gcode_macro set_logo_leds_off] +gcode: + {% set transmit=params.TRANSMIT|default(1) %} + _set_logo_leds red=0 blue=0 green=0 white=0 transmit={transmit} + +[gcode_macro set_nozzle_leds_on] +gcode: + {% set transmit=params.TRANSMIT|default(1) %} + _set_sb_leds_by_name leds="nozzle" color="on" transmit={transmit} + +[gcode_macro set_nozzle_leds_off] +gcode: + {% set transmit=params.TRANSMIT|default(1) %} + _set_sb_leds_by_name leds="nozzle" color="off" transmit={transmit} + +[gcode_macro status_off] +gcode: + set_logo_leds_off transmit=0 + set_nozzle_leds_off + +[gcode_macro status_ready] +gcode: + _set_sb_leds_by_name leds="logo" color="standby" transmit=0 + _set_sb_leds_by_name leds="nozzle" color="standby" transmit=1 + +[gcode_macro status_busy] +gcode: + _set_sb_leds_by_name leds="logo" color="busy" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_heating] +gcode: + _set_sb_leds_by_name leds="logo" color="heating" transmit=0 + _set_sb_leds_by_name leds="nozzle" color="heating" transmit=1 + +[gcode_macro status_leveling] +gcode: + _set_sb_leds_by_name leds="logo" color="leveling" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_homing] +gcode: + _set_sb_leds_by_name leds="logo" color="homing" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_cleaning] +gcode: + _set_sb_leds_by_name leds="logo" color="cleaning" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_meshing] +gcode: + _set_sb_leds_by_name leds="logo" color="meshing" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_calibrating_z] +gcode: + _set_sb_leds_by_name leds="logo" color="calibrating_z" transmit=0 + set_nozzle_leds_on + +[gcode_macro status_printing] +gcode: + _set_sb_leds_by_name leds="logo" color="printing" transmit=0 set_nozzle_leds_on \ No newline at end of file