-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmacros.cfg
546 lines (471 loc) · 16.4 KB
/
macros.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
[gcode_macro PRINT_START_TEST]
gcode:
{% set BED_TEMP = params.BED_TEMP|default(60) %}
{% set EXTRA_BED_TEMP = params.EXTRA_BED_TEMP|default(5) %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190) %}
{% set CHAMBER_TEMP = params.CHAMBER_TEMP|default(30) %}
{% set FL_SIZE = params.SIZE|default("0_0_0_0")|string %}
{% set INITIAL_EXTRUDER = params.INITIAL_EXTRUDER|default(0) %}
M117 Testing
M118 Testing
SEARCH_VARS s="object"
#{% ECHO printer.exclude_objects.objects %}
[gcode_macro SEARCH_VARS]
gcode:
{% set search = params.S|lower %}
{% set ns = namespace() %}
{% for item in printer %}
{% if ' ' in item %}
{% set ns.path = ['printer', "['%s']" % (item), ''] %}
{% else %}
{% set ns.path = ['printer.', item, ''] %}
{% endif %}
{% if search in ns.path|lower %}
{ action_respond_info(ns.path|join) }
{% endif %}
{% if printer[item].items() %}
{% for childkey, child in printer[item].items() recursive %}
{% set ns.path = ns.path[:loop.depth|int + 1] %}
{% if ' ' in childkey %}
{% set null = ns.path.append("['%s']" % (childkey)) %}
{% else %}
{% set null = ns.path.append(".%s" % (childkey)) %}
{% endif %}
{% if child is mapping %}
{ loop(child.items()) }
{% else %}
{% if search in ns.path|lower %}
{ action_respond_info("%s : %s" % (ns.path|join, child)) }
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
#####################################################################
# Macros
# The following status macros are available:
# STATUS_READY
# STATUS_OFF
# STATUS_BUSY
# STATUS_HEATING
# STATUS_LEVELING
# STATUS_HOMING
# STATUS_CLEANING
# STATUS_MESHING
# STATUS_CALIBRATING_Z
# With additional macros for direct control:
# SET_NOZZLE_LEDS_ON
# SET_LOGO_LEDS_OFF
# SET_NOZZLE_LEDS_OFF
#####################################################################
# SET_LED_TEMPLATE LED=<led_name> [INDEX=<index>] TEMPLATE=temperature_color [param_sensor="'heater_bed'"] [param_cool_temp=20] [param_hot_temp=100] [param_brightness=1.0]
#
# To stop monitoring a temperature, and resume normal LED control
# SET_LED_TEMPLATE LED=<led_name> [INDEX=<index>]
[gcode_macro PreHeat]
gcode:
SET_FAN_SPEED FAN=nevermore SPEED=0.2
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=""
STOP_LED_EFFECTS
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=temperature_color param_sensor="'heater_bed'" param_cool_temp=25 param_hot_temp=115
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=115
M106 S255
G28
G90
G0 X175 Y175 Z50 F6000
[gcode_macro FullBeams]
gcode:
SET_PIN PIN=caselight VALUE=1.00
SET_PIN PIN=bedlight VALUE=1.00
SET_NOZZLE_LEDS_ON
[gcode_macro ToggleLights]
gcode:
{% if printer["output_pin caselight"].value == 1 %}
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
M117 Lights Off
M118 Lights Off
{% else %}
{% if printer["output_pin caselight"].value == 0 %}
SET_PIN PIN=caselight VALUE=0.2
M117 Lights On
M118 Lights On
{% else %}
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
M117 Full Beams
M118 Full Beams
{% endif %}
{% endif %}
[gcode_macro G32]
gcode:
BED_MESH_CLEAR
STATUS_HOMING
G28
STATUS_LEVELING
QUAD_GANTRY_LEVEL
STATUS_HOMING
G28
BED_MESH_PROFILE LOAD=default
G0 X175 Y175 Z30 F18000
STATUS_READY
# The following status macros are available:
# STATUS_READY
# STATUS_OFF
# STATUS_BUSY
# STATUS_HEATING
# STATUS_LEVELING
# STATUS_HOMING
# STATUS_CLEANING
# STATUS_MESHING
# STATUS_CALIBRATING_Z
# With additional macros for direct control:
# SET_NOZZLE_LEDS_ON
# SET_LOGO_LEDS_OFF
# SET_NOZZLE_LEDS_OFF
[gcode_macro PRINT_START]
gcode:
{% set BED_TEMP = params.BED_TEMP|default(60) %}
{% set EXTRA_BED_TEMP = params.EXTRA_BED_TEMP|default(5) %}
{% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(190) %}
{% set CHAMBER_TEMP = params.CHAMBER_TEMP|default(30) %}
{% set FL_SIZE = params.SIZE|default("0_0_0_0")|string %}
{% set INITIAL_EXTRUDER = params.INITIAL_EXTRUDER|default(0) %}
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=""
STOP_LED_EFFECTS
STATUS_BUSY
BED_MESH_CLEAR
;Lower acceleration
SET_VELOCITY_LIMIT ACCEL=1000 ACCEL_TO_DECEL=500
SET_PIN PIN=caselight VALUE=1
STATUS_HEATING
M140 S{BED_TEMP|int + EXTRA_BED_TEMP|int}
M117 Heating Bed
M118 Heating Bed
{% if printer.heater_bed.target > 95 %}
SET_FAN_SPEED FAN=nevermore SPEED=0.2 ;turn on Nevermore
{% endif %}
M117 Positioning Printhead
M118 Positioning Printhead
STATUS_HOMING
G90
G28
STATUS_HEATING
G0 X175 Y175 Z40 F6000
M117 Heating Extruder
M118 Heating Extruder
M104 S150
SET_LED_TEMPLATE LED=sb_leds INDEX=1 TEMPLATE=temperature_color param_sensor="'extruder'" param_cool_temp=25 param_hot_temp=150
SET_LED_TEMPLATE LED=sb_leds INDEX=2 TEMPLATE=temperature_color param_sensor="'heater_bed'" param_cool_temp=25 param_hot_temp={BED_TEMP|int + EXTRA_BED_TEMP|int}
SET_LED_TEMPLATE LED=sb_leds INDEX=3 TEMPLATE=temperature_color param_sensor="'heater_bed'" param_cool_temp=25 param_hot_temp={BED_TEMP|int + EXTRA_BED_TEMP|int}
M117 Waiting for Bed temperature
M118 Waiting for Bed temperature
M190 S{BED_TEMP|int + EXTRA_BED_TEMP|int}
{% if printer.heater_bed.target > 95 %}
M106 S255
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=temperature_color param_sensor="'enclosure_temp'" param_cool_temp=25 param_hot_temp={CHAMBER_TEMP}
M117 Waiting for Enclosure temperature
M118 Waiting for Enclosure temperature
TEMPERATURE_WAIT SENSOR="temperature_sensor enclosure_temp" MINIMUM={CHAMBER_TEMP}
M106 S0
{% endif %}
SET_LED_TEMPLATE LED=sb_leds INDEX=2 TEMPLATE=temperature_color param_sensor="'heater_bed'" param_cool_temp=25 param_hot_temp={BED_TEMP}
SET_LED_TEMPLATE LED=sb_leds INDEX=3 TEMPLATE=temperature_color param_sensor="'heater_bed'" param_cool_temp=25 param_hot_temp={BED_TEMP}
M117 Waiting for Bed temperature
M118 Waiting for Bed temperature
M190 S{BED_TEMP}
{% if printer.quad_gantry_level.applied == False %}
M117 Gantry Leveling
M118 Gantry Leveling
STATUS_LEVELING
QUAD_GANTRY_LEVEL
{% endif %}
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=""
STATUS_MESHING
ADAPTIVE_BED_MESH SIZE={FL_SIZE}
STATUS_CLEANING
G28 Z
CLEAN_NOZZLE
G90
G28 Z
M104 S{EXTRUDER_TEMP}
M117 Heating Extruder
M118 Heating Extruder
M109 S{EXTRUDER_TEMP}
{% if printer.heater_bed.target > 95 %}
SET_FAN_SPEED FAN=nevermore SPEED=0.1 ;Nevermore to printing speed
{% endif %}
G0 Z20 F12000
M83 ; use relative distances for extrusion
G92 E0 ; Reset Extruder
SET_VELOCITY_LIMIT ACCEL={printer.configfile.settings.printer.max_accel}
SET_VELOCITY_LIMIT ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel}
M117 Printing
STATUS_CLEANING
CLEAN_NOZZLE
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=""
STATUS_PRINTING
UPDATE_DELAYED_GCODE ID=PrintingLights DURATION=60 ;1mins
[gcode_macro PRINT_END]
# Use PRINT_END for the slicer ending script - please customise for your slicer of choice
gcode:
{% set unload = params.UNLOAD|default(1) %}
M400 ; wait for buffer to clear
G92 E0 ; zero the extruder
G1 E-10.0 F3600 ; retract filament
G91 ; relative positioning
G0 Z1.00 F20000 ; move nozzle to remove stringing
G90 ; absolute positioning
G0 X320 Y3 F18000 ; park nozzle at front (so the gantry is in a better balance while resting)
M220 S100
M221 S100
SET_LED_TEMPLATE LED=sb_leds INDEX=1 TEMPLATE=temperature_color param_sensor="'extruder'" param_cool_temp=25 param_hot_temp=220
SET_LED_TEMPLATE LED=sb_leds INDEX=2 TEMPLATE=temperature_color param_sensor="'heater_bed'" param_cool_temp=25 param_hot_temp={printer.heater_bed.target}
SET_LED_TEMPLATE LED=sb_leds INDEX=3 TEMPLATE=temperature_color param_sensor="'heater_bed'" param_cool_temp=25 param_hot_temp={printer.heater_bed.target}
{% if printer.heater_bed.target > 95 %}
SET_LED_TEMPLATE LED=sb_leds INDEX=1 TEMPLATE=temperature_color param_sensor="'extruder'" param_cool_temp=25 param_hot_temp=250
{% endif %}
TURN_OFF_HEATERS
M107 ; turn off fan
BED_MESH_CLEAR
flash
{% if printer.heater_bed.target > 95 %}
UPDATE_DELAYED_GCODE ID=StopCleaningAir DURATION=300 ;5mins
{% endif %}
M117 Done Printing
M118 Done Printing
UPDATE_DELAYED_GCODE ID=GoSleep DURATION=900 ;15mins
[delayed_gcode StopCleaningAir]
gcode:
SET_FAN_SPEED FAN=nevermore SPEED=0 ;turn off Nevermore
M117 Done Cleaning air
M118 Done Cleaning air
SET_FAN_SPEED FAN=Exhaust SPEED=1 ;turn on exhaust
M117 Exhausting
M118 Exhausting
UPDATE_DELAYED_GCODE ID=StopExhausting DURATION=60
[delayed_gcode StopExhausting]
gcode:
SET_FAN_SPEED FAN=Exhaust SPEED=0 ;turn off exhaust
M117 Done Exhausting
M118 Done Exhausting
[delayed_gcode GoSleep]
gcode:
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=""
STOP_LED_EFFECTS
STATUS_READY
[delayed_gcode PrintingLights]
gcode:
SET_LED_TEMPLATE LED=sb_leds TEMPLATE=""
STOP_LED_EFFECTS
SET_PIN PIN=caselight VALUE=0.1
[gcode_macro flash]
gcode:
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
G4 P500
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
G4 P500
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
G4 P500
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
G4 P500
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
G4 P500
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
G4 P500
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
G4 P500
SET_PIN PIN=caselight VALUE=1
SET_PIN PIN=bedlight VALUE=1
G4 P500
SET_PIN PIN=caselight VALUE=0
SET_PIN PIN=bedlight VALUE=0
# Home, get position, throw around toolhead, home again.
# If MCU stepper positions (first line in GET_POSITION) are greater than a full step different (your number of microsteps), then skipping occured.
# We only measure to a full step to accomodate for endstop variance.
# Example: TEST_SPEED SPEED=300 ACCEL=5000 ITERATIONS=10
[gcode_macro TEST_SPEED]
gcode:
# Speed
{% set speed = params.SPEED|default(printer.configfile.settings.printer.max_velocity)|int %}
# Iterations
{% set iterations = params.ITERATIONS|default(5)|int %}
# Acceleration
{% set accel = params.ACCEL|default(printer.configfile.settings.printer.max_accel)|int %}
# Bounding box (in case the machine min/maxes are not perfect)
{% set bound = params.BOUND|default(20)|int %}
# Set speed test bounds (machine minimum/maximum positions, inset by the bounding box)
{% set x_min = printer.toolhead.axis_minimum.x + bound %}
{% set x_max = printer.toolhead.axis_maximum.x - bound %}
{% set y_min = printer.toolhead.axis_minimum.y + bound %}
{% set y_max = printer.toolhead.axis_maximum.y - bound %}
# Save current gcode state (absolute/relative, etc)
SAVE_GCODE_STATE NAME=TEST_SPEED
# Absolute positioning
G90
# Set new limits
SET_VELOCITY_LIMIT VELOCITY={speed} ACCEL={accel} ACCEL_TO_DECEL={accel / 2}
# Home and get position for comparison later:
G28
# QGL if not already QGLd (only if QGL section exists in config)
{% if printer.configfile.settings.quad_gantry_level %}
{% if printer.quad_gantry_level.applied == False %}
QUAD_GANTRY_LEVEL
G28 Z
{% endif %}
{% endif %}
G0 X{printer.toolhead.axis_maximum.x} Y{printer.toolhead.axis_maximum.y} F{30 * 60}
G4 P1000
GET_POSITION
# Go to starting position
G0 X{x_min} Y{y_min} Z{bound + 10} F{speed * 60}
{% for i in range(iterations) %}
# Diagonals
G0 X{x_min} Y{y_min} F{speed * 60}
G0 X{x_max} Y{y_max} F{speed * 60}
G0 X{x_min} Y{y_min} F{speed * 60}
G0 X{x_max} Y{y_min} F{speed * 60}
G0 X{x_min} Y{y_max} F{speed * 60}
G0 X{x_max} Y{y_min} F{speed * 60}
# Box
G0 X{x_min} Y{y_min} F{speed * 60}
G0 X{x_min} Y{y_max} F{speed * 60}
G0 X{x_max} Y{y_max} F{speed * 60}
G0 X{x_max} Y{y_min} F{speed * 60}
{% endfor %}
# Restore max speed/accel/accel_to_decel to their configured values
SET_VELOCITY_LIMIT VELOCITY={printer.configfile.settings.printer.max_velocity} ACCEL={printer.configfile.settings.printer.max_accel} ACCEL_TO_DECEL={printer.configfile.settings.printer.max_accel_to_decel}
# Re-home XY and get position again for comparison:
G28 X Y
# Go to XY home positions (in case your homing override leaves it elsewhere)
G0 X{printer.toolhead.axis_maximum.x} Y{printer.toolhead.axis_maximum.y} F{30 * 60}
G4 P1000
GET_POSITION
# Restore previous gcode state (absolute/relative, etc)
RESTORE_GCODE_STATE NAME=TEST_SPEED
[gcode_macro PURGE_LINE]
# A purge line on the left of the bed to prime the extruder
gcode:
G92 E0 ; zero/reset extruder
G1 X2.2 Y2 Z0.3 F18000 ; move to start position
#G1 E+15 F150 ; extrude to put the pressure (-20 from purge macro)
G92 E0
G1 X2.2 Y100 Z0.25 F1500 E10 ; extrude the first line
G1 X2.5 Y100 Z0.3 F18000 ; move to side a little
G1 X2.5 Y2 Z0.25 F1500.0 E20 ; extrude the second line
G92 E0 ; zero/reset extruder
G1 Z2.0 E-0.1 F3000 ; move nozzle up and retract tiny bit
G92 E0
[gcode_macro UNLOAD_FILAMENT]
gcode:
M83
G1 E10 F300
G1 E-200 F1800
M82
[gcode_macro LOAD_FILAMENT]
gcode:
PARK
M83
G1 E90 F1800
G1 E50 F300
G1 E15 F150
M82
CLEAN_NOZZLE
G90
[gcode_macro PURGE]
gcode:
M83
G1 E50 F300
G1 E15 F150
M82
G90
[gcode_macro CENTER]
gcode:
G90
G0 X175 Y175 Z50 F6000
[gcode_macro FRONT]
gcode:
G90
G0 X175 Y15 Z125 F6000
[gcode_macro PARK]
gcode:
G90
G0 X300 Y355 Z5 F6000
[gcode_macro CHECKEXTRUDER]
gcode:
G90
G0 X300 Y15 Z125 F6000
[gcode_macro NOZZLECHANGE]
gcode:
STATUS_PRINTING
M104 S255
G90
G0 X175 Y15 Z170 F6000
######################################################################
# Filament Change
######################################################################
# M600: Filament Change. This macro will pause the printer, move the
# tool to the change position, and retract the filament 50mm. Adjust
# the retraction settings for your own extruder. After filament has
# been changed, the print can be resumed from its previous position
# with the "RESUME" gcode.
[pause_resume]
recover_velocity: 300.0
[gcode_macro M600]
gcode:
{% set X = params.X|default(175)|float %}
{% set Y = params.Y|default(0)|float %}
{% set Z = params.Z|default(10)|float %}
SAVE_GCODE_STATE NAME=M600_state
PAUSE
G91
G1 E-.8 F2700
G1 Z{Z}
G90
G1 X{X} Y{Y} F3000
G91
UNLOAD_FILAMENT
RESTORE_GCODE_STATE NAME=M600_state
# Convert Marlin linear advance (M900) commands to Klipper (SET_PRESSURE_ADVANCE) commands.
# Used in conjunction with Marlin's linear advance calibration tool:
# https://marlinfw.org/tools/lin_advance/k-factor.html
[gcode_macro M900]
gcode:
# Parameters
{% set pa = params.K|float %}
SET_PRESSURE_ADVANCE ADVANCE={pa}
[gcode_shell_command backup_cfg]
command: sh /home/pi/klipper_config/autocommit.sh
timeout: 30.
verbose: True
[gcode_macro BACKUP_CFG]
gcode:
RUN_SHELL_COMMAND CMD=backup_cfg