8 Commits

Author SHA1 Message Date
Knutwurst
eaf291bf05 Bugfix for nozzle positioning via touchscreen, which was absolute instead of relative. 2020-06-06 23:55:40 +02:00
Knutwurst
3bbe852b3e Bump Version to 1.0.3 for next release 2020-06-06 23:08:31 +02:00
Knutwurst
fb927ee602 Optimized MEGA S extruder feedrate and acceleration values. 2020-06-06 23:04:49 +02:00
Knutwurst
33f611d0cc Update README.md regarding filament runout sensor. 2020-06-06 21:53:45 +02:00
Knutwurst
f93857edb1 Filament runout sensor can be disabled via special menu. 2020-06-06 21:51:19 +02:00
Knutwurst
b1dfd1fec5 Update README.md 2020-06-06 20:14:57 +02:00
Knutwurst
b6ad592a8d Automatically initialize EEPROM on any errors. 2020-06-06 20:13:26 +02:00
Oliver Köster
ecb83dcc13 Fix typo 2020-06-06 15:07:10 +02:00
5 changed files with 120 additions and 68 deletions

View File

@@ -771,7 +771,15 @@
* Override with M203 * Override with M203
* X, Y, Z, E0 [, E1[, E2...]] * 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 } #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 //#define LIMITED_MAX_FR_EDITING // Limit edit via M203 or LCD to DEFAULT_MAX_FEEDRATE * 2
#if ENABLED(LIMITED_MAX_FR_EDITING) #if ENABLED(LIMITED_MAX_FR_EDITING)
@@ -799,10 +807,18 @@
* M204 R Retract Acceleration * M204 R Retract Acceleration
* M204 T Travel 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_ACCELERATION 1600 // X, Y, Z and E acceleration for printing moves
#define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts #define DEFAULT_RETRACT_ACCELERATION 3000 // E acceleration for retracts
#define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves #define DEFAULT_TRAVEL_ACCELERATION 3000 // X, Y, Z acceleration for travel (non printing) moves
#endif
/** /**
* Default Jerk limits (mm/s) * Default Jerk limits (mm/s)
* Override with M205 X Y Z E * Override with M205 X Y Z E
@@ -1500,9 +1516,9 @@
#define EEPROM_SETTINGS // Persistent storage with M500 and M501 #define EEPROM_SETTINGS // Persistent storage with M500 and M501
//#define DISABLE_M503 // Saves ~2700 bytes of PROGMEM. Disable for release! //#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_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) #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 #endif
// //
@@ -2334,9 +2350,10 @@
* The new version is to be identified by a "TRIGORILLA1.1" lettering * The new version is to be identified by a "TRIGORILLA1.1" lettering
* on the upper left of the PCB silkscreen. * on the upper left of the PCB silkscreen.
*/ */
#define TRIGORILLA_VERSION 1 #define TRIGORILLA_VERSION 0
// Enable Anycubic TFT // Enable Anycubic TFT
#define ANYCUBIC_TOUCHSCREEN #define ANYCUBIC_TOUCHSCREEN
#define ANYCUBIC_FILAMENT_RUNOUT_SENSOR #define ANYCUBIC_FILAMENT_RUNOUT_SENSOR
#define ANYCUBIC_TFT_DEBUG //#define ANYCUBIC_TFT_DEBUG

View File

@@ -38,7 +38,7 @@
* Defines the version of the Marlin build. Not to be confused with * Defines the version of the Marlin build. Not to be confused with
* Marlin's own build number, e.g. 2.0.x. * Marlin's own build number, e.g. 2.0.x.
*/ */
#define CUSTOM_BUILD_VERSION "1.0.2" #define CUSTOM_BUILD_VERSION "1.0.3"
#ifndef STRING_DISTRIBUTION_DATE #ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2020-03-31" #define STRING_DISTRIBUTION_DATE "2020-03-31"

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,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()
@@ -1252,7 +1283,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
if (CodeSeen('F')) // Set feedrate if (CodeSeen('F')) // Set feedrate
movespeed = CodeValue(); movespeed = CodeValue();
queue.inject_P(PSTR("G91")); // relative coordinates queue.enqueue_now_P(PSTR("G91")); // relative coordinates
if (CodeSeen('X')) // Move in X direction if (CodeSeen('X')) // Move in X direction
{ {
@@ -1322,7 +1353,7 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
} }
queue.enqueue_one_now(value); queue.enqueue_one_now(value);
} }
queue.inject_P(PSTR("G90")); // absolute coordinates queue.enqueue_now_P(PSTR("G90")); // absolute coordinates
} }
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
break; break;

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;

View File

@@ -10,10 +10,12 @@ Diese Firmwarekonfiguration aktiviert viele neue erweitere Funktionen der Marlin
* S-Kurven Beschleunigung * S-Kurven Beschleunigung
* "Juction Deviation" statt des klassischen "Jerk" * "Juction Deviation" statt des klassischen "Jerk"
* Babystepping während des Druckvorgangs * Babystepping während des Druckvorgangs
* Biliniar Bed Leveling (BBL) * Bilinear Bed Leveling (BBL)
* Manuelles Editieren der Messpunkte * Manuelles Editieren der Messpunkte
* Volle Anycubic Touchscreen Unterstützung * Volle Anycubic Touchscreen Unterstützung
* Pause & Filamentwechselfunktion * Pause & Filamentwechselfunktion
* Automatische EEPROM Initialisierung
* Filament Runout Sensor kann im Menü deaktiviert werden)
Besser im Vergleich zu anderen Firmwares (Bugfixes): Besser im Vergleich zu anderen Firmwares (Bugfixes):
* Aufgeräumtes Special-Menü * Aufgeräumtes Special-Menü
@@ -26,7 +28,8 @@ Besser im Vergleich zu anderen Firmwares (Bugfixes):
* Kein Aufhängen wenn man Pause drückt * Kein Aufhängen wenn man Pause drückt
* Kein Aufhängen, wenn das Filament leer ist. * 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
--- ---