From 46cd7deaa2320e4c492f037fd3b390188203ed23 Mon Sep 17 00:00:00 2001 From: miguel Date: Thu, 21 Aug 2025 05:03:19 +0100 Subject: [PATCH] stealthburner_leds.cfg modified - 21/08/25 - 05:03:13 --- printer_data/config/stealthburner_leds.cfg | 349 +++++++++++++-------- 1 file changed, 219 insertions(+), 130 deletions(-) diff --git a/printer_data/config/stealthburner_leds.cfg b/printer_data/config/stealthburner_leds.cfg index 26b4190..dec0520 100644 --- a/printer_data/config/stealthburner_leds.cfg +++ b/printer_data/config/stealthburner_leds.cfg @@ -10,7 +10,7 @@ # 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. +# to the top of your printer.cfg in order for 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. # @@ -45,7 +45,8 @@ # # 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 +# likely have to use WLED with Moonraker and a small micro-controller (please see the LED thread for help inside +# of the stealthburner_beta channel on Discord). # ##################################### # END INSTRUCTRUCTIONS # @@ -53,13 +54,13 @@ [neopixel sb_leds] -pin: PB0 +pin: nhk:gpio7 # The pin connected to the neopixel. This parameter must be provided. -chain_count: 3 +chain_count: 10 # 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: GRB +color_order: GRB, GRB, GRB, GRB, GRB, GRB, GRB, GRB, GRBW, 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 @@ -70,185 +71,273 @@ initial_WHITE: 0.0 # 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 # -########## +########################## +# LED Effects Animations # +########################## -# 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 +################## +## logo effects ## +################## + +[led_effect sb_logo_busy] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (1,0,0) + +[led_effect sb_logo_cleaning] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (0.0, 0.02, 0.5) + +[led_effect sb_logo_calibrating_z] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (0.0, 0.0, 0.35) + +[led_effect sb_logo_heating] +leds: + neopixel:sb_leds (1,3,7,8,6,2) +autostart: false +frame_rate: 24 +layers: + comet 0.3 0 add (1, 0.18, 0) + +[led_effect sb_logo_cooling] +leds: + neopixel:sb_leds (1,3,7,8,6,2) +autostart: false +frame_rate: 24 +layers: + comet 0.3 0 add (0, 0, 1) + +[led_effect sb_logo_homing] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (0.0, 0.6, 0.2) + +[led_effect sb_logo_leveling] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (0.5, 0.1, 0.4) + +[led_effect sb_logo_meshing] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (0.2, 1.0, 0.0) + +[led_effect sb_logo_printing] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + gradient 0.3 1 add (0.3, 0.0, 0.0),(0.3, 0.3, 0.0),(0.3, 0.1, 0.0) + +[led_effect sb_logo_standby] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (0.01, 0.01, 0.01) + +[led_effect sb_logo_part_ready] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (1-8) +layers: + breathing 3 1 top (0.0, 1.0, 0.0) + +#################### +## nozzle effects ## +#################### + +[led_effect sb_nozzle_heating] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (9,10) +layers: + breathing 3 1 top (1.0, 0.18, 0.0, 0.0) + +[led_effect sb_nozzle_cooling] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (9,10) +layers: + breathing 3 1 top (0.0, 0.0, 1.0, 0.1) + +[led_effect sb_nozzle_standby] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (9,10) +layers: + breathing 3 1 top (0.6, 0.0, 0.0, 0.0) + +[led_effect sb_nozzle_part_ready] +autostart: false +frame_rate: 24 +leds: + neopixel:sb_leds (9,10) +layers: + breathing 3 1 top (0.6, 1.0, 0.0, 0.1) -[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. +##################### +## all led effects ## +##################### + +[led_effect sb_critical_error] +leds: + neopixel:sb_leds +layers: + strobe 1 1.5 add (1.0, 1.0, 1.0) + breathing 2 0 difference (0.95, 0.0, 0.0) + static 1 0 top (1.0, 0.0, 0.0) +autostart: false +frame_rate: 24 +run_on_error: true -[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) %} +[led_effect rainbow] +leds: + neopixel:sb_leds +autostart: true +frame_rate: 24 +layers: + gradient 0.3 1 add (0.3, 0.0, 0.0),(0.0, 0.3, 0.0),(0.0, 0.0, 0.3) - {% 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) %} +####################### +# LED Effects Statics # +####################### - _set_sb_leds led={led} red={color.r} green={color.g} blue={color.b} white={color.w} idx="{idx}" transmit={transmit} +[led_effect set_nozzle_leds] +leds: + neopixel:sb_leds (9,10) + #neopixel:caselight +autostart: false +frame_rate: 24 +layers: + static 0 0 top (0.0, 0.0, 0.0, 1.0) -[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) %} +[led_effect set_logo_leds] +leds: + neopixel:sb_leds (1,2,3,4,5,6,7,8) + #neopixel:caselight +autostart: false +frame_rate: 24 +layers: + static 0 0 top (1.0, 1.0, 1.0) - _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} +############## +# The Macros # +############## [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} + SET_LED_EFFECT EFFECT=set_logo_leds STOP=1 + +[gcode_macro set_logo_leds_on] +gcode: + SET_LED_EFFECT EFFECT=set_logo_leds [gcode_macro set_nozzle_leds_on] gcode: - {% set transmit=params.TRANSMIT|default(1) %} - _set_sb_leds_by_name leds="nozzle" color="on" transmit={transmit} + SET_LED_EFFECT EFFECT=set_nozzle_leds [gcode_macro set_nozzle_leds_off] gcode: - {% set transmit=params.TRANSMIT|default(1) %} - _set_sb_leds_by_name leds="nozzle" color="off" transmit={transmit} + SET_LED_EFFECT EFFECT=set_nozzle_leds STOP=1 [gcode_macro status_off] gcode: - set_logo_leds_off transmit=0 - set_nozzle_leds_off + STOP_LED_EFFECTS [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 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=rainbow + +[gcode_macro status_part_ready] +gcode: + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_nozzle_part_ready + SET_LED_EFFECT EFFECT=sb_logo_part_ready [gcode_macro status_busy] gcode: - _set_sb_leds_by_name leds="logo" color="busy" transmit=0 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_busy 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 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_heating + SET_LED_EFFECT EFFECT=sb_nozzle_heating + +[gcode_macro status_cooling] +gcode: + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_cooling + SET_LED_EFFECT EFFECT=sb_nozzle_cooling + [gcode_macro status_leveling] gcode: - _set_sb_leds_by_name leds="logo" color="leveling" transmit=0 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_leveling set_nozzle_leds_on [gcode_macro status_homing] gcode: - _set_sb_leds_by_name leds="logo" color="homing" transmit=0 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_homing set_nozzle_leds_on [gcode_macro status_cleaning] gcode: - _set_sb_leds_by_name leds="logo" color="cleaning" transmit=0 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_cleaning set_nozzle_leds_on [gcode_macro status_meshing] gcode: - _set_sb_leds_by_name leds="logo" color="meshing" transmit=0 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_meshing set_nozzle_leds_on [gcode_macro status_calibrating_z] gcode: - _set_sb_leds_by_name leds="logo" color="calibrating_z" transmit=0 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_calibrating_z set_nozzle_leds_on [gcode_macro status_printing] gcode: - _set_sb_leds_by_name leds="logo" color="printing" transmit=0 + STOP_LED_EFFECTS + SET_LED_EFFECT EFFECT=sb_logo_printing set_nozzle_leds_on \ No newline at end of file