Помогите настроить прошивку Klipper
Модератор: Kaktus
-
- Сообщения: 522
- Зарегистрирован: 27 фев 2018, 10:22
- Имя: Дмитрий
- Откуда: Нижний Новгород
- Благодарил (а): 123 раза
- Поблагодарили: 15 раз
Re: Помогите настроить прошивку Klipper
Я что-то запутался. у меня двигатели вроде как 0.9 градуса на оборот. Получается по формуле 400*16*0.00625=40, но при этом оси перемещаются на половину длинны. Получается мне нужен rotation distance 20
-
- Сообщения: 1141
- Зарегистрирован: 31 авг 2017, 14:26
- Имя: Кирилл
- Откуда: Москва, CAO
- Благодарил (а): 38 раз
- Поблагодарили: 167 раз
- Контактная информация:
Re: Помогите настроить прошивку Klipper
поставить
Код: Выделить всё
[stepper_x]
...
full_steps_per_rotation: 400
...
По умолчанию там 200 стоит - 1.8 гр...
Re: Помогите настроить прошивку Klipper
Может кто знает как сделать так чтобы команды G кода в макросе выполнялись последовательно. т.к. они написаны в макросе? Мне необходимо сначала прочитать данные с датчика затем проанализировать их и соответственно выполнить действие. У меня Клиппер сначала проверяет условие а затем считывает значения с датчика. Команда G4 не помогает. Причём в цикле for происходит то же самое.
-
- Сообщения: 1141
- Зарегистрирован: 31 авг 2017, 14:26
- Имя: Кирилл
- Откуда: Москва, CAO
- Благодарил (а): 38 раз
- Поблагодарили: 167 раз
- Контактная информация:
Re: Помогите настроить прошивку Klipper
Вся суть G кода это последовательное выполнения команд.
Это же к датчику вопросы, а не к Gкоду. У них таймауты на считывания есть...
Конкретнее можно, в чем задача то?
Re: Помогите настроить прошивку Klipper
Необходимо с датчика температуры и давления BMP280 прочитать данные ,вывести в терминал , затем выполнить математическую операцию и на основе результата выполнить условный переход с присвоением переменной значения ИСТИНА или ЛОЖЬ. и всё это внутри цикла повторить N раз. Так вот .Клиппер сначала присваивает переменной значение N раз , затем считывает значение с датчика N раз и выводит на терминал.
-
- Сообщения: 1141
- Зарегистрирован: 31 авг 2017, 14:26
- Имя: Кирилл
- Откуда: Москва, CAO
- Благодарил (а): 38 раз
- Поблагодарили: 167 раз
- Контактная информация:
Re: Помогите настроить прошивку Klipper
Любые команды в gсode выполняются последовательно.
В marlin G4 без аргументов это синоним M400. А команда M400 как раз ждет выполнения предыдущих команд...
Скорее всего вы неправильно условие составили. Пример реализации в студию.
Re: Помогите настроить прошивку Klipper
Запускается макрос TEST_LCD Он вызывает макрос QUERY_BMP280 ,а тот IF_PRESS
[gcode_macro TEST_LCD]
variable_n: 3
variable_f: 0
gcode:
SET_FAN_SPEED FAN=klapan_propusk SPEED=1.0
G4 P1000
; QUERY_BMP280
QUERY_BMP280
; M400
G4
{% for i in range(n) if not printer["gcode_macro IF_PRESS"].flag|int == 1.0 %}
; M400
; G1 Z51.70 F300
MANUAL_STEPPER STEPPER=my_stepper0 ENABLE=1 SET_POSITION=0 MOVE=20.80 STOP_ON_ENDSTOP=0
G4 P3000
; QUERY_BMP280
QUERY_BMP280
; M400
G4
{% if printer["gcode_macro IF_PRESS"].flag|int == 0 %}
{action_respond_info("Iteraziy %.1f \n" % (printer["gcode_macro TEST_LCD"].f|int))}
{% else %}
{action_respond_info("Pipez %.1f \n" % (printer["gcode_macro TEST_LCD"].n|int))}
; M400
G4
{% endif %}
; SET_FAN_SPEED FAN=klapan_propusk SPEED=0.0
; G1 Z60.0 F1300
; SET_FAN_SPEED FAN=klapan_propusk SPEED=1.0
; G4 P500
CUP_ZERO
{% endfor %}
; M400
G4
{% if f == 0 %}
{action_respond_info("False %.1f \n" % (printer["gcode_macro TEST_LCD"].n|int))}
{% else %}
{action_respond_info("False %.1f \n" % (printer["gcode_macro TEST_LCD"].f|int))}
; PAUSE
{% endif %}
SET_FAN_SPEED FAN=klapan_propusk SPEED=0.0
[gcode_macro QUERY_BMP280]
variable_press: 0
gcode:
; G1 Z50.70 F300
; G4 P1500
{% set sensor = printer["bme280 my_sensor"] %}
; {% set press = sensor.pressure|float %}
{action_respond_info(
"press_bmp280: %.2f hPa\n"
"Temperature: %.2f C\n"
"Pressure: %.2f hPa\n" % (
printer["gcode_macro SAVE_PRESS_BMP280"].press_bmp280|float,sensor.temperature|float,sensor.pressure|float))}
; G1 Z55.0 F300
SET_GCODE_VARIABLE MACRO=QUERY_BMP280 VARIABLE=press VALUE={sensor.pressure|float}
M400
IF_PRESS
[gcode_macro IF_PRESS]
variable_flag: 0
gcode:
{% if printer["gcode_macro QUERY_BMP280"].press|float < (printer["gcode_macro SAVE_PRESS_BMP280"].press_bmp280|float - 20) %}
; SET_FAN_SPEED FAN=klapan_propusk SPEED=1.0
SET_GCODE_VARIABLE MACRO=IF_PRESS VARIABLE=flag VALUE=1
{% else %}
; SET_FAN_SPEED FAN=klapan_propusk SPEED=0.0
SET_GCODE_VARIABLE MACRO=IF_PRESS VARIABLE=flag VALUE=0
; action_respond_info("False")
{% endif %}
; {action_respond_info("Flag: %.1f \n" % (printer["gcode_macro QUERY_BMP280"].flag_lsd|int))}
{action_respond_info("Flag: %.1f \n" % (printer["gcode_macro IF_PRESS"].flag|int))}
А ВОТ РЕЗУЛЬТАТ
6:05:49 $ test_lcd
16:05:49 // Iteraziy 0.0
16:05:49 // Iteraziy 0.0
16:05:49 // Iteraziy 0.0
16:05:49 // False 3.0
16:05:49 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 1008.83 hPa
16:05:50 // Flag: 0.0
16:05:56 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 875.27 hPa
16:05:58 // Flag: 0.0
16:06:06 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 979.26 hPa
16:06:08 // Flag: 1.0
16:06:17 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 869.67 hPa
16:06:19 // Flag: 1.0
[gcode_macro TEST_LCD]
variable_n: 3
variable_f: 0
gcode:
SET_FAN_SPEED FAN=klapan_propusk SPEED=1.0
G4 P1000
; QUERY_BMP280
QUERY_BMP280
; M400
G4
{% for i in range(n) if not printer["gcode_macro IF_PRESS"].flag|int == 1.0 %}
; M400
; G1 Z51.70 F300
MANUAL_STEPPER STEPPER=my_stepper0 ENABLE=1 SET_POSITION=0 MOVE=20.80 STOP_ON_ENDSTOP=0
G4 P3000
; QUERY_BMP280
QUERY_BMP280
; M400
G4
{% if printer["gcode_macro IF_PRESS"].flag|int == 0 %}
{action_respond_info("Iteraziy %.1f \n" % (printer["gcode_macro TEST_LCD"].f|int))}
{% else %}
{action_respond_info("Pipez %.1f \n" % (printer["gcode_macro TEST_LCD"].n|int))}
; M400
G4
{% endif %}
; SET_FAN_SPEED FAN=klapan_propusk SPEED=0.0
; G1 Z60.0 F1300
; SET_FAN_SPEED FAN=klapan_propusk SPEED=1.0
; G4 P500
CUP_ZERO
{% endfor %}
; M400
G4
{% if f == 0 %}
{action_respond_info("False %.1f \n" % (printer["gcode_macro TEST_LCD"].n|int))}
{% else %}
{action_respond_info("False %.1f \n" % (printer["gcode_macro TEST_LCD"].f|int))}
; PAUSE
{% endif %}
SET_FAN_SPEED FAN=klapan_propusk SPEED=0.0
[gcode_macro QUERY_BMP280]
variable_press: 0
gcode:
; G1 Z50.70 F300
; G4 P1500
{% set sensor = printer["bme280 my_sensor"] %}
; {% set press = sensor.pressure|float %}
{action_respond_info(
"press_bmp280: %.2f hPa\n"
"Temperature: %.2f C\n"
"Pressure: %.2f hPa\n" % (
printer["gcode_macro SAVE_PRESS_BMP280"].press_bmp280|float,sensor.temperature|float,sensor.pressure|float))}
; G1 Z55.0 F300
SET_GCODE_VARIABLE MACRO=QUERY_BMP280 VARIABLE=press VALUE={sensor.pressure|float}
M400
IF_PRESS
[gcode_macro IF_PRESS]
variable_flag: 0
gcode:
{% if printer["gcode_macro QUERY_BMP280"].press|float < (printer["gcode_macro SAVE_PRESS_BMP280"].press_bmp280|float - 20) %}
; SET_FAN_SPEED FAN=klapan_propusk SPEED=1.0
SET_GCODE_VARIABLE MACRO=IF_PRESS VARIABLE=flag VALUE=1
{% else %}
; SET_FAN_SPEED FAN=klapan_propusk SPEED=0.0
SET_GCODE_VARIABLE MACRO=IF_PRESS VARIABLE=flag VALUE=0
; action_respond_info("False")
{% endif %}
; {action_respond_info("Flag: %.1f \n" % (printer["gcode_macro QUERY_BMP280"].flag_lsd|int))}
{action_respond_info("Flag: %.1f \n" % (printer["gcode_macro IF_PRESS"].flag|int))}
А ВОТ РЕЗУЛЬТАТ
6:05:49 $ test_lcd
16:05:49 // Iteraziy 0.0
16:05:49 // Iteraziy 0.0
16:05:49 // Iteraziy 0.0
16:05:49 // False 3.0
16:05:49 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 1008.83 hPa
16:05:50 // Flag: 0.0
16:05:56 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 875.27 hPa
16:05:58 // Flag: 0.0
16:06:06 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 979.26 hPa
16:06:08 // Flag: 1.0
16:06:17 // press_bmp280: 1008.99 hPa
// Temperature: 25.79 C
// Pressure: 869.67 hPa
16:06:19 // Flag: 1.0
-
- Сообщения: 1141
- Зарегистрирован: 31 авг 2017, 14:26
- Имя: Кирилл
- Откуда: Москва, CAO
- Благодарил (а): 38 раз
- Поблагодарили: 167 раз
- Контактная информация:
Re: Помогите настроить прошивку Klipper
ну если я правильно понял суть вопроса. Это связанно с внутренней работой action_respond_info.
Команда M118 выводит в консоль в том порядке в котором они были выполнены, а не блоками...
Re: Помогите настроить прошивку Klipper
Опытным путём определил, что все переменные должны быть определены вне цикла <For> или условного оператора <IF>. Нет смысла менять их внутри оператора и анализировать .
-
- Сообщения: 1141
- Зарегистрирован: 31 авг 2017, 14:26
- Имя: Кирилл
- Откуда: Москва, CAO
- Благодарил (а): 38 раз
- Поблагодарили: 167 раз
- Контактная информация:
Re: Помогите настроить прошивку Klipper
Вообще не понимаю о чем вы. У вас из 3 макросах только в 1 локальная переменная определена - sensor. И то это ссылка, а не само значения...
А variable_* определяются самим klipper в момент создания макроса...
Есть еще переменные которые создаются только в момент вызова макроса - "params.имя_параметра". Эти переменные могут существовать, а могут не существовать - необходимо делать проверку (is/is not)... через эти переменные и можно пробрасывать 'n' вместе с вызовом макроса: "TEST_LCD N3".
Re: Помогите настроить прошивку Klipper
Переменные создаваемые командой SET_GCODE_VARIABLE MACRO являются глобальными и доступны для других макросов.
-
- Сообщения: 1141
- Зарегистрирован: 31 авг 2017, 14:26
- Имя: Кирилл
- Откуда: Москва, CAO
- Благодарил (а): 38 раз
- Поблагодарили: 167 раз
- Контактная информация:
Re: Помогите настроить прошивку Klipper
Вы не можете этой командой ничего создать, насколько я помню. Вы просто меняете значения по умолчанию variable_* в макросе. И абсолютно пофигу, где вы это команду вызываете - for, if и тд.
Насколько я помню документацию. SET_GCODE_VARIABLE это вообще единственный способ изменить значения "variable_*".