Filament runout sensor can be disabled via special menu.
This commit is contained in:
@@ -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,68 +851,71 @@ void AnycubicTouchscreenClass::StateHandler()
|
|||||||
|
|
||||||
void AnycubicTouchscreenClass::FilamentRunout()
|
void AnycubicTouchscreenClass::FilamentRunout()
|
||||||
{
|
{
|
||||||
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
if(FilamentSensorEnabled == true)
|
||||||
FilamentTestStatus = READ(19) & 0xff;
|
|
||||||
|
|
||||||
if (FilamentTestStatus > FilamentTestLastStatus)
|
|
||||||
{
|
{
|
||||||
// filament sensor pin changed, save current timestamp.
|
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
||||||
const millis_t fil_ms = millis();
|
FilamentTestStatus = READ(19) & 0xff;
|
||||||
static millis_t fil_delay;
|
|
||||||
|
|
||||||
// since this is inside a loop, only set delay time once
|
if (FilamentTestStatus > FilamentTestLastStatus)
|
||||||
if (FilamentSetMillis)
|
|
||||||
{
|
{
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
// filament sensor pin changed, save current timestamp.
|
||||||
SERIAL_ECHOLNPGM("DEBUG: Set filament trigger time");
|
const millis_t fil_ms = millis();
|
||||||
#endif
|
static millis_t fil_delay;
|
||||||
// set the delayed timestamp to 3000ms later
|
|
||||||
fil_delay = fil_ms + 3000UL;
|
|
||||||
// this doesn't need to run until the filament is recovered again
|
|
||||||
FilamentSetMillis = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if three seconds passed and the sensor is still triggered,
|
// since this is inside a loop, only set delay time once
|
||||||
// we trigger the filament runout status
|
if (FilamentSetMillis)
|
||||||
if ((FilamentTestStatus > FilamentTestLastStatus) && (ELAPSED(fil_ms, fil_delay)))
|
|
||||||
{
|
|
||||||
if (!IsParked)
|
|
||||||
{
|
{
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
SERIAL_ECHOLNPGM("DEBUG: 3000ms delay done");
|
SERIAL_ECHOLNPGM("DEBUG: Set filament trigger time");
|
||||||
#endif
|
#endif
|
||||||
if (card.isPrinting())
|
// set the delayed timestamp to 3000ms later
|
||||||
{
|
fil_delay = fil_ms + 3000UL;
|
||||||
ai3m_pause_state = 3;
|
// this doesn't need to run until the filament is recovered again
|
||||||
; // set runout pause flag
|
FilamentSetMillis = false;
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
}
|
||||||
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
|
||||||
SERIAL_EOL();
|
// if three seconds passed and the sensor is still triggered,
|
||||||
#endif
|
// we trigger the filament runout status
|
||||||
PausePrint();
|
if ((FilamentTestStatus > FilamentTestLastStatus) && (ELAPSED(fil_ms, fil_delay)))
|
||||||
}
|
{
|
||||||
else if (!card.isPrinting())
|
if (!IsParked)
|
||||||
{
|
{
|
||||||
HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
HARDWARE_SERIAL_ENTER();
|
SERIAL_ECHOLNPGM("DEBUG: 3000ms delay done");
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
#endif
|
||||||
SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout... J15");
|
if (card.isPrinting())
|
||||||
#endif
|
{
|
||||||
FilamentTestLastStatus = FilamentTestStatus;
|
ai3m_pause_state = 3;
|
||||||
}
|
; // set runout pause flag
|
||||||
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
|
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||||
|
SERIAL_EOL();
|
||||||
|
#endif
|
||||||
|
PausePrint();
|
||||||
|
}
|
||||||
|
else if (!card.isPrinting())
|
||||||
|
{
|
||||||
|
HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
|
||||||
|
HARDWARE_SERIAL_ENTER();
|
||||||
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
|
SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout... J15");
|
||||||
|
#endif
|
||||||
|
FilamentTestLastStatus = FilamentTestStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FilamentTestLastStatus = FilamentTestStatus;
|
||||||
}
|
}
|
||||||
FilamentTestLastStatus = FilamentTestStatus;
|
|
||||||
}
|
}
|
||||||
|
else if (FilamentTestStatus != FilamentTestLastStatus)
|
||||||
|
{
|
||||||
|
FilamentSetMillis = true; // set the timestamps on the next loop again
|
||||||
|
FilamentTestLastStatus = FilamentTestStatus;
|
||||||
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
|
SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout recovered");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if (FilamentTestStatus != FilamentTestLastStatus)
|
|
||||||
{
|
|
||||||
FilamentSetMillis = true; // set the timestamps on the next loop again
|
|
||||||
FilamentTestLastStatus = FilamentTestStatus;
|
|
||||||
#ifdef ANYCUBIC_TFT_DEBUG
|
|
||||||
SERIAL_ECHOLNPGM("TFT Serial Debug: Filament runout recovered");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void AnycubicTouchscreenClass::GetCommandFromTFT()
|
void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user