Add auto-power-down feature to 4MAX Pro.

This commit is contained in:
Knutwurst
2021-11-03 19:25:31 +01:00
parent 38962febfe
commit 0fae7ebb09
3 changed files with 41 additions and 2 deletions

View File

@@ -1273,6 +1273,7 @@ void AnycubicTouchscreenClass::StateHandler() {
TFTstate = ANYCUBIC_TFT_STATE_IDLE; TFTstate = ANYCUBIC_TFT_STATE_IDLE;
HARDWARE_SERIAL_PROTOCOLPGM("J14"); // J14 print done HARDWARE_SERIAL_PROTOCOLPGM("J14"); // J14 print done
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
powerOFFflag = 1;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: SD print done... J14"); SERIAL_ECHOLNPGM("TFT Serial Debug: SD print done... J14");
#endif #endif
@@ -1688,6 +1689,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
#ifdef SDSUPPORT #ifdef SDSUPPORT
if ((!planner.movesplanned()) && (TFTstate != ANYCUBIC_TFT_STATE_SDPAUSE) && (TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE) && (card.isFileOpen())) { if ((!planner.movesplanned()) && (TFTstate != ANYCUBIC_TFT_STATE_SDPAUSE) && (TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE) && (card.isFileOpen())) {
ai3m_pause_state = 0; ai3m_pause_state = 0;
powerOFFflag = 0;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state); SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
SERIAL_EOL(); SERIAL_EOL();
@@ -2100,9 +2102,25 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
#endif #endif
#if EITHER(KNUTWURST_4MAX, KNUTWURST_4MAXP2) #if EITHER(KNUTWURST_4MAX, KNUTWURST_4MAXP2)
case 41:
if(CodeSeen('O')) {
PrintdoneAndPowerOFF = true;
break;
} else if(CodeSeen('C')) {
PrintdoneAndPowerOFF = false;
break;
}
if(CodeSeen('S')) {
if(PrintdoneAndPowerOFF) {
HARDWARE_SERIAL_PROTOCOLPGM("J35 ");
HARDWARE_SERIAL_ENTER();
} else {
HARDWARE_SERIAL_PROTOCOLPGM("J34 ");
HARDWARE_SERIAL_ENTER();
}
}
case 42: case 42:
if(CaseLight == true) if(CaseLight == true) {
{
SERIAL_ECHOLNPGM("Case Light OFF"); SERIAL_ECHOLNPGM("Case Light OFF");
queue.inject_P(PSTR("M355 S1 P0")); queue.inject_P(PSTR("M355 S1 P0"));
CaseLight = false; CaseLight = false;
@@ -2284,11 +2302,29 @@ void AnycubicTouchscreenClass::GetCommandFromTFT() {
} }
#endif #endif
void PowerDown()
{
for(unsigned char i=0; i<3 ; i++)
{
WRITE(POWER_OFF_PIN,LOW);
delay(10);
WRITE(POWER_OFF_PIN,HIGH);
delay(10);
}
}
void AnycubicTouchscreenClass::CommandScan(){ void AnycubicTouchscreenClass::CommandScan(){
CheckHeaterError(); CheckHeaterError();
CheckSDCardChange(); CheckSDCardChange();
StateHandler(); StateHandler();
#if ANY(KNUTWURST_4MAX, KNUTWURST_4MAXP2)
if(PrintdoneAndPowerOFF && powerOFFflag && (thermalManager.degHotend(0) < 50 )) {
powerOFFflag = 0;
PowerDown();
}
#endif
if (TFTbuflen < (TFTBUFSIZE - 1)) { if (TFTbuflen < (TFTBUFSIZE - 1)) {
GetCommandFromTFT(); GetCommandFromTFT();
} }

View File

@@ -286,6 +286,8 @@ class AnycubicTouchscreenClass {
uint16_t HeaterCheckCount = 0; uint16_t HeaterCheckCount = 0;
bool IsParked = false; bool IsParked = false;
int currentFlowRate = 0; int currentFlowRate = 0;
bool PrintdoneAndPowerOFF = true;
bool powerOFFflag = 0;
#if defined(POWER_OUTAGE_TEST) #if defined(POWER_OUTAGE_TEST)
struct OutageDataStruct { struct OutageDataStruct {

View File

@@ -60,6 +60,7 @@
#define SDSS 53 #define SDSS 53
#define LED_PIN 13 #define LED_PIN 13
#define SD_DETECT_PIN 49 #define SD_DETECT_PIN 49
#define POWER_OFF_PIN 21
// Remap MOSFET pins to common usages: // Remap MOSFET pins to common usages:
#define RAMPS_D10_PIN TG_HEATER_0_PIN // HEATER_0_PIN is always RAMPS_D10_PIN in pins_RAMPS.h #define RAMPS_D10_PIN TG_HEATER_0_PIN // HEATER_0_PIN is always RAMPS_D10_PIN in pins_RAMPS.h