Skip to content

Commit be531e4

Browse files
authored
Merge pull request #456 from ArmoredTurtle/DEV, for Release v1.0.22
DEV to main for v1.0.22
2 parents 34f3be0 + 53a7341 commit be531e4

15 files changed

Lines changed: 1483 additions & 1224 deletions

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [2025-06-17]
9+
### Fixed
10+
- Updated `cycles_per_rotation` value to be less aggressive at 800 for print assist
11+
- Updated `enable_assist_weight` value to be 500 so print assist start once weight gets below 500 grams
12+
13+
## [2025-06-16]
14+
### Removed
15+
- Removed the version checking functionality for force updates from the `install-afc.sh` script.
16+
17+
### Fixed
18+
- Issue where espoolers would move way faster than normal when weight was below empty spool weight.
19+
20+
## [2025-06-15]
21+
### Added
22+
- Added support for the AFC-Pro board in the installer to install an 8-Lane Boxturtle.
23+
- The `RESET_AFC_MAPPING` macro will now also reset any runout lane configurations.
24+
825
## [2025-06-10]
926
### Added
1027
- Ability to turn on print assist if spool falls below a certain weight

config/mcu/AFC_Pro.cfg

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
[board_pins Turtle_1]
2+
mcu: Turtle_1
3+
aliases:
4+
M1_STEP=PE7 , M1_DIR=PG1 , M1_EN=PE10 , M1_UART=PE8 ,
5+
M2_STEP=PB2 , M2_DIR=PA3 , M2_EN=PG0 , M2_UART=PF15 ,
6+
M3_STEP=PA0 , M3_DIR=PC1 , M3_EN=PA2 , M3_UART=PA1 ,
7+
M4_STEP=PF9 , M4_DIR=PF8 , M4_EN=PC0 , M4_UART=PF10 ,
8+
M5_STEP=PF5 , M5_DIR=PF4 , M5_EN=PF7 , M5_UART=PF6 ,
9+
M6_STEP=PF1 , M6_DIR=PF0 , M6_EN=PF3 , M6_UART=PF2 ,
10+
M7_STEP=PE5 , M7_DIR=PE4 , M7_EN=PC13 , M7_UART=PE6 ,
11+
M8_STEP=PE1 , M8_DIR=PE0 , M8_EN=PE3 , M8_UART=PE2 ,
12+
13+
# suggested switch pin configurations
14+
HUB=PD0 ,
15+
TRG1=PD1 , TRG2=PD4 , TRG3=PD6 , TRG4=PG9 ,
16+
TRG5=PG11 , TRG6=PD3 , TRG7=PD2 , TRG8=PD5 ,
17+
EXT1=PD7 , EXT2=PG10 , EXT3=PG12 , EXT4=PG13 ,
18+
EXT5=PB7 , EXT6=PB6 , EXT7=PB5 , EXT8=PB4 ,
19+
TN_ADV=PB3 , TN_TRL=PG15 ,
20+
21+
# alternate names for endstop ports
22+
SW1=PD0 , SW2=PD1 , SW3=PD4 , SW4=PD6 , SW5=PG9 , SW6=PG11 ,
23+
SW7=PD3 , SW8=PD2 , SW9=PD5 , SW10=PD7 , SW11=PG10 , SW12=PG12, SW13=PG13 ,
24+
SW14=PB7 , SW15=PB6 , SW16=PB5 , SW17=PB4 , SW18=PB3 , SW19=PG15 , SW20=PG14 ,
25+
26+
MOT1_RWD=PE9 , MOT1_FWD=PE11 , MOT1_EN=PE15 ,
27+
MOT2_RWD=PE13 , MOT2_FWD=PE14 , MOT2_EN=PD9 ,
28+
MOT3_RWD=PB10 , MOT3_FWD=PB11 , MOT3_EN=PB13 ,
29+
MOT4_RWD=PB14 , MOT4_FWD=PB15 , MOT4_EN=PD11 ,
30+
MOT5_RWD=PD12 , MOT5_FWD=PD13 , MOT5_EN=PG3 ,
31+
MOT6_RWD=PD14 , MOT6_FWD=PD15 , MOT6_EN=PG5 ,
32+
MOT7_RWD=PC6 , MOT7_FWD=PC7 , MOT7_EN=PG7 ,
33+
MOT8_RWD=PC8 , MOT8_FWD=PA15 , MOT8_EN=PC11 ,
34+
35+
RGB1=PA5 , RGB2=PC14 , RGB3=PC15 , RGB4=PA4 ,

extras/AFC.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
try: from extras.AFC_stats import AFCStats
2828
except: raise error(ERROR_STR.format(import_lib="AFC_stats", trace=traceback.format_exc()))
2929

30-
AFC_VERSION="1.0.20"
30+
AFC_VERSION="1.0.22"
3131

3232
# Class for holding different states so its clear what all valid states are
3333
class State:
@@ -192,7 +192,7 @@ def __init__(self, config):
192192
# Setting to True enables espooler assist while printing
193193
self.enable_assist = config.getboolean("enable_assist", True)
194194
# Weight spool has to be below to activate print assist
195-
self.enable_assist_weight = config.getfloat("enable_assist_weight", 5000.0)
195+
self.enable_assist_weight = config.getfloat("enable_assist_weight", 500.0)
196196

197197
self.debug = config.getboolean('debug', False) # Setting to True turns on more debugging to show on console
198198
# Get debug and cast to boolean

extras/AFC_QuattroBox.py

Lines changed: 80 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,81 @@
1-
# Armored Turtle Automated Filament Changer
2-
#
3-
# Copyright (C) 2024 Armored Turtle
4-
#
5-
# This file may be distributed under the terms of the GNU GPLv3 license.
6-
from configparser import Error as error
7-
try:
8-
from extras.AFC_NightOwl import afcNightOwl
9-
except:
10-
raise error("Error trying to import AFC_NightOwl, please rerun install-afc.sh script in your AFC-Klipper-Add-On directory then restart klipper")
11-
12-
class afcQuattroBox(afcNightOwl):
13-
def __init__(self, config):
14-
super().__init__(config)
15-
self.type = config.get('type', 'Quattro_Box')
16-
17-
def handle_connect(self):
18-
"""
19-
Handle the connection event.
20-
This function is called when the printer connects. It looks up AFC info
21-
and assigns it to the instance variable `self.AFC`.
22-
"""
23-
super().handle_connect()
24-
25-
self.logo = '<span class=success--text>Quattro Box Ready</span>'
26-
27-
self.logo_error = '<span class=error--text>Quattro Box Not Ready</span>\n'
28-
self.set_logo_color(self.led_logo_color)
29-
30-
def lane_loaded(self, lane):
31-
"""
32-
Sets QuattroBox lanes led when lane is loaded and illuminates spool led's
33-
once a spool is loaded
34-
35-
:param lane: Lane object to set led
36-
"""
37-
super().lane_loaded(lane)
38-
self.afc.function.afc_led(lane.led_spool_illum, lane.led_spool_index)
39-
40-
def lane_unloaded(self, lane):
41-
"""
42-
Sets QuattroBox lanes led when lane is unloaded, and turns off spool
43-
illumination once a spool is ejected
44-
45-
:param lane: Lane object to set led
46-
"""
47-
super().lane_loaded(lane)
48-
self.afc.function.afc_led(self.afc.led_off, lane.led_spool_index)
49-
50-
def lane_loading(self, lane):
51-
"""
52-
Sets QuattroBox lanes led when lane is loading, and sets logo led's to
53-
`led_logo_loading` color
54-
55-
:param lane: Lane object to set led
56-
"""
57-
super().lane_loading(lane)
58-
self.set_logo_color( self.led_logo_loading )
59-
60-
def lane_tool_loaded(self, lane):
61-
"""
62-
Sets QuattroBox lanes led when lane is tool loaded, and sets logo to
63-
lanes color
64-
65-
:param lane: Lane object to set led
66-
"""
67-
super().lane_tool_loaded(lane)
68-
self.set_logo_color(lane.color)
69-
70-
def lane_tool_unloaded(self, lane):
71-
"""
72-
Sets QuattroBox lanes led when lane is tool unloaded, and sets logo
73-
color back to `led_logo_color` color
74-
75-
:param lane: Lane object to set led
76-
"""
77-
super().lane_tool_unloaded(lane)
78-
self.set_logo_color(self.led_logo_color)
79-
80-
def load_config_prefix(config):
1+
# Armored Turtle Automated Filament Changer
2+
#
3+
# Copyright (C) 2024 Armored Turtle
4+
#
5+
# This file may be distributed under the terms of the GNU GPLv3 license.
6+
from configparser import Error as error
7+
try:
8+
from extras.AFC_NightOwl import afcNightOwl
9+
except:
10+
raise error("Error trying to import AFC_NightOwl, please rerun install-afc.sh script in your AFC-Klipper-Add-On directory then restart klipper")
11+
12+
class afcQuattroBox(afcNightOwl):
13+
def __init__(self, config):
14+
super().__init__(config)
15+
self.type = config.get('type', 'Quattro_Box')
16+
17+
def handle_connect(self):
18+
"""
19+
Handle the connection event.
20+
This function is called when the printer connects. It looks up AFC info
21+
and assigns it to the instance variable `self.AFC`.
22+
"""
23+
super().handle_connect()
24+
25+
self.logo = '<span class=success--text>Quattro Box Ready</span>'
26+
27+
self.logo_error = '<span class=error--text>Quattro Box Not Ready</span>\n'
28+
self.set_logo_color(self.led_logo_color)
29+
30+
def lane_loaded(self, lane):
31+
"""
32+
Sets QuattroBox lanes led when lane is loaded and illuminates spool led's
33+
once a spool is loaded
34+
35+
:param lane: Lane object to set led
36+
"""
37+
super().lane_loaded(lane)
38+
self.afc.function.afc_led(lane.led_spool_illum, lane.led_spool_index)
39+
40+
def lane_unloaded(self, lane):
41+
"""
42+
Sets QuattroBox lanes led when lane is unloaded, and turns off spool
43+
illumination once a spool is ejected
44+
45+
:param lane: Lane object to set led
46+
"""
47+
super().lane_loaded(lane)
48+
self.afc.function.afc_led(self.afc.led_off, lane.led_spool_index)
49+
50+
def lane_loading(self, lane):
51+
"""
52+
Sets QuattroBox lanes led when lane is loading, and sets logo led's to
53+
`led_logo_loading` color
54+
55+
:param lane: Lane object to set led
56+
"""
57+
super().lane_loading(lane)
58+
self.set_logo_color( self.led_logo_loading )
59+
60+
def lane_tool_loaded(self, lane):
61+
"""
62+
Sets QuattroBox lanes led when lane is tool loaded, and sets logo to
63+
lanes color
64+
65+
:param lane: Lane object to set led
66+
"""
67+
super().lane_tool_loaded(lane)
68+
self.set_logo_color(lane.color)
69+
70+
def lane_tool_unloaded(self, lane):
71+
"""
72+
Sets QuattroBox lanes led when lane is tool unloaded, and sets logo
73+
color back to `led_logo_color` color
74+
75+
:param lane: Lane object to set led
76+
"""
77+
super().lane_tool_unloaded(lane)
78+
self.set_logo_color(self.led_logo_color)
79+
80+
def load_config_prefix(config):
8181
return afcQuattroBox(config)

0 commit comments

Comments
 (0)