Hello, here is my programming; what do you think?
My engraver measures 600 on the X-axis, 800 on the Y-axis, and 63 on the Z-axis. The starting position is in the bottom left corner and is controlled by a switch. My laser head can engrave at speeds up to 20,000 mm/min. I will use an I2C relay to trigger my air pump.
board: MKS-DLC32 V2.1
name: Laser Chris 800x600
meta: 20/02/2026
arc_tolerance_mm: 0.002
junction_deviation_mm: 0.01
verbose_errors: false
report_inches: false
start:
must_home: false
deactivate_parking: true
check_limits: false
stepping:
engine: I2S_STATIC
idle_ms: 250
pulse_us: 4
dir_delay_us: 0
disable_delay_us: 0
segments: 12
axes:
shared_stepper_disable_pin: I2SO.0
shared_stepper_reset_pin: NO_PIN
x:
steps_per_mm: 80.000
max_rate_mm_per_min: 6000.000
acceleration_mm_per_sec2: 500.000
max_travel_mm: 600.000
soft_limits: true
homing:
cycle: 2
allow_single_axis: true
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 150.000
seek_mm_per_min: 1500.000
settle_ms: 250
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.36:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: true
pulloff_mm: 1.000
stepstick:
step_pin: I2SO.1
#change direction using direction_pin: I2SO.2:high
direction_pin: I2SO.2:low
y:
steps_per_mm: 80.000
max_rate_mm_per_min: 6000.000
acceleration_mm_per_sec2: 500.000
max_travel_mm: 800.000
soft_limits: true
homing:
cycle: 2
allow_single_axis: true
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 150.000
seek_mm_per_min: 1500.000
settle_ms: 250
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.35:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: true
pulloff_mm: 1.000
stepstick:
step_pin: I2SO.5
#change direction using direction_pin: I2SO.6:high
direction_pin: I2SO.6:low
z:
steps_per_mm: 533.330
max_rate_mm_per_min: 5000.000
acceleration_mm_per_sec2: 200.000
max_travel_mm: 63.000
soft_limits: true
homing:
cycle: 0
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 300.000
seek_mm_per_min: 1000.000
settle_ms: 250
seek_scaler: 1.100
feed_scaler: 1.100
motor0:
limit_neg_pin: gpio.34:low
limit_pos_pin: NO_PIN
limit_all_pin: NO_PIN
hard_limits: false
pulloff_mm: 1.000
stepstick:
step_pin: I2SO.3
#change direction using direction_pin: I2SO.4:high
direction_pin: I2SO.4
i2so:
bck_pin: gpio.16
data_pin: gpio.21
ws_pin: gpio.17
spi:
miso_pin: gpio.12
mosi_pin: gpio.13
sck_pin: gpio.14
sdcard:
cs_pin: gpio.15
card_detect_pin: NO_PIN
#user outputs can be controlled with M64 P0 (turn P0 on) and M65 P0 (turn P0 off)
#User Outputs | Wiki.js
#it seems only 4 ports work at a time, but all pins work
#on command makes pin 3.3V (high), off command 0V (low)
#available pins: 5,18,19,22,23,25,26,27,32,33,39,I2SO.7, SDA 0 / SCL 4
user_outputs:
digital0_pin: NO_PIN
digital1_pin: NO_PIN
digital2_pin: NO_PIN
digital3_pin: NO_PIN
#define user inputs
#all the following pins can have be assigned those pins:
#available pins: 5,18,19,22,23,25,26,27,32,33,39,I2SO.7, SDA 0 / SCL 4
#example: gpio.5:low:pu; # Pin 5, logic is active low (connected switch should pull to GND when pressed) and pull-up resistor activated
control:
safety_door_pin: NO_PIN
reset_pin: NO_PIN
feed_hold_pin: NO_PIN
cycle_start_pin: NO_PIN
macro0_pin: NO_PIN
macro1_pin: NO_PIN
macro2_pin: NO_PIN
macro3_pin: NO_PIN
#executed when macro_pin is activated
macros:
startup_line0:
startup_line1:
macro0:
macro1:
macro2:
macro3:
coolant:
flood_pin: NO_PIN
mist_pin: NO_PIN
delay_ms: 0
probe:
pin: gpio.22:low
check_mode_start: true
Laser:
pwm_hz: 1500
output_pin: gpio.32
enable_pin: I2SO.7
disable_with_s0: false
s0_with_disable: true
tool_num: 0
speed_map: 0=0.000% 1000=100.000%
off_on_alarm: true
#if you want to connect a small display to the board, define I2C bus and oled sections
#Displays | Wiki.js
#this configuration uses the SDA/SCL labeled pins available on the DLC32 board.
i2c0:
sda_pin: gpio.0
scl_pin: gpio.4
oled:
i2c_num: 0
i2c_address: 60
width: 128
height: 64
radio_delay_ms: 1000