Drei adressierbare LEDs am Toolhead zeigen den Druckerzustand an – ich nutze dafür das Klipper-Plugin led_effect und den RGB-Ausgang meines EBB36 CAN-Toolboards. Der Aufbau (Dragon Burner + Orbiter + Rapido) steht im Rapido-2F-Artikel.
Was die LEDs anzeigen sollen
Ich habe drei LEDs am Druckkopf: zwei als Düsenbeleuchtung (LED 1–2) und eine als Status-/Logo-LED (LED 3). Die Düsen-LEDs leuchten beim Druck weiß, atmen aber je nach Phase in einer Farbe – cyan beim Homing, orange beim Heizen. Die Status-LED ist grün, wenn aktiv gedruckt wird, und fällt danach in Standby. So sehe ich quer durch die Werkstatt, ob der Drucker heizt, druckt oder fertig ist – und habe nebenbei echtes Licht auf dem Bauteil.
Voraussetzungen
Du brauchst das Plugin klipper-led_effect von Julian Schill (am einfachsten über KIAUH installiert) – es ergänzt die Bausteine [led_effect], SET_LED_EFFECT und STOP_LED_EFFECTS. Dazu ein paar adressierbare LEDs (WS2812/Neopixel), die in vielen Toolhead-Shrouds wie dem Dragon Burner ohnehin vorgesehen sind, und einen freien RGB-Ausgung am Mainboard oder Toolboard. Bei mir hängen sie am EBB36 CAN-Toolboard – gesteuert wird der ganze Drucker von einem BTT Octopus.
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.
Neopixel am CAN-Toolboard definieren
Zuerst die LEDs als [neopixel] anlegen. Der Pin ist der RGB-Ausgang des Toolboards (beim EBB36 PD3); über CAN wird er als toolboard0:PD3 angesprochen. Wichtig ist die color_order: stimmt sie nicht, sind Rot und Grün vertauscht – viele Günstig-LEDs sind GRB statt RGB.
[neopixel leds_tool0]
pin: toolboard0:PD3 # RGB-Ausgang am EBB36 CAN-Toolboard
chain_count: 3 # 2x Duese + 1x Status/Logo
color_order: GRB # falsche Reihenfolge -> Farben vertauscht
initial_RED: 0.0
initial_GREEN: 0.0
initial_BLUE: 0.0Effekte mit led_effect definieren
Statt die LEDs hart zu schalten, definiere ich pro Zustand einen [led_effect]. Praktisch ist die LED-Auswahl pro Effekt: (3) spricht nur die Status-LED an, (1-2) nur die Düsen-LEDs. Als Ebenen-Typ nutze ich static (Dauerfarbe) und breathing (sanftes Pulsieren). Hier drei repräsentative Effekte:
# LED 3 = Status/Logo, LEDs 1-2 = Duesenbeleuchtung
[led_effect activegreen_tool0]
leds:
neopixel:leds_tool0 (3)
autostart: false
frame_rate: 24
layers:
static 0 0 top (0.0, 1.0, 0.0) # gruen = aktiv
[led_effect nozzle_heating_tool0]
leds:
neopixel:leds_tool0 (1-2)
autostart: false
frame_rate: 24
layers:
breathing 3 1 top (1, 0.18, 0) # orange atmend = heizt
[led_effect nozzle_homing_tool0]
leds:
neopixel:leds_tool0 (1-2)
autostart: false
frame_rate: 24
layers:
breathing 3 1 top (0.0, 0.8, 1.0) # cyan atmend = homingStatus-Makros zum Umschalten
Damit ich die Effekte bequem aufrufen kann, packe ich sie in kleine status_*-Makros. Wichtig: vor dem Setzen eines neuen Effekts mit STOP_LED_EFFECTS aufräumen, sonst überlagern sich Effekte. So sieht der Aktiv- und Standby-Zustand aus:
[gcode_macro status_active_tool0]
gcode:
STOP_LED_EFFECTS LEDS="neopixel:leds_tool0"
SET_LED_EFFECT EFFECT=activegreen_tool0 RESTART=1 # Status gruen
SET_LED_EFFECT EFFECT=activeon_tool0 RESTART=1 # Duese weiss
[gcode_macro status_standby_tool0]
gcode:
STOP_LED_EFFECTS LEDS="neopixel:leds_tool0"
SET_LED_EFFECT EFFECT=standbybreathing_tool0 RESTART=1In den Druckablauf einhängen
Der eigentliche Trick: die Makros an den richtigen Stellen im Druckablauf aufrufen. Am Anfang von START_PRINT während Homing/Z-Tilt/Mesh den Homing-Status, kurz vor dem ersten Layer den Aktiv-Status; in END_PRINT zurück auf Standby:
[gcode_macro START_PRINT]
gcode:
status_homing_tool0 # cyan atmen waehrend Homing/Z-Tilt/Mesh
G28
Z_TILT_ADJUST
BED_MESH_CALIBRATE
# ... heizen, intro line ...
status_active_tool0 # weiss + gruen = Druck laeuft
[gcode_macro END_PRINT]
gcode:
# ... abkuehlen, parken ...
status_standby_tool0 # zurueck auf StandbyWas ich weggelassen habe
- Name-/Farb-Reste: In meiner Config heißt ein Effekt
standbyyellow_tool0, ist real aber auf Rot gesetzt – solche Copy-Paste-Überbleibsel aus fremden Profilen sind normal, einfach die RGB-Werte prüfen. - Fortschrittsbalken: Es gibt auch das Plugin klipper-neopixel (digitalninja) mit
NEOPIXEL_DISPLAYfür echte Prozent-Balken – das braucht aber einen längeren LED-Streifen; für drei LEDs am Toolhead ist led_effect die bessere Wahl. - Strombudget: Drei LEDs sind unkritisch; lange Streifen ziehen ordentlich 5 V – dann nicht blind ans Toolboard hängen.
- color_order testen: kann je nach LED-Charge zwischen GRB und RGB schwanken.
Fazit
Kleiner Aufwand, großer Alltagsnutzen: Du siehst den Druckerzustand auf einen Blick und hast gleichzeitig echtes Licht auf dem Bauteil. led_effect ist flexibel – Effekte einmal definieren, in die status_*-Makros packen, an den Druckablauf hängen, fertig. Wer mag, baut später Fehler-/Pause-Zustände (z. B. rotes Blinken bei M600) genauso dazu.
Anzeige · Affiliate-Link – kaufst du darüber, erhalte ich ggf. eine Provision. Für dich ändert sich am Preis nichts.