Compare commits
15 Commits
1.0.1
...
1.0.3-Bugf
Author | SHA1 | Date | |
---|---|---|---|
|
eaf291bf05 | ||
|
3bbe852b3e | ||
|
fb927ee602 | ||
|
33f611d0cc | ||
|
f93857edb1 | ||
|
b1dfd1fec5 | ||
|
b6ad592a8d | ||
|
ecb83dcc13 | ||
|
e1ca8ee7b3 | ||
|
a11043e5bc | ||
|
38fdba59ed | ||
|
bebffb6823 | ||
|
a3b291f1cf | ||
|
0486080289 | ||
|
c20481ae96 |
@@ -771,7 +771,15 @@
|
||||
* Override with M203
|
||||
* X, Y, Z, E0 [, E1[, E2...]]
|
||||
*/
|
||||
#if ENABLED(KNUTWURST_MEGAS)
|
||||
#define DEFAULT_MAX_FEEDRATE { 500, 500, 6, 30 }
|
||||
#endif
|
||||
|
||||
#if DISABLED(KNUTWURST_MEGAS)
|
||||
#define DEFAULT_MAX_FEEDRATE { 500, 500, 6, 60 }
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
//#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
|
||||
#if ENABLED(LIMITED_MAX_FR_EDITING)
|
||||
@@ -799,10 +807,18 @@
|
||||
* M204 R Retract Acceleration
|
||||
* M204 T Travel Acceleration
|
||||
*/
|
||||
|
||||
#if ENABLED(KNUTWURST_MEGAS)
|
||||
#define DEFAULT_ACCELERATION 1600 // X, Y, Z and E acceleration for printing moves
|
||||
#define DEFAULT_RETRACT_ACCELERATION 1500 // E acceleration for retracts
|
||||
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
|
||||
#endif
|
||||
|
||||
#if DISABLED(KNUTWURST_MEGAS)
|
||||
#define DEFAULT_ACCELERATION 1600 // X, Y, Z and E acceleration for printing moves
|
||||
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
|
||||
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
|
||||
|
||||
#endif
|
||||
/**
|
||||
* Default Jerk limits (mm/s)
|
||||
* Override with M205 X Y Z E
|
||||
@@ -1500,9 +1516,9 @@
|
||||
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
|
||||
//#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release!
|
||||
#define EEPROM_CHITCHAT // Give feedback on EEPROM commands. Disable to save PROGMEM.
|
||||
#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
|
||||
//#define EEPROM_BOOT_SILENT // Keep M503 quiet and only give errors during first load
|
||||
#if ENABLED(EEPROM_SETTINGS)
|
||||
//#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
|
||||
#define EEPROM_AUTO_INIT // Init EEPROM automatically on any errors.
|
||||
#endif
|
||||
|
||||
//
|
||||
@@ -2334,9 +2350,10 @@
|
||||
* The new version is to be identified by a "TRIGORILLA1.1" lettering
|
||||
* on the upper left of the PCB silkscreen.
|
||||
*/
|
||||
#define TRIGORILLA_VERSION 1
|
||||
#define TRIGORILLA_VERSION 0
|
||||
|
||||
// Enable Anycubic TFT
|
||||
#define ANYCUBIC_TOUCHSCREEN
|
||||
#define ANYCUBIC_FILAMENT_RUNOUT_SENSOR
|
||||
#define ANYCUBIC_TFT_DEBUG
|
||||
//#define ANYCUBIC_TFT_DEBUG
|
||||
|
||||
|
@@ -1867,7 +1867,7 @@
|
||||
* Requires NOZZLE_PARK_FEATURE.
|
||||
* This feature is required for the default FILAMENT_RUNOUT_SCRIPT.
|
||||
*/
|
||||
#define ADVANCED_PAUSE_FEATURE
|
||||
//#define ADVANCED_PAUSE_FEATURE
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
#define PAUSE_PARK_RETRACT_FEEDRATE 60 // (mm/s) Initial retract feedrate.
|
||||
#define PAUSE_PARK_RETRACT_LENGTH 4 // (mm) Initial retract.
|
||||
|
@@ -43,10 +43,7 @@
|
||||
#include "../../feature/leds/leds.h"
|
||||
#endif
|
||||
|
||||
#if ENABLED(ANYCUBIC_TOUCHSCREEN)
|
||||
#include "../../lcd/anycubic_touchscreen.h"
|
||||
#endif
|
||||
#include "../../MarlinCore.h" // for wait_for_heatup and idle()
|
||||
#include "../../MarlinCore.h" // for wait_for_heatup, idle, startOrResumeJob
|
||||
|
||||
/**
|
||||
* M140: Set bed temperature
|
||||
@@ -83,15 +80,9 @@ void GcodeSuite::M190() {
|
||||
}
|
||||
else return;
|
||||
|
||||
#ifdef ANYCUBIC_TOUCHSCREEN
|
||||
AnycubicTouchscreen.BedHeatingStart();
|
||||
#endif
|
||||
|
||||
ui.set_status_P(thermalManager.isHeatingBed() ? GET_TEXT(MSG_BED_HEATING) : GET_TEXT(MSG_BED_COOLING));
|
||||
|
||||
thermalManager.wait_for_bed(no_wait_for_cooling);
|
||||
|
||||
//SERIAL_FLUSH();
|
||||
}
|
||||
|
||||
#endif // HAS_HEATED_BED
|
||||
|
@@ -38,7 +38,7 @@
|
||||
* Defines the version of the Marlin build. Not to be confused with
|
||||
* Marlin's own build number, e.g. 2.0.x.
|
||||
*/
|
||||
#define CUSTOM_BUILD_VERSION "1.0.1"
|
||||
#define CUSTOM_BUILD_VERSION "1.0.3"
|
||||
|
||||
#ifndef STRING_DISTRIBUTION_DATE
|
||||
#define STRING_DISTRIBUTION_DATE "2020-03-31"
|
||||
|
@@ -108,7 +108,7 @@ void AnycubicTouchscreenClass::Setup()
|
||||
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
||||
pinMode(19, INPUT);
|
||||
WRITE(19, HIGH);
|
||||
if (READ(19) == true)
|
||||
if ((READ(19) == true) && FilamentSensorEnabled)
|
||||
{
|
||||
HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
@@ -120,6 +120,7 @@ void AnycubicTouchscreenClass::Setup()
|
||||
|
||||
SelectedDirectory[0] = 0;
|
||||
SpecialMenu = false;
|
||||
FilamentSensorEnabled = true;
|
||||
|
||||
#ifdef STARTUP_CHIME
|
||||
buzzer.tone(250, 554); // C#5
|
||||
@@ -131,12 +132,12 @@ void AnycubicTouchscreenClass::Setup()
|
||||
|
||||
void AnycubicTouchscreenClass::WriteOutageEEPromData()
|
||||
{
|
||||
int pos = E2END - 256;
|
||||
//int pos = E2END - 256;
|
||||
}
|
||||
|
||||
void AnycubicTouchscreenClass::ReadOutageEEPromData()
|
||||
{
|
||||
int pos = E2END - 256;
|
||||
//int pos = E2END - 256;
|
||||
}
|
||||
|
||||
void AnycubicTouchscreenClass::KillTFT()
|
||||
@@ -166,7 +167,7 @@ void AnycubicTouchscreenClass::StartPrint()
|
||||
break;
|
||||
case 1:
|
||||
// regular sd pause
|
||||
queue.enqueue_now_P(PSTR("M24")); // unpark nozzle
|
||||
queue.inject_P(PSTR("M24")); // unpark nozzle
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||
SERIAL_EOL();
|
||||
@@ -197,7 +198,7 @@ void AnycubicTouchscreenClass::StartPrint()
|
||||
break;
|
||||
case 3:
|
||||
// paused by filament runout
|
||||
queue.enqueue_now_P(PSTR("M24")); // unpark nozzle and resume
|
||||
queue.inject_P(PSTR("M24")); // unpark nozzle and resume
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: M24 Resume from Filament Runout");
|
||||
#endif
|
||||
@@ -258,9 +259,9 @@ void AnycubicTouchscreenClass::PausePrint()
|
||||
SERIAL_ECHOLNPGM("DEBUG: Filament Runout Pause");
|
||||
#endif
|
||||
// filament runout, retract and beep
|
||||
queue.enqueue_now_P(PSTR("G91")); // relative mode
|
||||
queue.enqueue_now_P(PSTR("G1 E-3 F1800")); // retract 3mm
|
||||
queue.enqueue_now_P(PSTR("G90")); // absolute mode
|
||||
queue.inject_P(PSTR("G91")); // relative mode
|
||||
queue.inject_P(PSTR("G1 E-3 F1800")); // retract 3mm
|
||||
queue.inject_P(PSTR("G90")); // absolute mode
|
||||
buzzer.tone(200, 1567);
|
||||
buzzer.tone(200, 1174);
|
||||
buzzer.tone(200, 1567);
|
||||
@@ -269,7 +270,7 @@ void AnycubicTouchscreenClass::PausePrint()
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: Filament runout - Retract, beep and park.");
|
||||
#endif
|
||||
queue.enqueue_now_P(PSTR("M25")); // pause print and park nozzle
|
||||
queue.inject_P(PSTR("M25")); // pause print and park nozzle
|
||||
ai3m_pause_state = 3;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: M25 sent, parking nozzle");
|
||||
@@ -318,7 +319,7 @@ void AnycubicTouchscreenClass::StopPrint()
|
||||
void AnycubicTouchscreenClass::FilamentChangeResume()
|
||||
{
|
||||
// call M108 to break out of M600 pause
|
||||
queue.enqueue_now_P(PSTR("M108"));
|
||||
queue.inject_P(PSTR("M108"));
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: M108 Resume called");
|
||||
#endif
|
||||
@@ -345,7 +346,7 @@ void AnycubicTouchscreenClass::FilamentChangePause()
|
||||
#endif
|
||||
|
||||
// call M600 and set display state to paused
|
||||
queue.enqueue_now_P(PSTR("M600"));
|
||||
queue.inject_P(PSTR("M600"));
|
||||
TFTstate = ANYCUBIC_TFT_STATE_SDPAUSE_REQ;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: M600 Pause called");
|
||||
@@ -357,14 +358,14 @@ void AnycubicTouchscreenClass::ReheatNozzle()
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: Send reheat M108");
|
||||
#endif
|
||||
queue.enqueue_now_P(PSTR("M108"));
|
||||
queue.inject_P(PSTR("M108"));
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: Resume heating");
|
||||
#endif
|
||||
|
||||
// enable heaters again
|
||||
HOTEND_LOOP()
|
||||
thermalManager.reset_hotend_idle_timer(e);
|
||||
//thermalManager.reset_hotend_idle_timer(e);
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: Clear flags");
|
||||
#endif
|
||||
@@ -402,8 +403,8 @@ void AnycubicTouchscreenClass::ParkAfterStop()
|
||||
SERIAL_ECHOLNPGM("DEBUG: SDSTOP: Park XY");
|
||||
#endif
|
||||
}
|
||||
queue.enqueue_now_P(PSTR("M84")); // disable stepper motors
|
||||
queue.enqueue_now_P(PSTR("M27")); // force report of SD status
|
||||
queue.inject_P(PSTR("M84")); // disable stepper motors
|
||||
queue.inject_P(PSTR("M27")); // force report of SD status
|
||||
ai3m_pause_state = 0;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOPAIR(" DEBUG: AI3M Pause State: ", ai3m_pause_state);
|
||||
@@ -431,61 +432,61 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
|
||||
else if (strcmp(SelectedDirectory, "<pid tune hotend>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: PID Tune Hotend");
|
||||
queue.enqueue_now_P(PSTR("M106 S204\nM303 E0 S210 C15 U1"));
|
||||
queue.inject_P(PSTR("M106 S204\nM303 E0 S210 C15 U1"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<pid tune ultrabase>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: PID Tune Ultrabase");
|
||||
queue.enqueue_now_P(PSTR("M303 E-1 S60 C6 U1"));
|
||||
queue.inject_P(PSTR("M303 E-1 S60 C6 U1"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<save eeprom>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Save EEPROM");
|
||||
queue.enqueue_now_P(PSTR("M500"));
|
||||
queue.inject_P(PSTR("M500"));
|
||||
buzzer.tone(105, 1108);
|
||||
buzzer.tone(210, 1661);
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<load fw defaults>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults");
|
||||
queue.enqueue_now_P(PSTR("M502"));
|
||||
queue.inject_P(PSTR("M502"));
|
||||
buzzer.tone(105, 1661);
|
||||
buzzer.tone(210, 1108);
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<preheat ultrabase>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Preheat Ultrabase");
|
||||
queue.enqueue_now_P(PSTR("M140 S60"));
|
||||
queue.inject_P(PSTR("M140 S60"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<start mesh leveling>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Start Mesh Leveling");
|
||||
queue.enqueue_now_P(PSTR("G29 S1"));
|
||||
queue.inject_P(PSTR("G29 S1"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<next mesh point>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Next Mesh Point");
|
||||
queue.enqueue_now_P(PSTR("G29 S2"));
|
||||
queue.inject_P(PSTR("G29 S2"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<z up 0.1>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Z Up 0.1");
|
||||
queue.enqueue_now_P(PSTR("G91\nG1 Z+0.1\nG90"));
|
||||
queue.inject_P(PSTR("G91\nG1 Z+0.1\nG90"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<z up 0.02>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Z Up 0.02");
|
||||
queue.enqueue_now_P(PSTR("G91\nG1 Z+0.02\nG90"));
|
||||
queue.inject_P(PSTR("G91\nG1 Z+0.02\nG90"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<z down 0.02>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Z Down 0.02");
|
||||
queue.enqueue_now_P(PSTR("G91\nG1 Z-0.02\nG90"));
|
||||
queue.inject_P(PSTR("G91\nG1 Z-0.02\nG90"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<z down 0.1>") == 0)
|
||||
{
|
||||
SERIAL_ECHOLNPGM("Special Menu: Z Down 0.1");
|
||||
queue.enqueue_now_P(PSTR("G91\nG1 Z-0.1\nG90"));
|
||||
queue.inject_P(PSTR("G91\nG1 Z-0.1\nG90"));
|
||||
}
|
||||
else if (strcmp(SelectedDirectory, "<filamentchange pause>") == 0)
|
||||
{
|
||||
@@ -497,6 +498,21 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
|
||||
SERIAL_ECHOLNPGM("Special Menu: FilamentChange Resume");
|
||||
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)
|
||||
{
|
||||
SpecialMenu = false;
|
||||
@@ -541,6 +557,18 @@ void AnycubicTouchscreenClass::Ls()
|
||||
HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>");
|
||||
HARDWARE_SERIAL_PROTOCOLLNPGM("<Load FW Defaults>");
|
||||
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
|
||||
HARDWARE_SERIAL_PROTOCOLLNPGM("<Z Up 0.1>");
|
||||
@@ -555,8 +583,8 @@ void AnycubicTouchscreenClass::Ls()
|
||||
*/
|
||||
|
||||
default:
|
||||
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
|
||||
HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
|
||||
//HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
|
||||
//HARDWARE_SERIAL_PROTOCOLLNPGM("<Exit>");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -715,7 +743,7 @@ void AnycubicTouchscreenClass::StateHandler()
|
||||
#ifdef SDSUPPORT
|
||||
if (!card.isPrinting())
|
||||
{
|
||||
// It seems that we are to printing anymore... pause or stopped?
|
||||
// It seems that we are not printing anymore... pause or stopped?
|
||||
if (card.isFileOpen())
|
||||
{
|
||||
// File is still open --> paused
|
||||
@@ -769,7 +797,7 @@ void AnycubicTouchscreenClass::StateHandler()
|
||||
if (!IsParked)
|
||||
{
|
||||
// park head and retract 2mm
|
||||
queue.enqueue_now_P(PSTR("M125 L2"));
|
||||
queue.inject_P(PSTR("M125 L2"));
|
||||
IsParked = true;
|
||||
}
|
||||
}
|
||||
@@ -796,7 +824,7 @@ void AnycubicTouchscreenClass::StateHandler()
|
||||
HARDWARE_SERIAL_ENTER();
|
||||
if ((!card.isPrinting()) && (!planner.movesplanned()))
|
||||
{
|
||||
// enter idle display state
|
||||
queue.clear();
|
||||
TFTstate = ANYCUBIC_TFT_STATE_IDLE;
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("TFT Serial Debug: SD print stopped... J16");
|
||||
@@ -810,7 +838,7 @@ void AnycubicTouchscreenClass::StateHandler()
|
||||
// did we park the hotend already?
|
||||
if ((!IsParked) && (!card.isPrinting()) && (!planner.movesplanned()))
|
||||
{
|
||||
queue.enqueue_now_P(PSTR("G91\nG1 E-1 F1800\nG90")); //retract
|
||||
queue.inject_P(PSTR("G91\nG1 E-1 F1800\nG90")); //retract
|
||||
ParkAfterStop();
|
||||
IsParked = true;
|
||||
}
|
||||
@@ -823,68 +851,71 @@ void AnycubicTouchscreenClass::StateHandler()
|
||||
|
||||
void AnycubicTouchscreenClass::FilamentRunout()
|
||||
{
|
||||
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
||||
FilamentTestStatus = READ(19) & 0xff;
|
||||
|
||||
if (FilamentTestStatus > FilamentTestLastStatus)
|
||||
if(FilamentSensorEnabled == true)
|
||||
{
|
||||
// filament sensor pin changed, save current timestamp.
|
||||
const millis_t fil_ms = millis();
|
||||
static millis_t fil_delay;
|
||||
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
||||
FilamentTestStatus = READ(19) & 0xff;
|
||||
|
||||
// since this is inside a loop, only set delay time once
|
||||
if (FilamentSetMillis)
|
||||
if (FilamentTestStatus > FilamentTestLastStatus)
|
||||
{
|
||||
#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;
|
||||
}
|
||||
// filament sensor pin changed, save current timestamp.
|
||||
const millis_t fil_ms = millis();
|
||||
static millis_t fil_delay;
|
||||
|
||||
// if three seconds passed and the sensor is still triggered,
|
||||
// we trigger the filament runout status
|
||||
if ((FilamentTestStatus > FilamentTestLastStatus) && (ELAPSED(fil_ms, fil_delay)))
|
||||
{
|
||||
if (!IsParked)
|
||||
// since this is inside a loop, only set delay time once
|
||||
if (FilamentSetMillis)
|
||||
{
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: 3000ms delay done");
|
||||
#endif
|
||||
if (card.isPrinting())
|
||||
{
|
||||
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;
|
||||
}
|
||||
#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;
|
||||
}
|
||||
|
||||
// if three seconds passed and the sensor is still triggered,
|
||||
// we trigger the filament runout status
|
||||
if ((FilamentTestStatus > FilamentTestLastStatus) && (ELAPSED(fil_ms, fil_delay)))
|
||||
{
|
||||
if (!IsParked)
|
||||
{
|
||||
#ifdef ANYCUBIC_TFT_DEBUG
|
||||
SERIAL_ECHOLNPGM("DEBUG: 3000ms delay done");
|
||||
#endif
|
||||
if (card.isPrinting())
|
||||
{
|
||||
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()
|
||||
@@ -1171,7 +1202,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
else if ((CodeSeen('C')) && (!planner.movesplanned()))
|
||||
{
|
||||
if ((current_position[Z_AXIS] < 10))
|
||||
queue.enqueue_now_P(PSTR("G1 Z10")); //RASE Z AXIS
|
||||
queue.inject_P(PSTR("G1 Z10")); //RASE Z AXIS
|
||||
tempvalue = constrain(CodeValue(), 0, 275);
|
||||
thermalManager.setTargetHotend(tempvalue, 0);
|
||||
}
|
||||
@@ -1233,14 +1264,14 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if (CodeSeen('X') || CodeSeen('Y') || CodeSeen('Z'))
|
||||
{
|
||||
if (CodeSeen('X'))
|
||||
queue.enqueue_now_P(PSTR("G28 X"));
|
||||
queue.inject_P(PSTR("G28 X"));
|
||||
if (CodeSeen('Y'))
|
||||
queue.enqueue_now_P(PSTR("G28 Y"));
|
||||
queue.inject_P(PSTR("G28 Y"));
|
||||
if (CodeSeen('Z'))
|
||||
queue.enqueue_now_P(PSTR("G28 Z"));
|
||||
queue.inject_P(PSTR("G28 Z"));
|
||||
}
|
||||
else if (CodeSeen('C'))
|
||||
queue.enqueue_now_P(PSTR("G28"));
|
||||
queue.inject_P(PSTR("G28"));
|
||||
}
|
||||
break;
|
||||
case 22: // A22 move X/Y/Z or extrude
|
||||
@@ -1330,7 +1361,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if ((!planner.movesplanned()) && (TFTstate != ANYCUBIC_TFT_STATE_SDPAUSE) && (TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE))
|
||||
{
|
||||
if ((current_position[Z_AXIS] < 10))
|
||||
queue.enqueue_now_P(PSTR("G1 Z10")); // RAISE Z AXIS
|
||||
queue.inject_P(PSTR("G1 Z10")); // RAISE Z AXIS
|
||||
thermalManager.setTargetBed(50);
|
||||
thermalManager.setTargetHotend(200, 0);
|
||||
HARDWARE_SERIAL_SUCC_START;
|
||||
@@ -1341,7 +1372,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
|
||||
if ((!planner.movesplanned()) && (TFTstate != ANYCUBIC_TFT_STATE_SDPAUSE) && (TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE))
|
||||
{
|
||||
if ((current_position[Z_AXIS] < 10))
|
||||
queue.enqueue_now_P(PSTR("G1 Z10")); //RAISE Z AXIS
|
||||
queue.inject_P(PSTR("G1 Z10")); //RAISE Z AXIS
|
||||
thermalManager.setTargetBed(80);
|
||||
thermalManager.setTargetHotend(240, 0);
|
||||
|
||||
|
@@ -117,6 +117,7 @@ private:
|
||||
|
||||
char SelectedDirectory[30];
|
||||
uint8_t SpecialMenu = false;
|
||||
uint8_t FilamentSensorEnabled = true;
|
||||
|
||||
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
|
||||
char FilamentTestStatus = false;
|
||||
|
11
README.md
11
README.md
@@ -10,12 +10,14 @@ Diese Firmwarekonfiguration aktiviert viele neue erweitere Funktionen der Marlin
|
||||
* S-Kurven Beschleunigung
|
||||
* "Juction Deviation" statt des klassischen "Jerk"
|
||||
* Babystepping während des Druckvorgangs
|
||||
* Biliniar Bed Leveling (BBL)
|
||||
* Bilinear Bed Leveling (BBL)
|
||||
* Manuelles Editieren der Messpunkte
|
||||
* Volle Anycubic Touchscreen Unterstützung
|
||||
* Pause & Filamentwechselfunktion
|
||||
* Automatische EEPROM Initialisierung
|
||||
* Filament Runout Sensor kann im Menü deaktiviert werden)
|
||||
|
||||
Besser im Vergleich zu anderen Firmwares:
|
||||
Besser im Vergleich zu anderen Firmwares (Bugfixes):
|
||||
* Aufgeräumtes Special-Menü
|
||||
* Drucker hängt sich nicht auf, wenn man Dateien mit Sonderzeichen (oder Chinesisch) auf der SD Karte hat
|
||||
* Kein dummes "wackeln" der Düse nach Stoppen eines Druckvorgangs
|
||||
@@ -23,8 +25,11 @@ Besser im Vergleich zu anderen Firmwares:
|
||||
* Kein Abstürzen bei SD-Karten über 16 GB
|
||||
* Fehler "Melodie" bei Thermal Runaway Protection
|
||||
* Kein Aufhängen, wenn SD Karte + USB gleichzeitig genutzt wird
|
||||
* Kein Aufhängen wenn man Pause drückt
|
||||
* Kein Aufhängen, wenn das Filament leer ist.
|
||||
|
||||
Bevor du irgendwas machst, nachdem du die Firmware geupdated hast, gehe zu `Special Menu > Load FW Defaults` um alte Einstellungen zu löschen!
|
||||
Bekannte Bugs:
|
||||
* Filament Runout Sensor wird bei jedem Neustart wieder aktiviert
|
||||
|
||||
---
|
||||
|
||||
|
@@ -2224,4 +2224,4 @@
|
||||
// Enable Anycubic TFT
|
||||
#define ANYCUBIC_TOUCHSCREEN
|
||||
#define ANYCUBIC_FILAMENT_RUNOUT_SENSOR
|
||||
#define ANYCUBIC_TFT_DEBUG
|
||||
//#define ANYCUBIC_TFT_DEBUG
|
||||
|
Reference in New Issue
Block a user