Внешние кнопки управления (триггеры)

Открытая прошивка RepRapFirmware
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Внешние кнопки управления (триггеры)

Сообщение demonlibra »

Запуск команд и макросов возможен по нажатию внешних кнопок.
Using M581 - External Triggers and Building a Control Panel

Установил на передней панели корпуса кнопку и подключил нормально открытые контакты к выводам GND и io3.in разъема IO3.
Duet 3 Mini 5plus Wiring
Назначение входа
В файле /sys/config.g назначил вход управления командой M950: Create heater, fan, spindle or GPIO/servo pin

Код: Выделить всё

; Triggers
M950 J1 C"io3.in"
  • J1 - номер "виртуального" входа (цифру выбираете Вы).
  • C"io3.in" - цифровой вход на плате управления, к которому подключена кнопка.
Параметры триггера
В файле /sys/config.g создал триггер командой M581: Configure external trigger

Код: Выделить всё

; Triggers
M950 J1 C"io3.in"
M581 T2 P1 S1 R0
  • T2 - триггер с номером 2 (цифру выбираете Вы).
    С таким же номером должен быть создан файл trigger2.g, содержащий сценарий триггера.
    Триггеры с номерами 0 (аварийная остановка) и 1 (пауза при печати) заняты, поэтому используем номера от 2 до 32 (для DUET 3) или до 16 (для DUET 2).
  • P1 - триггер привязан к "виртуальному" входу 1, который назначен ранее командой M950 J1 C"io3.in"
  • S0 - срабатывание триггера при замыкании контакта.
    S1 - срабатывание триггера при размыкании контакта.
  • R0 - триггер срабатывает в любое время.
    R1 - триггер срабатывает только при печати с SD-карты.
    R2 - триггер срабатывает только НЕ при печати с SD-карты.
Сценарий триггера
Создал сценарий /sys/trigger2.g, переключает яркость светодиодной подсветки между 0.1 и 0.9 при каждом нажатии кнопки:

Код: Выделить всё

;tigger2.g

if {fans[5].actualValue < 0.9}
   M106 P5 S0.9
else
   M106 P5 S0.1

Тоже самое только с плавным изменением яркости.
Такой вариант не будет исполняться во время печати, так как требует большого количества времени.

Код: Выделить всё

;tigger2.g

if {fans[5].actualValue < 0.9}
   while {fans[5].actualValue < 0.9}
      G4 P20
      M106 P5 S{fans[5].actualValue+0.025}
else
   while {fans[5].actualValue > 0.1}
      G4 P20
      M106 P5 S{fans[5].actualValue-0.025}
Принудительная проверка триггера
Если необходимо проверить состояние триггера, используется команда M582: Check external trigger
  • T2 - проверить триггер с номером 2.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Внешние кнопки управления

Сообщение demonlibra »

Пример триггера для кнопки управления питанием
config.g

Код: Выделить всё

; ----------------- Triggers
M950 J1 C"io5.in"
M581 T2 P1 S0 R0
trigger2.g

Код: Выделить всё

if {state.atxPower}
   M81
else
   M80 C"!io4.out"
В качестве модуля управления питанием используется модуль Lerdge.
Плата управления запитана постоянно от дополнительного источника питания 5В.
Не бойся поломать. Бойся не починить ))
Изображение

Вернуться в «RepRapFirmware»