✨ Redundant Part Cooling Fan (#21888)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
This commit is contained in:
@ -60,39 +60,40 @@
|
||||
*/
|
||||
void GcodeSuite::M106() {
|
||||
const uint8_t pfan = parser.byteval('P', _ALT_P);
|
||||
if (pfan >= _CNT_P) return;
|
||||
#if REDUNDANT_PART_COOLING_FAN
|
||||
if (pfan == REDUNDANT_PART_COOLING_FAN) return;
|
||||
#endif
|
||||
|
||||
if (pfan < _CNT_P) {
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
const uint16_t t = parser.intval('T');
|
||||
if (t > 0) return thermalManager.set_temp_fan_speed(pfan, t);
|
||||
#endif
|
||||
|
||||
#if ENABLED(EXTRA_FAN_SPEED)
|
||||
const uint16_t t = parser.intval('T');
|
||||
if (t > 0) return thermalManager.set_temp_fan_speed(pfan, t);
|
||||
#endif
|
||||
const uint16_t dspeed = parser.seen_test('A') ? thermalManager.fan_speed[active_extruder] : 255;
|
||||
|
||||
const uint16_t dspeed = parser.seen_test('A') ? thermalManager.fan_speed[active_extruder] : 255;
|
||||
uint16_t speed = dspeed;
|
||||
|
||||
uint16_t speed = dspeed;
|
||||
// Accept 'I' if temperature presets are defined
|
||||
#if PREHEAT_COUNT
|
||||
const bool got_preset = parser.seenval('I');
|
||||
if (got_preset) speed = ui.material_preset[_MIN(parser.value_byte(), PREHEAT_COUNT - 1)].fan_speed;
|
||||
#else
|
||||
constexpr bool got_preset = false;
|
||||
#endif
|
||||
|
||||
// Accept 'I' if temperature presets are defined
|
||||
#if PREHEAT_COUNT
|
||||
const bool got_preset = parser.seenval('I');
|
||||
if (got_preset) speed = ui.material_preset[_MIN(parser.value_byte(), PREHEAT_COUNT - 1)].fan_speed;
|
||||
#else
|
||||
constexpr bool got_preset = false;
|
||||
#endif
|
||||
if (!got_preset && parser.seenval('S'))
|
||||
speed = parser.value_ushort();
|
||||
|
||||
if (!got_preset && parser.seenval('S'))
|
||||
speed = parser.value_ushort();
|
||||
TERN_(FOAMCUTTER_XYUV, speed *= 2.55); // Get command in % of max heat
|
||||
|
||||
TERN_(FOAMCUTTER_XYUV, speed *= 2.55); // Get command in % of max heat
|
||||
// Set speed, with constraint
|
||||
thermalManager.set_fan_speed(pfan, speed);
|
||||
|
||||
// Set speed, with constraint
|
||||
thermalManager.set_fan_speed(pfan, speed);
|
||||
TERN_(LASER_SYNCHRONOUS_M106_M107, planner.buffer_sync_block(BLOCK_FLAG_SYNC_FANS));
|
||||
|
||||
TERN_(LASER_SYNCHRONOUS_M106_M107, planner.buffer_sync_block(BLOCK_FLAG_SYNC_FANS));
|
||||
|
||||
if (TERN0(DUAL_X_CARRIAGE, idex_is_duplicating())) // pfan == 0 when duplicating
|
||||
thermalManager.set_fan_speed(1 - pfan, speed);
|
||||
}
|
||||
if (TERN0(DUAL_X_CARRIAGE, idex_is_duplicating())) // pfan == 0 when duplicating
|
||||
thermalManager.set_fan_speed(1 - pfan, speed);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -101,6 +102,9 @@ void GcodeSuite::M106() {
|
||||
void GcodeSuite::M107() {
|
||||
const uint8_t pfan = parser.byteval('P', _ALT_P);
|
||||
if (pfan >= _CNT_P) return;
|
||||
#if REDUNDANT_PART_COOLING_FAN
|
||||
if (pfan == REDUNDANT_PART_COOLING_FAN) return;
|
||||
#endif
|
||||
|
||||
thermalManager.set_fan_speed(pfan, 0);
|
||||
|
||||
|
Reference in New Issue
Block a user