Настройка светодиодного сигнального светильника
Светодиодный сигнальный светильник (трехцветный сигнальный светильник) используется для наглядного отображения состояния работы принтера. В данной статье описывается метод его подключения и настройка в Klipper.
Светодиодный сигнальный светильник имеет различные спецификации входного напряжения. В данной статье в качестве примера используется версия 24V. Пожалуйста, убедитесь, что напряжение соответствует вашей модели.
Описание подключения
Определение цветов проводов
| Цвет | Функция | Место подключения |
|---|---|---|
| Серый | Общий положительный | Подключить к положительному полюсу источника питания 24 В (например, 24 В от питания вентилятора) |
| Красный | Управление красным светом | Подключить к контакту сигнала управления вентилятором материнской платы |
| Зеленый | Управление зеленым светом | Подключить к контакту сигнала управления вентилятором материнской платы |
| Желтый | Управление желтым светом | Подключить к контакту сигнала управления вентилятором материнской платы |
Полярность управления
Материнские платы FLY по умолчанию используют управление по отрицательному полюсу:
- Положительный провод (серый) светодиодного сигнального светильника подключается к источнику питания 24 В.
- Провода управления (красный/зеленый/желтый) светодиодного сигнального светильника подключаются к контактам GPIO материнской платы.
- Когда материнская плата выдает низкий уровень, соответствующий цвет загорается.
Конфигурация 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: Установка состояния светодиодного сигнального светильника
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
Интеграция с макросами печати
Добавьте управление светодиодами в макросы начала и окончания печати для автоматического переключения состояния.
Макрос начала печати
[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автоматически берет на себя управление красным светом.