makerbase-mks / MKS-Robin

MKS Robin is a powerful 32-bit 3D printer control board with STM32F103ZET6 . Support Marlin2.0. Support MKS Robin TFT24/28/32... Screens. The motherboard integrates 5 AXIS interface, hot bed, 2 heating heads, 3 NTC100K, 2 MAX31855.Support MKS Robin WIFI for cloud printing.Supports firmware update by SD card…
https://es.aliexpress.com/item/32757129463.html?spm=a219c.12010612.8148356.9.5fc165f4oDUfFM
131 stars 129 forks source link

No manual Extrusion from menu, when using two extruders and one nozzle (mixing hotend or Y-adapter) #198

Open Hrumque opened 3 years ago

Hrumque commented 3 years ago

Two E0 and E1 stepsticks, two extruders, one nozzle (and one Th0 sensor and H0 heater), Y-adapter for switching between two filaments

Parameters in configure.h looks good: `#define EXTRUDERS 2

define SINGLENOZZLE

define PREVENT_COLD_EXTRUSION

define EXTRUDE_MINTEMP 150`

but ... in touch menu Tools > Extrusion works only one (first) extruder (ofcourse - after preheat nozzle above EXTRUDE_MINTEMP). After switched to second one - motor not working, on lcd "extrude lenght" is always 0.

I found that this is not PREVENT_COLD_EXTRUSION issue in ThermalManagment, but in touchpanel-lcd menu !

Marlin\src\lcd\extui\lib\mks_ui\draw_extrusion.cpp have hardcoded touch-buttons and functions, but there is no difference in code for HAS_SINGLE_NOZZLE mode:

case ID_E_ADD: if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) { ... }

case ID_E_DEC: if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) { ... }

for fast fixup I change uiCfg.curSprayerChoose].celsius to [0] and everything is working now ok for me. if (thermalManager.temp_hotend[0].celsius >= EXTRUDE_MINTEMP) { ... } if (thermalManager.temp_hotend[0].celsius >= EXTRUDE_MINTEMP) { .... }

but in official code should be something nice with #if ENABLED(HAS_SINGLE_NOZZLE)