Filament runout sensor can be disabled via special menu.

This commit is contained in:
Knutwurst
2020-06-06 21:51:19 +02:00
parent b1dfd1fec5
commit f93857edb1
2 changed files with 90 additions and 58 deletions

View File

@@ -108,7 +108,7 @@ void AnycubicTouchscreenClass::Setup()
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR) #if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
pinMode(19, INPUT); pinMode(19, INPUT);
WRITE(19, HIGH); WRITE(19, HIGH);
if (READ(19) == true) if ((READ(19) == true) && FilamentSensorEnabled)
{ {
HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
@@ -120,6 +120,7 @@ void AnycubicTouchscreenClass::Setup()
SelectedDirectory[0] = 0; SelectedDirectory[0] = 0;
SpecialMenu = false; SpecialMenu = false;
FilamentSensorEnabled = true;
#ifdef STARTUP_CHIME #ifdef STARTUP_CHIME
buzzer.tone(250, 554); // C#5 buzzer.tone(250, 554); // C#5
@@ -497,6 +498,21 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
SERIAL_ECHOLNPGM("Special Menu: FilamentChange Resume"); SERIAL_ECHOLNPGM("Special Menu: FilamentChange Resume");
FilamentChangeResume(); FilamentChangeResume();
} }
else if (strcmp(SelectedDirectory, "<disable fil. sensor>") == 0)
{
SERIAL_ECHOLNPGM("Special Menu: Disable Filament Sensor");
FilamentSensorEnabled = false;
buzzer.tone(105, 1108);
buzzer.tone(105, 1108);
buzzer.tone(105, 1108);
}
else if (strcmp(SelectedDirectory, "<enable fil. sensor>") == 0)
{
SERIAL_ECHOLNPGM("Special Menu: Enable Filament Sensor");
FilamentSensorEnabled = true;
buzzer.tone(105, 1108);
buzzer.tone(105, 1108);
}
else if (strcmp(SelectedDirectory, "<exit>") == 0) else if (strcmp(SelectedDirectory, "<exit>") == 0)
{ {
SpecialMenu = false; SpecialMenu = false;
@@ -541,6 +557,18 @@ void AnycubicTouchscreenClass::Ls()
HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>"); HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>"); HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>");
break; break;
case 12: // Page 4
HARDWARE_SERIAL_PROTOCOLLNPGM("<Disable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Disable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Enable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Enable Fil. Sensor>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
break;
/* /*
case 12: // Fourth Page case 12: // Fourth Page
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.1>"); HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.1>");
@@ -555,8 +583,8 @@ void AnycubicTouchscreenClass::Ls()
*/ */
default: default:
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>"); //HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>"); //HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
break; break;
} }
} }
@@ -796,7 +824,7 @@ void AnycubicTouchscreenClass::StateHandler()
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
if ((!card.isPrinting()) && (!planner.movesplanned())) if ((!card.isPrinting()) && (!planner.movesplanned()))
{ {
// enter idle display state queue.clear();
TFTstate = ANYCUBIC_TFT_STATE_IDLE; TFTstate = ANYCUBIC_TFT_STATE_IDLE;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: SD print stopped... J16"); SERIAL_ECHOLNPGM("TFT Serial Debug: SD print stopped... J16");
@@ -823,7 +851,9 @@ void AnycubicTouchscreenClass::StateHandler()
void AnycubicTouchscreenClass::FilamentRunout() void AnycubicTouchscreenClass::FilamentRunout()
{ {
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR) if(FilamentSensorEnabled == true)
{
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
FilamentTestStatus = READ(19) & 0xff; FilamentTestStatus = READ(19) & 0xff;
if (FilamentTestStatus > FilamentTestLastStatus) if (FilamentTestStatus > FilamentTestLastStatus)
@@ -835,9 +865,9 @@ void AnycubicTouchscreenClass::FilamentRunout()
// since this is inside a loop, only set delay time once // since this is inside a loop, only set delay time once
if (FilamentSetMillis) if (FilamentSetMillis)
{ {
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: Set filament trigger time"); SERIAL_ECHOLNPGM("DEBUG: Set filament trigger time");
#endif #endif
// set the delayed timestamp to 3000ms later // set the delayed timestamp to 3000ms later
fil_delay = fil_ms + 3000UL; fil_delay = fil_ms + 3000UL;
// this doesn't need to run until the filament is recovered again // this doesn't need to run until the filament is recovered again
@@ -850,26 +880,26 @@ void AnycubicTouchscreenClass::FilamentRunout()
{ {
if (!IsParked) if (!IsParked)
{ {
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("DEBUG: 3000ms delay done"); SERIAL_ECHOLNPGM("DEBUG: 3000ms delay done");
#endif #endif
if (card.isPrinting()) if (card.isPrinting())
{ {
ai3m_pause_state = 3; ai3m_pause_state = 3;
; // set runout pause flag ; // set runout pause flag
#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();
#endif #endif
PausePrint(); PausePrint();
} }
else if (!card.isPrinting()) else if (!card.isPrinting())
{ {
HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout... J15"); SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout... J15");
#endif #endif
FilamentTestLastStatus = FilamentTestStatus; FilamentTestLastStatus = FilamentTestStatus;
} }
} }
@@ -880,11 +910,12 @@ void AnycubicTouchscreenClass::FilamentRunout()
{ {
FilamentSetMillis = true; // set the timestamps on the next loop again FilamentSetMillis = true; // set the timestamps on the next loop again
FilamentTestLastStatus = FilamentTestStatus; FilamentTestLastStatus = FilamentTestStatus;
#ifdef ANYCUBIC_TFT_DEBUG #ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout recovered"); SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout recovered");
#endif #endif
}
#endif
} }
#endif
} }
void AnycubicTouchscreenClass::GetCommandFromTFT() void AnycubicTouchscreenClass::GetCommandFromTFT()

View File

@@ -117,6 +117,7 @@ private:
char SelectedDirectory[30]; char SelectedDirectory[30];
uint8_t SpecialMenu = false; uint8_t SpecialMenu = false;
uint8_t FilamentSensorEnabled = true;
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR) #if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
char FilamentTestStatus = false; char FilamentTestStatus = false;