# 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 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. # # 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 (please see the LED thread for help inside # of the stealthburner_beta channel on Discord). # ##################################### # END INSTRUCTRUCTIONS # ##################################### [mcu nhk] ## Obtain definition by "ls -l /dev/serial/by-id/" then unplug to verify ##-------------------------------------------------------------------- serial: /dev/serial/by-id/usb-Klipper_rp2040_4E363334320D3925-if00 restart_method: command ##-------------------------------------------------------------------- [neopixel sb_leds] pin: nhk:gpio7 # The pin connected to the neopixel. This parameter must be provided. 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, 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 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.# ########################## # LED Effects Animations # ########################## ################## ## 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) ##################### ## 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 [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) ####################### # LED Effects Statics # ####################### [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) [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) ############## # The Macros # ############## [gcode_macro set_logo_leds_off] gcode: 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_LED_EFFECT EFFECT=set_nozzle_leds [gcode_macro set_nozzle_leds_off] gcode: SET_LED_EFFECT EFFECT=set_nozzle_leds STOP=1 [gcode_macro status_off] gcode: STOP_LED_EFFECTS [gcode_macro status_ready] gcode: 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: STOP_LED_EFFECTS SET_LED_EFFECT EFFECT=sb_logo_busy set_nozzle_leds_on [gcode_macro status_heating] gcode: 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: STOP_LED_EFFECTS SET_LED_EFFECT EFFECT=sb_logo_leveling set_nozzle_leds_on [gcode_macro status_homing] gcode: STOP_LED_EFFECTS SET_LED_EFFECT EFFECT=sb_logo_homing set_nozzle_leds_on [gcode_macro status_cleaning] gcode: STOP_LED_EFFECTS SET_LED_EFFECT EFFECT=sb_logo_cleaning set_nozzle_leds_on [gcode_macro status_meshing] gcode: STOP_LED_EFFECTS SET_LED_EFFECT EFFECT=sb_logo_meshing set_nozzle_leds_on [gcode_macro status_calibrating_z] gcode: STOP_LED_EFFECTS SET_LED_EFFECT EFFECT=sb_logo_calibrating_z set_nozzle_leds_on [gcode_macro status_printing] gcode: STOP_LED_EFFECTS SET_LED_EFFECT EFFECT=sb_logo_printing set_nozzle_leds_on