Skip to content

Instantly share code, notes, and snippets.

@bistory
Last active May 22, 2024 09:32
Show Gist options
  • Save bistory/1b1c7f39a19ed139971cdf6d38be6380 to your computer and use it in GitHub Desktop.
Save bistory/1b1c7f39a19ed139971cdf6d38be6380 to your computer and use it in GitHub Desktop.
Voron StealthBurner LEDs config example
[gcode_macro CALIBRATE_Z]
rename_existing: BASE_CALIBRATE_Z
gcode:
STATUS_CALIBRATING_Z
BASE_CALIBRATE_Z
# 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.
#
# CONFIGURATION
#
# Example neopixel configuration:
# [neopixel sb_leds]
# pin: <your pin> # Spider : PD3 / Octopus : PB0
# # The pin connected to the neopixel. This parameter must be
# # provided.
# chain_count: 3 # For single Logo LED
# #chain_count: 10 # For PCB Logo
# # 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 # For single Logo LED
# #color_order: GRB, GRB, GRB, GRB, GRB, GRB, GRB, GRB, GRBW, GRBW # For PCB Logo
# # Set the pixel order required by the LED hardware. Options are GRB,
# # RGB, GRBW, or RGBW. The default is GRB.
# initial_RED: 0.0
# initial_GREEN: 0.0
# initial_BLUE: 0.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:
# STATUS_OFF ; All off
# STATUS_READY ; White logo and red nozzle
# STATUS_BUSY ; Red logo and white nozzle
# STATUS_HEATING ; Yellow logo and nozzle
# STATUS_LEVELING ; Pink logo and white nozzle
# STATUS_HOMING ; Cyan logo and white nozzle
# STATUS_CLEANING ; Blue logo and white nozzle
# STATUS_MESHING ; Green logo and white nozzle
# STATUS_CALIBRATING_Z ; Magenta logo and white nozzle
# STATUS_PRINTING ; Red logo and white nozzle
# With additional macros for direct control:
# SET_NOZZLE_LEDS_ON
# SET_NOZZLE_LEDS_OFF
# SET_LOGO_LEDS_OFF
#
# You will need to add the status macros into your configuration before the matching command
#
# Example:
# [gcode_macro print_start]
# gcode:
# STATUS_HOMING
# G28
# STATUS_HEATING
# M140 S{bed_temp}
# M104 S{e0_temp}
# ...
# STATUS_PRINTING
#
# 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
'off': {'r': 0.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
'ready': {'r': 0.01, 'g': 0.01, 'b': 0.01, 'w': 0.1},
'busy': {'r': 0.4, 'g': 0.0, 'b': 0.0, 'w': 0.0},
'heating': {'r': 0.3, 'g': 0.18, 'b': 0.0, 'w': 0.0},
'leveling': {'r': 0.5, 'g': 0.1, 'b': 0.4, 'w': 0.0},
'homing': {'r': 0.0, 'g': 0.6, 'b': 0.2, 'w': 0.0},
'cleaning': {'r': 0.0, 'g': 0.02, 'b': 0.5, 'w': 0.0},
'meshing': {'r': 0.2, 'g': 1.0, 'b': 0.0, 'w': 0.0},
'calibrating_z': {'r': 0.8, 'g': 0.0, 'b': 0.35, 'w': 0.0},
'printing': {'r': 1.0, 'g': 0.0, 'b': 0.0, 'w': 0.0},
},
'nozzle': { # Colors for nozzle states
'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},
'ready': {'r': 0.6, 'g': 0.0, 'b': 0.0, 'w':0.0},
'heating': {'r': 0.8, 'g': 0.35, '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" # For single Logo LED
#variable_logo_idx: "1,2,3,4,5,6,7,8" # For PCB Logo
# 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" # For single Logo LED
#variable_nozzle_idx: "9,10" # For PCB Logo
# A comma-separated list of indexes of LEDs in the nozzle
variable_thermal_config: {
'extruder': {
'cool_temp': 40,
'leds': 'logo',
},
'heater_bed': {
'cool_temp': 40,
'leds': 'nozzle',
},
}
# temperatures at which cooling will be considered complete
gcode:
; Do nothing
[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="ready" transmit=0
_set_sb_leds_by_name leds="nozzle" color="ready" 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment