LED警告灯設定
LED警告灯(三色信号灯)は、プリンターの動作状態を直感的に表示します。この記事では、その配線方法とKlipper設定について説明します。
電圧に関する注意
LED警告灯には複数の入力電圧仕様があります。この記事では 24V バージョンを例に説明します。実際に使用するモデルに合わせて電圧が適合していることを確認してください。
配線説明
ケーブル色の定義
| 色 | 機能 | 接続箇所 |
|---|---|---|
| 灰色 | 共通プラス極 | 24V電源のプラス極に接続(例:ファン給電の24V) |
| 赤色 | 赤色灯制御 | マザーボードのファン制御信号ピンに接続 |
| 緑色 | 緑色灯制御 | マザーボードのファン制御信号ピンに接続 |
| 黄色 | 黄色灯制御 | マザーボードのファン制御信号ピンに接続 |
制御極性
FLYプリントマザーボードはデフォルトでマイナス極制御方式を採用しています:
- LED警告灯のプラス極(灰色線)は24V電源に接続
- LED警告灯の制御線(赤/緑/黄)はマザーボードのGPIOピンに接続
- マザーボードがLowレベルを出力すると、対応する色が点灯します
Loading...
Klipper設定
[output_pin led_red]
pin: PD12 # 赤色灯制御ピン
pwm: False
value: 0 # デフォルトで消灯
shutdown_value: 1 # Klipperエラー時に自動で赤色灯を点灯
[output_pin led_green]
pin: PD13 # 緑色灯制御ピン
pwm: False
value: 0
[output_pin led_yellow]
pin: PD14 # 黄色灯制御ピン
pwm: False
value: 0
ピンに関する注意
上記では PD12、PD13、PD14 をサンプルピンとして使用しています。実際のマザーボードで使用可能な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
プリントマクロへの統合
プリント開始および終了マクロにLED制御を追加し、状態の自動切り替えを実現します。
プリント開始マクロ
[gcode_macro PRINT_START]
description: プリント開始マクロ
gcode:
# ... その他の開始ロジック ...
# LEDをプリント中状態に設定
LED_STATUS STATUS=printing
# ... 加熱、ホーミング等の操作 ...
プリント終了マクロ
[gcode_macro PRINT_END]
description: プリント終了マクロ
gcode:
# ... その他の終了ロジック ...
# LEDをアイドル状態に設定
LED_STATUS STATUS=idle
自動状態検出(オプション)
プリントマクロを変更せずに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 により自動処理) |
| その他 | 上記状態が検出されない | 全消灯 |
動作原理
_LED_STATEマクロは前回の状態を格納し、比較に使用LED_AUTO_UPDATEは毎秒Klipperの状態を検出- 状態が変化した場合のみ
LED_STATUSを呼び出して灯りを更新し、点滅を防止 - KlipperがエラーでShutdownに移行すると、
shutdown_valueが自動的に赤色灯を制御
Loading...