Upload Q1_Pro klipper

This commit is contained in:
CChen616
2024-05-10 10:41:37 +08:00
parent 81e23fab2b
commit 637c14aa97
459 changed files with 104963 additions and 109121 deletions

View File

@@ -5,6 +5,7 @@
# This file may be distributed under the terms of the GNU GPLv3 license.
import math, logging, collections
import chelper
from extras.homing import Homing
class error(Exception):
pass
@@ -299,6 +300,9 @@ class PrinterRail:
self.steppers = []
self.endstops = []
self.endstop_map = {}
# Reverse homing
self.endstops_reverse = []
self.endstop_map_reverse = {}
self.add_extra_stepper(config)
mcu_stepper = self.steppers[0]
self.get_name = mcu_stepper.get_name
@@ -354,6 +358,21 @@ class PrinterRail:
raise config.error(
"Invalid homing_positive_dir / position_endstop in '%s'"
% (config.get_name(),))
# Reverse homing
if self.get_name() == "stepper_z":
if config.get('endstop_pin_reverse', None):
self.reversed = False
self.position_endstop_reverse = config.getfloat("position_endstop_reverse")
self.homing_positive_dir_reverse = config.getboolean('homing_positive_dir_reverse')
self.homing_speed_reverse = config.getfloat('homing_speed_reverse', self.homing_speed, above=0.)
self.homing_retract_dist_reverse = 0
self.printer = config.get_printer()
self.gcode = self.printer.lookup_object('gcode')
self.printer.register_event_handler("klippy:ready", self.handle_ready)
self.printer.register_event_handler("homing:home_rails_end", self.handle_reverse_home_rails_end)
def handle_ready(self):
gcode = self.printer.lookup_object('gcode')
gcode.register_command("REVERSE_HOMING", self.cmd_REVERSE_HOMING)
def get_range(self):
return self.position_min, self.position_max
def get_homing_info(self):
@@ -371,6 +390,23 @@ class PrinterRail:
def add_extra_stepper(self, config):
stepper = PrinterStepper(config, self.stepper_units_in_radians)
self.steppers.append(stepper)
# logging.info("%s begin to add stepper" % (stepper._name))
if stepper._name == "stepper_z" or stepper._name == "stepper_z1":
endstop_pin_reverse = config.get('endstop_pin_reverse', None)
# logging.info("%s begin to add mcu endstop" % (stepper._name))
# logging.info(endstop_pin_reverse)
if endstop_pin_reverse:
printer = config.get_printer()
ppins = printer.lookup_object('pins')
pin_params = ppins.parse_pin(endstop_pin_reverse, True, True)
pin_name = "%s:%s" % (pin_params['chip_name'], pin_params['pin'])
mcu_endstop_reverse = ppins.setup_pin('endstop', endstop_pin_reverse)
self.endstop_map_reverse[pin_name] = {'endstop': mcu_endstop_reverse,
'invert': pin_params['invert'],
'pullup': pin_params['pullup']}
name = stepper.get_name(short=True)
self.endstops_reverse.append((mcu_endstop_reverse, name))
mcu_endstop_reverse.add_stepper(stepper)
if self.endstops and config.get('endstop_pin', None) is None:
# No endstop defined - use primary endstop
self.endstops[0][0].add_stepper(stepper)
@@ -402,6 +438,36 @@ class PrinterRail:
"must specify the same pullup/invert settings" % (
self.get_name(), pin_name))
mcu_endstop.add_stepper(stepper)
def homing_params_switch(self):
self.reversed = not self.reversed
self.endstop_map, self.endstop_map_reverse = self.endstop_map_reverse, self.endstop_map
self.endstops, self.endstops_reverse = self.endstops_reverse, self.endstops
self.position_endstop, self.position_endstop_reverse = self.position_endstop_reverse, self.position_endstop
self.homing_positive_dir, self.homing_positive_dir_reverse = self.homing_positive_dir_reverse, self.homing_positive_dir
self.homing_retract_dist, self.homing_retract_dist_reverse = self.homing_retract_dist_reverse, self.homing_retract_dist
self.homing_speed, self.homing_speed_reverse = self.homing_speed_reverse, self.homing_speed
# logging.info("homing_params_switch")
# logging.info(str(list(self.endstop_map)))
# logging.info(str(self.endstops))
# logging.info(self.position_endstop)
# logging.info(self.homing_positive_dir)
# logging.info(self.homing_retract_dist)
def cmd_REVERSE_HOMING(self, gcmd):
self.homing_params_switch()
try:
homing_state = Homing(self.printer)
homing_state.set_axes([2])
kin = self.printer.lookup_object('toolhead').get_kinematics()
kin.home(homing_state)
except self.printer.command_error:
if self.printer.is_shutdown():
raise self.printer.command_error(
"Homing failed due to printer shutdown")
self.printer.lookup_object('stepper_enable').motor_off()
raise
def handle_reverse_home_rails_end(self, homing_state, rails):
if self.reversed:
self.homing_params_switch()
def setup_itersolve(self, alloc_func, *params):
for stepper in self.steppers:
stepper.setup_itersolve(alloc_func, *params)