Перейти к основному содержанию

Конфигурация LED сигнальной лампы

LED сигнальная лампа (трехцветный сигнальный индикатор) используется для наглядного отображения состояния работы принтера. В этой статье описывается метод подключения и конфигурация в Klipper.

Описание напряжения

LED сигнальные лампы имеют различные спецификации входного напряжения. В этой статье в качестве примера используется версия 24V. Пожалуйста, убедитесь в соответствии напряжения в зависимости от фактически используемой модели.

Описание подключения

Определение цветов проводов

ЦветФункцияМесто подключения
СерыйОбщий плюсПодключить к плюсу источника питания 24В (например, к 24В питания вентилятора)
КрасныйУправление красным светомПодключить к контакту сигнала управления вентилятором на материнской плате
ЗеленыйУправление зеленым светомПодключить к контакту сигнала управления вентилятором на материнской плате
ЖелтыйУправление желтым светомПодключить к контакту сигнала управления вентилятором на материнской плате

Полярность управления

Материнская плата FLY по умолчанию использует способ управления по отрицательному полюсу:

  • Плюс сигнальной лампы (серый провод) подключается к источнику питания 24В
  • Провода управления сигнальной лампы (красный/зеленый/желтый) подключаются к выводам GPIO материнской платы
  • Когда материнская плата выдает низкий уровень, соответствующий цвет загорается
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

# Установка света в зависимости от состояния (низкий уровень активен: VALUE=1 означает, что вывод выдает низкий уровень, лампа горит)
{% 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...