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