メインコンテンツにスキップ

LED 警告灯設定

LED 警告灯(三色信号灯)はプリンターの動作状態を視覚的に表示します。本記事ではその配線方法とKlipper設定について説明します。

電圧に関する注意

LED 警告灯には複数の入力電圧仕様がありますが、本記事では 24V バージョンを例に説明します。実際に使用するモデルに合わせて電圧が適合していることを確認してください。

配線説明

ケーブル色定義

機能配線位置
灰色共通プラス24V電源のプラス(例:ファン供給の24V)
赤色赤色灯制御マザーボードのファン制御信号ピン
緑色緑色灯制御マザーボードのファン制御信号ピン
黄色黄色灯制御マザーボードのファン制御信号ピン

制御極性

FLYプリントマザーボードは標準で負極制御方式を採用しています:

  • LED 警告灯のプラス(灰色線)は24V電源に接続
  • LED 警告灯の制御線(赤/緑/黄)はマザーボードのGPIOピンに接続
  • マザーボードがLow信号を出力すると、対応する色が点灯します
Loading...

Klipper設定

[output_pin led_red]
pin: <red_led_pin> # 赤色灯制御ピン
pwm: False
value: 0 # デフォルトは消灯
shutdown_value: 1 # Klipperエラー時に赤色灯が自動点灯

[output_pin led_green]
pin: <green_led_pin> # 緑色灯制御ピン
pwm: False
value: 0

[output_pin led_yellow]
pin: <yellow_led_pin> # 黄色灯制御ピン
pwm: False
value: 0
ピン説明

上記はプレースホルダーで制御ピンを表しています。実際に使用するマザーボードで利用可能なGPIOに合わせて変更してください。

赤色灯のフェイルセーフ機構

赤色灯は shutdown_value: 1 によりフェイルセーフを実現しています:

  • 通常動作:赤色灯はマクロで制御され、通常時は消灯状態を維持
  • エラー/切断時:KlipperがShutdown状態になると、マクロを介さず自動的に赤色灯が点灯
  • これはハードウェアレベルの安全機構であり、マクロのロジックに問題が生じても赤色灯が正しく障害を表示できます

状態マクロ

[gcode_macro LED_STATUS]
description: LED 警告灯の状態を設定
gcode:
{% set STATUS = params.STATUS|default("idle")|lower %}

# まずすべての灯を消灯
SET_PIN PIN=led_red VALUE=0
SET_PIN PIN=led_green VALUE=0
SET_PIN PIN=led_yellow VALUE=0

# 状態に応じて灯を設定(Lowアクティブ:VALUE=1 はピンがLow信号を出力、点灯)
{% if STATUS == "printing" %}
SET_PIN PIN=led_green VALUE=1
SET_PIN PIN=led_yellow VALUE=1
{% elif STATUS == "ready" %}
SET_PIN PIN=led_green VALUE=1
{% elif STATUS == "warning" %}
SET_PIN PIN=led_yellow VALUE=1
{% elif STATUS == "error" %}
SET_PIN PIN=led_red VALUE=1
{% endif %}

状態説明

状態パラメータ灯光効果使用シーン
printing緑+黄色灯点灯印刷中
ready緑灯点灯Klipper接続済み、プリンター準備完了
warning黄色灯点灯警告状態(例:温度異常だがエラーではない)
error赤色灯点灯エラー発生、対処が必要
idle全消灯アイドル状態(デフォルト)

呼び出し例:LED_STATUS STATUS=printing

自動状態検出(オプション)

印刷マクロを変更せずにKlipperの状態を自動検出する場合は、以下の設定を使用できます。

# 状態変数マクロ(前回の状態を記録し、重複更新によるチラつきを防止)
[gcode_macro _LED_STATE]
variable_last_status: "unknown"
gcode:
# このマクロは変数を保存するのみで、実行する処理は不要

# 自動状態検出
[delayed_gcode LED_AUTO_UPDATE]
initial_duration: 1
gcode:
{% set idle = printer.idle_timeout.state|string|upper %}
{% set printing = printer.print_stats.state|string|upper %}
{% set current = "unknown" %}

# 現在の状態を判断
{% if printing == "PRINTING" or printing == "PAUSED" %}
{% set current = "printing" %}
{% elif idle == "READY" or idle == "IDLE" %}
{% set current = "ready" %}
{% endif %}

# 状態が変化した場合のみLEDを更新し、チラつきを防止
{% set last = printer["gcode_macro _LED_STATE"].last_status %}
{% if current != last %}
SET_GCODE_VARIABLE MACRO=_LED_STATE VARIABLE=last_status VALUE='"{current}"'
LED_STATUS STATUS={current}
{% endif %}

# ポーリングを継続
UPDATE_DELAYED_GCODE ID=LED_AUTO_UPDATE DURATION=1

状態判断ロジック

Klipper状態判断条件LED効果
印刷中print_stats.state = printing/paused緑+黄色灯点灯
接続済みidle_timeout.state = ready/idle緑灯点灯
エラーKlipperがShutdown赤色灯点灯(shutdown_value により自動処理)
その他上記状態が検出されない全消灯

動作原理

  1. _LED_STATE マクロが前回の状態を保存し、比較に使用
  2. LED_AUTO_UPDATE が毎秒Klipperの状態を検出
  3. 状態が変化した場合のみ LED_STATUS を呼び出して灯光を更新し、チラつきを防止
  4. KlipperがエラーでShutdownに入った場合、shutdown_value が自動的に赤色灯を制御
Loading...