Use realtime on filament sensor
Instead of incrementing a variable on every iteration on the filament sensor trigger loop, we now use a real time macro that ensure better repeatability and is easier to customize.
This commit is contained in:
parent
90e27ff21b
commit
cea54723e7
|
@ -33,6 +33,7 @@
|
||||||
#include "stepper.h"
|
#include "stepper.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
#include "printcounter.h"
|
#include "printcounter.h"
|
||||||
|
#include "macros.h"
|
||||||
|
|
||||||
#ifdef ANYCUBIC_TFT_MODEL
|
#ifdef ANYCUBIC_TFT_MODEL
|
||||||
#include "AnycubicTFT.h"
|
#include "AnycubicTFT.h"
|
||||||
|
@ -598,10 +599,26 @@ void AnycubicTFTClass::FilamentRunout()
|
||||||
|
|
||||||
if(FilamentTestStatus>FilamentTestLastStatus)
|
if(FilamentTestStatus>FilamentTestLastStatus)
|
||||||
{
|
{
|
||||||
FilamentRunoutCounter++;
|
// something changed! save current timestamp.
|
||||||
if(FilamentRunoutCounter>=31600)
|
const millis_t fil_ms = millis();
|
||||||
{
|
static millis_t fil_delay;
|
||||||
FilamentRunoutCounter=0;
|
|
||||||
|
// since this is inside a loop, only set delay time once
|
||||||
|
if (FilamentSetMillis){
|
||||||
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
|
SERIAL_ECHOLNPGM("DEBUG: Set filament trigger time");
|
||||||
|
#endif
|
||||||
|
// 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
// have three seconds passed?
|
||||||
|
if ((FilamentTestStatus>FilamentTestLastStatus) && (fil_ms>fil_delay)) {
|
||||||
|
#ifdef ANYCUBIC_TFT_DEBUG
|
||||||
|
SERIAL_ECHOLNPGM("DEBUG: 3000ms delay done");
|
||||||
|
#endif
|
||||||
#ifdef SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
if((card.sdprinting==true))
|
if((card.sdprinting==true))
|
||||||
{
|
{
|
||||||
|
@ -613,21 +630,20 @@ void AnycubicTFTClass::FilamentRunout()
|
||||||
}
|
}
|
||||||
else if((card.sdprinting==false))
|
else if((card.sdprinting==false))
|
||||||
{
|
{
|
||||||
#endif
|
|
||||||
ANYCUBIC_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
|
ANYCUBIC_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
|
||||||
ANYCUBIC_SERIAL_ENTER();
|
ANYCUBIC_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
|
||||||
#ifdef SDSUPPORT
|
FilamentTestLastStatus=FilamentTestStatus;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
FilamentTestLastStatus=FilamentTestStatus;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(FilamentTestStatus!=FilamentTestLastStatus)
|
else if(FilamentTestStatus!=FilamentTestLastStatus)
|
||||||
{
|
{
|
||||||
FilamentRunoutCounter=0;
|
// set the timestamps on the next loop again
|
||||||
|
FilamentSetMillis=true;
|
||||||
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");
|
||||||
|
|
|
@ -107,7 +107,8 @@ private:
|
||||||
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
||||||
char FilamentTestStatus=false;
|
char FilamentTestStatus=false;
|
||||||
char FilamentTestLastStatus=false;
|
char FilamentTestLastStatus=false;
|
||||||
long FilamentRunoutCounter=0;
|
bool FilamentSetMillis=true;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue