Commit 585e86f3 authored by MagoKimbra's avatar MagoKimbra

Merge pull request #54 from simonepri/master

Update 4.1.4 dev
parents b97aff98 1bee3854
...@@ -45,6 +45,8 @@ ...@@ -45,6 +45,8 @@
* Firmware test * Firmware test
* Support for a filament diameter sensor, which adjusts extrusion volume * Support for a filament diameter sensor, which adjusts extrusion volume
* Support for a hall effect sensor for calucalte Wh. Example sensor ACS712 20A range Current Sensor Module. http://i.ebayimg.com/images/i/310506962976-0-1/s-l1000.jpg * Support for a hall effect sensor for calucalte Wh. Example sensor ACS712 20A range Current Sensor Module. http://i.ebayimg.com/images/i/310506962976-0-1/s-l1000.jpg
* Anti extruder idle oozing system
* Statistics save on SD
The default baudrate is 250000. This baudrate has less jitter and hence errors than the usual 115200 baud, but is less supported by drivers and host-environments. The default baudrate is 250000. This baudrate has less jitter and hence errors than the usual 115200 baud, but is less supported by drivers and host-environments.
......
### Version 4.1.4
* Improved firmare test dialog.
* Bugfix for SDCONFIG routine. Now the configuration file will be readed and created only on the root of the SD.
* Improved "Thermal Runaway Protection" now the system will be halted also if the thermistor is missing before the temperature is reached as suggested in Issue #35.
* Improved "Extruder Idle Oozing Prevention" by adding a more efficient way to detect planned movements. Now this feature seems stable and can be used by anyone.
* Bugfix for sdinit.
* Removed tab character from the code.
* Removed some unuseful spacing from the code.
### Version 4.1.3 ### Version 4.1.3
* Improved support for Delta, SCARA, COREXY & COREXZ kinematics. * Improved support for Delta, SCARA, COREXY & COREXZ kinematics.
* Improved stepper timer for high velocity driver and not. * Improved stepper timer for high velocity driver and not.
* Add calibrate surface width DELTA. * Add calibrate surface width DELTA.
* Improved serial comunication width most popular Host. * Improved serial comunication width most popular Host.
* Add Acceleration retraction for extruder. * Add Acceleration retraction for extruder.
* Add EJerk for extruder * Add EJerk for extruder.
* Remove limit for virtual extruder to 4. Now width MKR4 or NPr2 is possible have infinite extruder... * Remove limit for virtual extruder to 4. Now width MKR4 or NPr2 is possible have infinite extruder...
* Add M92 T* E (Set step per unit for any extruder) * Add M92 T* E (Set step per unit for any extruder).
* Add M203 T* E (Set max feedrate for any extruder) * Add M203 T* E (Set max feedrate for any extruder).
* Add M204 T* R (Set acc retraction for any extruder) * Add M204 T* R (Set acc retraction for any extruder).
* Add M205 T* E (Set E Jerk for any extruder) * Add M205 T* E (Set E Jerk for any extruder).
* Add Slot for G60 & G61 * Add Slot for G60 & G61.
* G60 Save current position coordinates (all axes, for active extruder). S<SLOT> - specifies memory slot # (0-based) to save into (default 0). * G60 Save current position coordinates (all axes, for active extruder). S<SLOT> - specifies memory slot # (0-based) to save into (default 0).
* G61 Apply/restore saved coordinates to the active extruder. X Y Z E - Value to add at stored coordinates. F<speed> - Set Feedrate. S<SLOT> - specifies memory slot # (0-based) to save into (default 0). * G61 Apply/restore saved coordinates to the active extruder. X Y Z E - Value to add at stored coordinates. F<speed> - Set Feedrate. S<SLOT> - specifies memory slot # (0-based) to save into (default 0).
### Version 4.1.2 ### Version 4.1.2
* Serial message function standardized for a better code style * Serial message function standardized for a better code style.
* Auto-Create configuration file if not exist * Auto-Create configuration file if not exist.
* FIX for sdcard crash problem during configuration file reading * FIX for sdcard crash problem during configuration file reading.
* FIX for some undefined SCARA defines * FIX for some undefined SCARA defines.
### Version 4.1.1 ### Version 4.1.1
* Add Power (Watt) Sensor * Added Power (Watt) Sensor.
* Add Anti OOZING * Added Anti OOZING.
* Add Power Consumation and Power On Time * Add Power Consumation and Power On Time.
* Configurations stored in the SD are updated in real-time (every SD_CFG_SECONDS seconds) also if you remove-insert the sd or you start your printer without the SD card. * Configurations stored in the SD are updated in real-time (every SD_CFG_SECONDS seconds) also if you remove-insert the sd or you start your printer without the SD card.
* Reduced code size, maybe a lot depending on your configuration. * Reduced code size, maybe a lot depending on your configuration.
* Improved support for Delta, SCARA, and COREXY kinematics. * Improved support for Delta, SCARA, and COREXY kinematics.
...@@ -45,4 +54,4 @@ ...@@ -45,4 +54,4 @@
* Moved GCode handling code into individual functions per-code. * Moved GCode handling code into individual functions per-code.
### Version 4.1.0 ### Version 4.1.0
* Initial release * Initial release.
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
// User-specified version info of this build to display in [Pronterface, etc] terminal window during // User-specified version info of this build to display in [Pronterface, etc] terminal window during
// startup. Implementation of an idea by Prof Braino to inform user that any changes made to this // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
// build by the user have been successfully uploaded into firmware. // build by the user have been successfully uploaded into firmware.
#define BUILD_VERSION "4.1.3 dev" #define BUILD_VERSION "4.1.4 dev"
#define STRING_DISTRIBUTION_DATE __DATE__ " " __TIME__ // build date and time #define STRING_DISTRIBUTION_DATE __DATE__ " " __TIME__ // build date and time
#define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes. #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.
#define STRING_SPLASH_LINE1 "v" BUILD_VERSION // will be shown during bootup in line 1 #define STRING_SPLASH_LINE1 "v" BUILD_VERSION // will be shown during bootup in line 1
......
...@@ -65,17 +65,18 @@ ...@@ -65,17 +65,18 @@
//#define SHOW_TEMP_ADC_VALUES //#define SHOW_TEMP_ADC_VALUES
/** /**
* extruder idle oozing prevention * Extruder Idle Oozing Prevention
* if the extruder motor is idle for more than SECONDS, and the temperature over MINTEMP, * If the extruder motor is idle for more than SECONDS, and the temperature is over IDLE_OOZING_MINTEMP,
* some filament is retracted. The filament retracted is re-added before the next extrusion * some filament is retracted. The filament retracted is re-added before the next extrusion
* or when the target temperature is less than EXTRUDE_MINTEMP and the actual temperature * or when the target temperature is less than IDLE_OOZING_MINTEMP and the actual temperature
* is greater than IDLE_OOZING_MINTEMP and less than IDLE_OOZING_FEEDRATE * is greater than IDLE_OOZING_MINTEMP.
* PS: Always remember to set your extruder target temperature to 0°C before shoudown the printer if you enable this feature.
*/ */
//#define IDLE_OOZING_PREVENT //#define IDLE_OOZING_PREVENT
#define IDLE_OOZING_MINTEMP EXTRUDE_MINTEMP + 5 #define IDLE_OOZING_MINTEMP EXTRUDE_MINTEMP + 5
#define IDLE_OOZING_MAXTEMP IDLE_OOZING_MINTEMP + 5 #define IDLE_OOZING_MAXTEMP IDLE_OOZING_MINTEMP + 5
#define IDLE_OOZING_FEEDRATE 45 //default feedrate for retracting (mm/s) #define IDLE_OOZING_FEEDRATE 50 //default feedrate for retracting (mm/s)
#define IDLE_OOZING_SECONDS 10 #define IDLE_OOZING_SECONDS 5
#define IDLE_OOZING_LENGTH 15 //default retract length (positive mm) #define IDLE_OOZING_LENGTH 15 //default retract length (positive mm)
#define IDLE_OOZING_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering) #define IDLE_OOZING_RECOVER_LENGTH 0 //default additional recover length (mm, added to retract length when recovering)
#define IDLE_OOZING_RECOVER_FEEDRATE 50 //default feedrate for recovering from retraction (mm/s) #define IDLE_OOZING_RECOVER_FEEDRATE 50 //default feedrate for recovering from retraction (mm/s)
......
...@@ -293,7 +293,8 @@ extern int fanSpeed; ...@@ -293,7 +293,8 @@ extern int fanSpeed;
#endif #endif
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
extern bool idleoozing_enabled; extern bool IDLE_OOZING_enabled;
extern void IDLE_OOZING_retract(bool retracting);
#endif #endif
#if ENABLED(FWRETRACT) #if ENABLED(FWRETRACT)
......
...@@ -443,13 +443,9 @@ unsigned long printer_usage_seconds; ...@@ -443,13 +443,9 @@ unsigned long printer_usage_seconds;
bool filament_changing = false; bool filament_changing = false;
#endif #endif
#if ENABLED(IDLE_OOZING_PREVENT) || ENABLED(EXTRUDER_RUNOUT_PREVENT)
unsigned long axis_last_activity = 0;
bool axis_is_moving = false;
#endif
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
bool idleoozing_enabled = true; unsigned long axis_last_activity = 0;
bool IDLE_OOZING_enabled = true;
bool IDLE_OOZING_retracted[EXTRUDERS] = ARRAY_BY_EXTRUDERS(false); bool IDLE_OOZING_retracted[EXTRUDERS] = ARRAY_BY_EXTRUDERS(false);
#endif #endif
...@@ -740,7 +736,7 @@ void setup() { ...@@ -740,7 +736,7 @@ void setup() {
ECHO_SMV(DB, MSG_FREE_MEMORY, freeMemory()); ECHO_SMV(DB, MSG_FREE_MEMORY, freeMemory());
ECHO_EMV(MSG_PLANNER_BUFFER_BYTES, (int)sizeof(block_t)*BLOCK_BUFFER_SIZE); ECHO_EMV(MSG_PLANNER_BUFFER_BYTES, (int)sizeof(block_t)*BLOCK_BUFFER_SIZE);
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
for (int8_t i = 0; i < BUFSIZE; i++) fromsd[i] = false; for (int8_t i = 0; i < BUFSIZE; i++) fromsd[i] = false;
#endif #endif
...@@ -810,13 +806,13 @@ void setup() { ...@@ -810,13 +806,13 @@ void setup() {
void loop() { void loop() {
if (commands_in_queue < BUFSIZE - 1) get_command(); if (commands_in_queue < BUFSIZE - 1) get_command();
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
card.checkautostart(false); card.checkautostart(false);
#endif #endif
if (commands_in_queue) { if (commands_in_queue) {
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
if (card.saving) { if (card.saving) {
char *command = command_queue[cmd_queue_index_r]; char *command = command_queue[cmd_queue_index_r];
...@@ -904,7 +900,7 @@ void get_command() { ...@@ -904,7 +900,7 @@ void get_command() {
command[serial_count] = 0; // terminate string command[serial_count] = 0; // terminate string
// this item in the queue is not from sd // this item in the queue is not from sd
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
fromsd[cmd_queue_index_w] = false; fromsd[cmd_queue_index_w] = false;
#endif #endif
...@@ -990,7 +986,7 @@ void get_command() { ...@@ -990,7 +986,7 @@ void get_command() {
} }
} }
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
if (!card.sdprinting || serial_count) return; if (!card.sdprinting || serial_count) return;
...@@ -2537,27 +2533,29 @@ static void clean_up_after_endstop_move() { ...@@ -2537,27 +2533,29 @@ static void clean_up_after_endstop_move() {
#endif //DELTA #endif //DELTA
#ifdef IDLE_OOZING_PREVENT #if ENABLED(IDLE_OOZING_PREVENT)
void IDLE_OOZING_retract(bool retracting) { void IDLE_OOZING_retract(bool retracting) {
if (retracting && !IDLE_OOZING_retracted[active_extruder]) { if (retracting && !IDLE_OOZING_retracted[active_extruder]) {
float oldFeedrate = feedrate;
set_destination_to_current(); set_destination_to_current();
current_position[E_AXIS]+=IDLE_OOZING_LENGTH/volumetric_multiplier[active_extruder]; current_position[E_AXIS] += IDLE_OOZING_LENGTH / volumetric_multiplier[active_extruder];
feedrate = IDLE_OOZING_FEEDRATE * 60;
plan_set_e_position(current_position[E_AXIS]); plan_set_e_position(current_position[E_AXIS]);
float oldFeedrate = feedrate;
feedrate=IDLE_OOZING_FEEDRATE*60;
IDLE_OOZING_retracted[active_extruder]=true;
prepare_move(); prepare_move();
feedrate = oldFeedrate; feedrate = oldFeedrate;
IDLE_OOZING_retracted[active_extruder] = true;
//ECHO_EM("-");
} }
else if (!retracting && IDLE_OOZING_retracted[active_extruder]) { else if (!retracting && IDLE_OOZING_retracted[active_extruder]) {
float oldFeedrate = feedrate;
set_destination_to_current(); set_destination_to_current();
current_position[E_AXIS]-=(IDLE_OOZING_LENGTH+IDLE_OOZING_RECOVER_LENGTH)/volumetric_multiplier[active_extruder]; current_position[E_AXIS] -= (IDLE_OOZING_LENGTH+IDLE_OOZING_RECOVER_LENGTH) / volumetric_multiplier[active_extruder];
feedrate = IDLE_OOZING_RECOVER_FEEDRATE * 60;
plan_set_e_position(current_position[E_AXIS]); plan_set_e_position(current_position[E_AXIS]);
float oldFeedrate = feedrate;
feedrate=IDLE_OOZING_RECOVER_FEEDRATE * 60;
IDLE_OOZING_retracted[active_extruder] = false;
prepare_move(); prepare_move();
feedrate = oldFeedrate; feedrate = oldFeedrate;
IDLE_OOZING_retracted[active_extruder] = false;
//ECHO_EM("+");
} }
} }
#endif #endif
...@@ -2740,12 +2738,17 @@ inline void wait_bed() { ...@@ -2740,12 +2738,17 @@ inline void wait_bed() {
* - Set the feedrate, if included * - Set the feedrate, if included
*/ */
void gcode_get_destination() { void gcode_get_destination() {
#if ENABLED(IDLE_OOZING_PREVENT)
if(code_seen(axis_codes[E_AXIS])) IDLE_OOZING_retract(false);
#endif
for (int i = 0; i < NUM_AXIS; i++) { for (int i = 0; i < NUM_AXIS; i++) {
if (code_seen(axis_codes[i])) if (code_seen(axis_codes[i])) {
destination[i] = code_value() + (axis_relative_modes[i] || relative_mode ? current_position[i] : 0); destination[i] = code_value() + (axis_relative_modes[i] || relative_mode ? current_position[i] : 0);
else }
else {
destination[i] = current_position[i]; destination[i] = current_position[i];
} }
}
if (code_seen('F')) { if (code_seen('F')) {
float next_feedrate = code_value(); float next_feedrate = code_value();
if (next_feedrate > 0.0) feedrate = next_feedrate; if (next_feedrate > 0.0) feedrate = next_feedrate;
...@@ -2762,11 +2765,6 @@ void unknown_command_error() { ...@@ -2762,11 +2765,6 @@ void unknown_command_error() {
*/ */
inline void gcode_G0_G1() { inline void gcode_G0_G1() {
if (IsRunning()) { if (IsRunning()) {
#ifdef IDLE_OOZING_PREVENT
IDLE_OOZING_retract(false);
#endif
gcode_get_destination(); // For X Y Z E F gcode_get_destination(); // For X Y Z E F
#ifdef FWRETRACT #ifdef FWRETRACT
...@@ -4018,7 +4016,7 @@ inline void gcode_M17() { ...@@ -4018,7 +4016,7 @@ inline void gcode_M17() {
enable_all_steppers(); enable_all_steppers();
} }
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
/** /**
* M20: List SD card to serial output * M20: List SD card to serial output
...@@ -4123,7 +4121,7 @@ inline void gcode_M31() { ...@@ -4123,7 +4121,7 @@ inline void gcode_M31() {
autotempShutdown(); autotempShutdown();
} }
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
/** /**
* M32: Select file and start SD Print * M32: Select file and start SD Print
...@@ -6489,7 +6487,7 @@ void process_next_command() { ...@@ -6489,7 +6487,7 @@ void process_next_command() {
case 17: //M17 - Enable/Power all stepper motors case 17: //M17 - Enable/Power all stepper motors
gcode_M17(); break; gcode_M17(); break;
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
case 20: // M20 - list SD card case 20: // M20 - list SD card
gcode_M20(); break; gcode_M20(); break;
case 21: // M21 - init SD card case 21: // M21 - init SD card
...@@ -6829,7 +6827,7 @@ void FlushSerialRequestResend() { ...@@ -6829,7 +6827,7 @@ void FlushSerialRequestResend() {
void ok_to_send() { void ok_to_send() {
refresh_cmd_timeout(); refresh_cmd_timeout();
#ifdef SDSUPPORT #if ENABLED(SDSUPPORT)
if (fromsd[cmd_queue_index_r]) return; if (fromsd[cmd_queue_index_r]) return;
#endif #endif
ECHO_S(OK); ECHO_S(OK);
...@@ -7027,11 +7025,6 @@ void prepare_move() { ...@@ -7027,11 +7025,6 @@ void prepare_move() {
if (!prepare_move_cartesian()) return; if (!prepare_move_cartesian()) return;
#endif #endif
#ifdef IDLE_OOZING_PREVENT || EXTRUDER_RUNOUT_PREVENT
axis_last_activity = millis();
axis_is_moving = false;
#endif
set_current_to_destination(); set_current_to_destination();
} }
...@@ -7501,8 +7494,9 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) { ...@@ -7501,8 +7494,9 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) {
} }
#endif #endif
#ifdef IDLE_OOZING_PREVENT #if ENABLED(IDLE_OOZING_PREVENT)
if (degHotend(active_extruder) > IDLE_OOZING_MINTEMP && !(debugLevel & DEBUG_DRYRUN) && !axis_is_moving && idleoozing_enabled) { if (blocks_queued()) axis_last_activity = millis();
if (degHotend(active_extruder) > IDLE_OOZING_MINTEMP && !(debugLevel & DEBUG_DRYRUN) && IDLE_OOZING_enabled) {
#ifdef FILAMENTCHANGEENABLE #ifdef FILAMENTCHANGEENABLE
if (!filament_changing) if (!filament_changing)
#endif #endif
......
...@@ -26,7 +26,7 @@ CardReader::CardReader() { ...@@ -26,7 +26,7 @@ CardReader::CardReader() {
OUT_WRITE(SDPOWER, HIGH); OUT_WRITE(SDPOWER, HIGH);
#endif //SDPOWER #endif //SDPOWER
next_autostart_ms = millis() + 5000; next_autostart_ms = millis() + SPLASH_SCREEN_DURATION;
} }
char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters char *createFilename(char *buffer, const dir_t &p) { //buffer > 12characters
...@@ -222,14 +222,20 @@ void CardReader::initsd() { ...@@ -222,14 +222,20 @@ void CardReader::initsd() {
*/ */
} }
void CardReader::setroot() { void CardReader::setroot(bool temporary) {
/*if (!workDir.openRoot(&volume)) { /*if (!workDir.openRoot(&volume)) {
ECHO_EM(MSG_SD_WORKDIR_FAIL); ECHO_EM(MSG_SD_WORKDIR_FAIL);
}*/ }*/
if(temporary) lastDir = workDir;
workDir = root; workDir = root;
curDir = &workDir; curDir = &workDir;
} }
void CardReader::setlast() {
workDir = lastDir;
curDir = &workDir;
}
void CardReader::release() { void CardReader::release() {
sdprinting = false; sdprinting = false;
cardOK = false; cardOK = false;
...@@ -441,7 +447,7 @@ void CardReader::write_command(char *buf) { ...@@ -441,7 +447,7 @@ void CardReader::write_command(char *buf) {
} }
void CardReader::checkautostart(bool force) { void CardReader::checkautostart(bool force) {
if (!force && (!autostart_stilltocheck || next_autostart_ms < millis())) if (!force && (!autostart_stilltocheck || next_autostart_ms >= millis()))
return; return;
autostart_stilltocheck = false; autostart_stilltocheck = false;
......
...@@ -42,7 +42,8 @@ public: ...@@ -42,7 +42,8 @@ public:
void ls(); void ls();
void chdir(const char * relpath); void chdir(const char * relpath);
void updir(); void updir();
void setroot(); void setroot(bool temporary = false);
void setlast();
FORCE_INLINE bool isFileOpen() { return file.isOpen(); } FORCE_INLINE bool isFileOpen() { return file.isOpen(); }
...@@ -57,7 +58,7 @@ public: ...@@ -57,7 +58,7 @@ public:
char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH]; char filename[FILENAME_LENGTH], longFilename[LONG_FILENAME_LENGTH];
int autostart_index; int autostart_index;
private: private:
SdFile root, *curDir, workDir, workDirParents[MAX_DIR_DEPTH]; SdFile root, *curDir, workDir, lastDir, workDirParents[MAX_DIR_DEPTH];
uint16_t workDirDepth; uint16_t workDirDepth;
Sd2Card card; Sd2Card card;
SdVolume volume; SdVolume volume;
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
* *
* M200 T D filament_size (x4) (T0..3) * M200 T D filament_size (x4) (T0..3)
* *
* M??? S idleoozing_enabled * M??? S IDLE_OOZING_enabled
* *
* *
* *
...@@ -247,7 +247,7 @@ void Config_StoreSettings() { ...@@ -247,7 +247,7 @@ void Config_StoreSettings() {
} }
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
EEPROM_WRITE_VAR(i, idleoozing_enabled); EEPROM_WRITE_VAR(i, IDLE_OOZING_enabled);
#endif #endif
char ver2[4] = EEPROM_VERSION; char ver2[4] = EEPROM_VERSION;
...@@ -384,7 +384,7 @@ void Config_RetrieveSettings() { ...@@ -384,7 +384,7 @@ void Config_RetrieveSettings() {
calculate_volumetric_multipliers(); calculate_volumetric_multipliers();
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
EEPROM_READ_VAR(i, idleoozing_enabled); EEPROM_READ_VAR(i, IDLE_OOZING_enabled);
#endif #endif
// Call updatePID (similar to when we have processed M301) // Call updatePID (similar to when we have processed M301)
...@@ -570,7 +570,7 @@ void Config_ResetDefault() { ...@@ -570,7 +570,7 @@ void Config_ResetDefault() {
calculate_volumetric_multipliers(); calculate_volumetric_multipliers();
#ifdef IDLE_OOZING_PREVENT #ifdef IDLE_OOZING_PREVENT
idleoozing_enabled = true; IDLE_OOZING_enabled = true;
#endif #endif
ECHO_LM(DB, "Hardcoded Default Settings Loaded"); ECHO_LM(DB, "Hardcoded Default Settings Loaded");
...@@ -819,11 +819,11 @@ void Config_ResetDefault() { ...@@ -819,11 +819,11 @@ void Config_ResetDefault() {
void ConfigSD_PrintSettings(bool forReplay) { void ConfigSD_PrintSettings(bool forReplay) {
// Always have this function, even with SD_SETTINGS disabled, the current values will be shown // Always have this function, even with SD_SETTINGS disabled, the current values will be shown
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
if (!forReplay) { if (!forReplay) {
ECHO_LM(DB, "Watt/h consumed:"); ECHO_LM(DB, "Watt/h consumed:");
} }
ECHO_LVM(OK, power_consumption_hour," W/h"); ECHO_LVM(OK, power_consumption_hour," Wh");
#endif #endif
if (!forReplay) { if (!forReplay) {
ECHO_LM(DB, "Power on time:"); ECHO_LM(DB, "Power on time:");
...@@ -843,7 +843,7 @@ void Config_ResetDefault() { ...@@ -843,7 +843,7 @@ void Config_ResetDefault() {
* *
*/ */
void ConfigSD_ResetDefault() { void ConfigSD_ResetDefault() {
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
power_consumption_hour = 0; power_consumption_hour = 0;
#endif #endif
printer_usage_seconds = 0; printer_usage_seconds = 0;
...@@ -854,9 +854,10 @@ void ConfigSD_ResetDefault() { ...@@ -854,9 +854,10 @@ void ConfigSD_ResetDefault() {
void ConfigSD_StoreSettings() { void ConfigSD_StoreSettings() {
if(!IS_SD_INSERTED || card.isFileOpen() || card.sdprinting) return; if(!IS_SD_INSERTED || card.isFileOpen() || card.sdprinting) return;
card.setroot(true);
card.openFile(CFG_SD_FILE, false, true, false); card.openFile(CFG_SD_FILE, false, true, false);
char buff[CFG_SD_MAX_VALUE_LEN]; char buff[CFG_SD_MAX_VALUE_LEN];
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
ltoa(power_consumption_hour,buff,10); ltoa(power_consumption_hour,buff,10);
card.unparseKeyLine(cfgSD_KEY[SD_CFG_PWR], buff); card.unparseKeyLine(cfgSD_KEY[SD_CFG_PWR], buff);
#endif #endif
...@@ -864,6 +865,7 @@ void ConfigSD_ResetDefault() { ...@@ -864,6 +865,7 @@ void ConfigSD_ResetDefault() {
card.unparseKeyLine(cfgSD_KEY[SD_CFG_TME], buff); card.unparseKeyLine(cfgSD_KEY[SD_CFG_TME], buff);
card.closeFile(false); card.closeFile(false);
card.setlast();
config_last_update = millis(); config_last_update = millis();
} }
...@@ -872,7 +874,7 @@ void ConfigSD_ResetDefault() { ...@@ -872,7 +874,7 @@ void ConfigSD_ResetDefault() {
char key[CFG_SD_MAX_KEY_LEN], value[CFG_SD_MAX_VALUE_LEN]; char key[CFG_SD_MAX_KEY_LEN], value[CFG_SD_MAX_VALUE_LEN];
int k_idx; int k_idx;
int k_len, v_len; int k_len, v_len;
card.setroot(true);
card.openFile(CFG_SD_FILE, true, true, false); card.openFile(CFG_SD_FILE, true, true, false);
while(true) { while(true) {
k_len = CFG_SD_MAX_KEY_LEN; k_len = CFG_SD_MAX_KEY_LEN;
...@@ -882,7 +884,7 @@ void ConfigSD_ResetDefault() { ...@@ -882,7 +884,7 @@ void ConfigSD_ResetDefault() {
k_idx = ConfigSD_KeyIndex(key); k_idx = ConfigSD_KeyIndex(key);
if(k_idx == -1) continue; //unknow key ignore it if(k_idx == -1) continue; //unknow key ignore it
switch(k_idx) { switch(k_idx) {
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
case SD_CFG_PWR: { case SD_CFG_PWR: {
if(addValue) power_consumption_hour += (unsigned long)atol(value); if(addValue) power_consumption_hour += (unsigned long)atol(value);
else power_consumption_hour = (unsigned long)atol(value); else power_consumption_hour = (unsigned long)atol(value);
...@@ -897,6 +899,7 @@ void ConfigSD_ResetDefault() { ...@@ -897,6 +899,7 @@ void ConfigSD_ResetDefault() {
} }
} }
card.closeFile(false); card.closeFile(false);
card.setlast();
config_readed = true; config_readed = true;
} }
......
...@@ -24,14 +24,14 @@ void ConfigSD_ResetDefault(); ...@@ -24,14 +24,14 @@ void ConfigSD_ResetDefault();
#if ENABLED(SDSUPPORT) && ENABLED(SD_SETTINGS) #if ENABLED(SDSUPPORT) && ENABLED(SD_SETTINGS)
static const char *cfgSD_KEY[] = { //Keep this in lexicographical order for better search performance(O(Nlog2(N)) insted of O(N*N)) (if you don't keep this sorted, the algorithm for find the key index won't work, keep attention.) static const char *cfgSD_KEY[] = { //Keep this in lexicographical order for better search performance(O(Nlog2(N)) insted of O(N*N)) (if you don't keep this sorted, the algorithm for find the key index won't work, keep attention.)
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
"PWR", "PWR",
#endif #endif
"TME", "TME",
}; };
enum cfgSD_ENUM { //This need to be in the same order as cfgSD_KEY enum cfgSD_ENUM { //This need to be in the same order as cfgSD_KEY
#ifdef POWER_CONSUMPTION #if HAS_POWER_CONSUMPTION_SENSOR
SD_CFG_PWR, SD_CFG_PWR,
#endif #endif
SD_CFG_TME, SD_CFG_TME,
......
...@@ -309,7 +309,7 @@ static void lcd_implementation_status_screen() { ...@@ -309,7 +309,7 @@ static void lcd_implementation_status_screen() {
} }
else { else {
lcd_print(itostr4(power_consumption_hour-startpower)); lcd_print(itostr4(power_consumption_hour-startpower));
lcd_print('Wh'); lcd_print("Wh");
} }
#else #else
uint16_t time = (millis() - print_job_start_ms) / 60000; uint16_t time = (millis() - print_job_start_ms) / 60000;
......
...@@ -35,9 +35,22 @@ void FirmwareTest() ...@@ -35,9 +35,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("X ENDSTOP ERROR"); ECHO_M("X ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define X_MIN_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define X_MIN_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -64,9 +77,22 @@ void FirmwareTest() ...@@ -64,9 +77,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("X ENDSTOP ERROR"); ECHO_M("X ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define X_MAX_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define X_MAX_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -87,10 +113,14 @@ void FirmwareTest() ...@@ -87,10 +113,14 @@ void FirmwareTest()
return; return;
} }
#elif X_HOME_DIR == -1 #elif X_HOME_DIR == -1
ECHO_EM("ERROR!!! X_MIN_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! X_MIN_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#elif X_HOME_DIR == 1 #elif X_HOME_DIR == 1
ECHO_EM("ERROR!!! X_MAX_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! X_MAX_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#endif #endif
...@@ -103,9 +133,22 @@ void FirmwareTest() ...@@ -103,9 +133,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Y ENDSTOP ERROR"); ECHO_M("Y ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Y_MIN_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Y_MIN_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -132,9 +175,22 @@ void FirmwareTest() ...@@ -132,9 +175,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Y ENDSTOP ERROR"); ECHO_M("Y ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Y_MAX_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Y_MAX_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -155,10 +211,14 @@ void FirmwareTest() ...@@ -155,10 +211,14 @@ void FirmwareTest()
return; return;
} }
#elif Y_HOME_DIR == -1 #elif Y_HOME_DIR == -1
ECHO_EM("ERROR!!! Y_MIN_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Y_MIN_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#elif Y_HOME_DIR == 1 #elif Y_HOME_DIR == 1
ECHO_EM("ERROR!!! Y_MAX_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Y_MAX_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#endif #endif
...@@ -171,9 +231,22 @@ void FirmwareTest() ...@@ -171,9 +231,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Z ENDSTOP ERROR"); ECHO_M("Z ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Z_MIN_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Z_MIN_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -200,9 +273,22 @@ void FirmwareTest() ...@@ -200,9 +273,22 @@ void FirmwareTest()
} }
else else
{ {
ECHO_EM("Z ENDSTOP ERROR"); ECHO_M("Z ENDSTOP ");
ECHO_V(MSG_FWTEST_INVERT); ECHO_EM(MSG_FWTEST_ERROR);
ECHO_EM("#define Z_MAX_ENDSTOP_INVERTING"); ECHO_M(MSG_FWTEST_INVERT);
ECHO_M("#define Z_MAX_ENDSTOP_LOGIC ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_V(MSG_FWTEST_PRESS); ECHO_V(MSG_FWTEST_PRESS);
...@@ -223,14 +309,19 @@ void FirmwareTest() ...@@ -223,14 +309,19 @@ void FirmwareTest()
return; return;
} }
#elif Z_HOME_DIR == -1 #elif Z_HOME_DIR == -1
ECHO_EM("ERROR!!! Z_MIN_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Z_MIN_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#elif Z_HOME_DIR == 1 #elif Z_HOME_DIR == 1
ECHO_EM("ERROR!!! Z_MAX_PIN not defined"); ECHO_M(MSG_FWTEST_ERROR);
ECHO_M("!!! Z_MAX_PIN ");
ECHO_EM(MSG_FWTEST_NDEF);
return; return;
#endif #endif
ECHO_EM("ENDSTOP OK"); ECHO_EM("ENDSTOP ");
ECHO_M(MSG_FWTEST_OK);
ECHO_EM(" "); ECHO_EM(" ");
} }
...@@ -265,12 +356,25 @@ void FirmwareTest() ...@@ -265,12 +356,25 @@ void FirmwareTest()
serial_answer = MYSERIAL.read(); serial_answer = MYSERIAL.read();
} }
if(serial_answer=='y' || serial_answer=='Y'){ if(serial_answer=='y' || serial_answer=='Y'){
ECHO_EM("MOTOR X OK"); ECHO_EM("MOTOR X ");
ECHO_M(MSG_FWTEST_OK);
} }
else else
{ {
ECHO_V(MSG_FWTEST_INVERT); ECHO_M(MSG_FWTEST_INVERT);
ECHO_EM("#define INVERT_X_DIR"); ECHO_M("#define INVERT_X_DIR ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_EM(" "); ECHO_EM(" ");
...@@ -285,12 +389,25 @@ void FirmwareTest() ...@@ -285,12 +389,25 @@ void FirmwareTest()
serial_answer = MYSERIAL.read(); serial_answer = MYSERIAL.read();
} }
if(serial_answer=='y' || serial_answer=='Y'){ if(serial_answer=='y' || serial_answer=='Y'){
ECHO_EM("MOTOR Y OK"); ECHO_EM("MOTOR Y ");
ECHO_M(MSG_FWTEST_OK);
} }
else else
{ {
ECHO_V(MSG_FWTEST_INVERT); ECHO_M(MSG_FWTEST_INVERT);
ECHO_EM("#define INVERT_Y_DIR"); ECHO_M("#define INVERT_Y_DIR ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_EM(" "); ECHO_EM(" ");
...@@ -305,15 +422,29 @@ void FirmwareTest() ...@@ -305,15 +422,29 @@ void FirmwareTest()
serial_answer = MYSERIAL.read(); serial_answer = MYSERIAL.read();
} }
if(serial_answer=='y' || serial_answer=='Y'){ if(serial_answer=='y' || serial_answer=='Y'){
ECHO_EM("MOTOR Z OK"); ECHO_EM("MOTOR Z ");
ECHO_M(MSG_FWTEST_OK);
} }
else else
{ {
ECHO_V(MSG_FWTEST_INVERT); ECHO_M(MSG_FWTEST_INVERT);
ECHO_EM("#define INVERT_Z_DIR"); ECHO_M("#define INVERT_Z_DIR ");
ECHO_M(MSG_FWTEST_INTO);
#if ENABLED(CARTESIAN)
ECHO_EM("Configuration_Cartesian.h");
#elif ENABLED(COREXY)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(COREXZ)
ECHO_EM("Configuration_Core.h");
#elif ENABLED(DELTA)
ECHO_EM("Configuration_Delta.h");
#elif ENABLED(SCARA)
ECHO_EM("Configuration_Scara.h");
#endif
return; return;
} }
ECHO_EM("MOTOR OK"); ECHO_EM("MOTOR ");
ECHO_M(MSG_FWTEST_OK);
ECHO_EM(" "); ECHO_EM(" ");
ECHO_V(MSG_FWTEST_END); ECHO_V(MSG_FWTEST_END);
} }
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -205,6 +205,10 @@ ...@@ -205,6 +205,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_AN_H #endif // LANGUAGE_AN_H
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -205,6 +205,10 @@ ...@@ -205,6 +205,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_EN_H #endif // LANGUAGE_EN_H
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -206,6 +206,10 @@ ...@@ -206,6 +206,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_DE_H #endif // LANGUAGE_DE_H
...@@ -200,7 +200,7 @@ ...@@ -200,7 +200,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -210,6 +210,10 @@ ...@@ -210,6 +210,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_EN_H #endif // LANGUAGE_EN_H
...@@ -195,7 +195,7 @@ ...@@ -195,7 +195,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -205,6 +205,10 @@ ...@@ -205,6 +205,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_ES_H #endif // LANGUAGE_ES_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Auto tenperatura" #define MSG_AUTOTEMP "Auto tenperatura"
#define MSG_ON "On " #define MSG_ON "On "
#define MSG_OFF "Off" #define MSG_OFF "Off"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_EU_H #endif // LANGUAGE_EU_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN STR_THERMOMETER " Min" #define MSG_MIN STR_THERMOMETER " Min"
#define MSG_MAX STR_THERMOMETER " Max" #define MSG_MAX STR_THERMOMETER " Max"
#define MSG_FACTOR STR_THERMOMETER " Kerr" #define MSG_FACTOR STR_THERMOMETER " Kerr"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "On " #define MSG_ON "On "
#define MSG_OFF "Off" #define MSG_OFF "Off"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_FI_H #endif // LANGUAGE_FI_H
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Facteur" #define MSG_FACTOR " " STR_THERMOMETER " Facteur"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Temp. Auto." #define MSG_AUTOTEMP "Temp. Auto."
#define MSG_ON "Marche " #define MSG_ON "Marche "
#define MSG_OFF "Arret" #define MSG_OFF "Arret"
...@@ -172,7 +173,7 @@ ...@@ -172,7 +173,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -182,6 +183,10 @@ ...@@ -182,6 +183,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_FR_H #endif // LANGUAGE_FR_H
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
#define MSG_FWTEST_YES_NO "Dai il comando Y o N per andare avanti" #define MSG_FWTEST_YES_NO "Dai il comando Y o N per andare avanti"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Controllare cavi e connessioni" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Controllare cavi e connessioni"
#define MSG_FWTEST_PRESS "Premere e tenere premuto l'endstop " #define MSG_FWTEST_PRESS "Premere e tenere premuto l'endstop "
#define MSG_FWTEST_INVERT "Invertire valore in " #define MSG_FWTEST_INVERT "Invertire valore di "
#define MSG_FWTEST_XAXIS "Il nozzle si e' spostato a destra?" #define MSG_FWTEST_XAXIS "Il nozzle si e' spostato a destra?"
#define MSG_FWTEST_YAXIS "Il nozzle si e' spostato in avanti?" #define MSG_FWTEST_YAXIS "Il nozzle si e' spostato in avanti?"
#define MSG_FWTEST_ZAXIS "Il nozzle si e' spostato in alto?" #define MSG_FWTEST_ZAXIS "Il nozzle si e' spostato in alto?"
...@@ -206,6 +206,10 @@ ...@@ -206,6 +206,10 @@
#define MSG_FWTEST_04 "Inizio controllo MOTORI" #define MSG_FWTEST_04 "Inizio controllo MOTORI"
#define MSG_FWTEST_ATTENTION "ATTENZIONE! Controlla che i tre assi siano a piu' di 5 mm dagli endstop!" #define MSG_FWTEST_ATTENTION "ATTENZIONE! Controlla che i tre assi siano a piu' di 5 mm dagli endstop!"
#define MSG_FWTEST_END "Test finito. Disabilitare FIRMWARE_TEST e ricompilare." #define MSG_FWTEST_END "Test finito. Disabilitare FIRMWARE_TEST e ricompilare."
#define MSG_FWTEST_INTO "in "
#define MSG_FWTEST_ERROR "ERRORE"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "non definito"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_IT_H #endif // LANGUAGE_IT_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "Aan " #define MSG_ON "Aan "
#define MSG_OFF "Uit" #define MSG_OFF "Uit"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_NL_H #endif // LANGUAGE_NL_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Auto. temperatura" #define MSG_AUTOTEMP "Auto. temperatura"
#define MSG_ON "Wl. " #define MSG_ON "Wl. "
#define MSG_OFF "Wyl." #define MSG_OFF "Wyl."
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_PL_H #endif // LANGUAGE_PL_H
...@@ -178,7 +178,7 @@ ...@@ -178,7 +178,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -188,6 +188,10 @@ ...@@ -188,6 +188,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_PT_BR_H #endif // LANGUAGE_PT_BR_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER " Min" #define MSG_MIN " " STR_THERMOMETER " Min"
#define MSG_MAX " " STR_THERMOMETER " Max" #define MSG_MAX " " STR_THERMOMETER " Max"
#define MSG_FACTOR " " STR_THERMOMETER " Fact" #define MSG_FACTOR " " STR_THERMOMETER " Fact"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "On " #define MSG_ON "On "
#define MSG_OFF "Off" #define MSG_OFF "Off"
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_PT_H #endif // LANGUAGE_PT_H
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
#define MSG_MIN " " STR_THERMOMETER "Минимум" #define MSG_MIN " " STR_THERMOMETER "Минимум"
#define MSG_MAX " " STR_THERMOMETER "Максимум" #define MSG_MAX " " STR_THERMOMETER "Максимум"
#define MSG_FACTOR " " STR_THERMOMETER "Фактор" #define MSG_FACTOR " " STR_THERMOMETER "Фактор"
#define MSG_IDLEOOZING "Anti oozing"
#define MSG_AUTOTEMP "Autotemp" #define MSG_AUTOTEMP "Autotemp"
#define MSG_ON "Вкл." #define MSG_ON "Вкл."
#define MSG_OFF "Выкл." #define MSG_OFF "Выкл."
...@@ -169,7 +170,7 @@ ...@@ -169,7 +170,7 @@
#define MSG_FWTEST_YES_NO "Put the Y or N command to go next" #define MSG_FWTEST_YES_NO "Put the Y or N command to go next"
#define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection" #define MSG_FWTEST_ENDSTOP_ERR "ENDSTOP ERROR! Check wire and connection"
#define MSG_FWTEST_PRESS "Press and hold the endstop " #define MSG_FWTEST_PRESS "Press and hold the endstop "
#define MSG_FWTEST_INVERT "Reverse value in " #define MSG_FWTEST_INVERT "Reverse value of "
#define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?" #define MSG_FWTEST_XAXIS "Has the nozzle moved to the right?"
#define MSG_FWTEST_YAXIS "Has the nozzle moved forward?" #define MSG_FWTEST_YAXIS "Has the nozzle moved forward?"
#define MSG_FWTEST_ZAXIS "Has the nozzle moved up?" #define MSG_FWTEST_ZAXIS "Has the nozzle moved up?"
...@@ -179,6 +180,10 @@ ...@@ -179,6 +180,10 @@
#define MSG_FWTEST_04 "Start check MOTOR" #define MSG_FWTEST_04 "Start check MOTOR"
#define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!" #define MSG_FWTEST_ATTENTION "ATTENTION! Check that the three axes are more than 5 mm from the endstop!"
#define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile." #define MSG_FWTEST_END "Finish Test. Disable FIRMWARE_TEST and recompile."
#define MSG_FWTEST_INTO "into "
#define MSG_FWTEST_ERROR "ERROR"
#define MSG_FWTEST_OK "OK"
#define MSG_FWTEST_NDEF "not defined"
#endif // FIRMWARE_TEST #endif // FIRMWARE_TEST
#endif // LANGUAGE_RU_H #endif // LANGUAGE_RU_H
...@@ -318,4 +318,8 @@ ...@@ -318,4 +318,8 @@
#error SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration. #error SDCARDDETECTINVERTED is now SD_DETECT_INVERTED. Please update your configuration.
#endif #endif
#if ENABLED(POWER_CONSUMPTION) && !PIN_EXISTS(POWER_CONSUMPTION)
#error You have to set a valid POWER_CONSUMPTION_PIN in pins.h in order to use this feature.
#endif
#endif //SANITYCHECK_H #endif //SANITYCHECK_H
...@@ -1052,7 +1052,7 @@ void tp_init() { ...@@ -1052,7 +1052,7 @@ void tp_init() {
#if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED) #if ENABLED(THERMAL_PROTECTION_HOTENDS) || ENABLED(THERMAL_PROTECTION_BED)
void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) { void thermal_runaway_protection(TRState *state, millis_t *timer, float temperature, float target_temperature, int heater_id, int period_seconds, int hysteresis_degc) {
static float tr_last_temperature = 0.0;
static float tr_target_temperature[HOTENDS + 1] = { 0.0 }; static float tr_target_temperature[HOTENDS + 1] = { 0.0 };
/* /*
ECHO_SM(DB, "Thermal Thermal Runaway Running. Heater ID: "); ECHO_SM(DB, "Thermal Thermal Runaway Running. Heater ID: ");
...@@ -1070,33 +1070,51 @@ void tp_init() { ...@@ -1070,33 +1070,51 @@ void tp_init() {
*state = TRReset; *state = TRReset;
switch (*state) { switch (*state) {
case TRReset: case TRReset: {
*timer = 0; *timer = 0;
*state = TRInactive; *state = TRInactive;
}
// Inactive state waits for a target temperature to be set // Inactive state waits for a target temperature to be set
case TRInactive: case TRInactive: {
if (target_temperature > 0) { if (target_temperature > 0) {
tr_last_temperature = temperature;
tr_target_temperature[heater_index] = target_temperature; tr_target_temperature[heater_index] = target_temperature;
*timer = millis();
*state = TRFirstHeating; *state = TRFirstHeating;
} }
}
break; break;
// When first heating, wait for the temperature to be reached then go to Stable state // When first heating, wait for the temperature to be reached then go to Stable state
case TRFirstHeating: // If the heater takes too long to reach the target temperature the sistem will be halt.
case TRFirstHeating: {
if (temperature >= tr_target_temperature[heater_index]) *state = TRStable; if (temperature >= tr_target_temperature[heater_index]) *state = TRStable;
else if (temperature == tr_last_temperature) {
if (millis() > *timer + period_seconds * 1000UL) {
*state = TRRunaway;
}
}
else {
*timer = millis();
}
}
break; break;
// While the temperature is stable watch for a bad temperature // While the temperature is stable watch for a bad temperature
case TRStable: case TRStable: {
// If the temperature is over the target (-hysteresis) restart the timer // If the temperature is over the target (-hysteresis) restart the timer
if (temperature >= tr_target_temperature[heater_index] - hysteresis_degc) if (temperature >= tr_target_temperature[heater_index] - hysteresis_degc) {
*timer = millis(); *timer = millis();
}
// If the timer goes too long without a reset, trigger shutdown // If the timer goes too long without a reset, trigger shutdown
else if (millis() > *timer + period_seconds * 1000UL) else if (millis() > *timer + period_seconds * 1000UL) {
*state = TRRunaway; *state = TRRunaway;
}
}
break; break;
case TRRunaway: case TRRunaway: {
_temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), PSTR(MSG_THERMAL_RUNAWAY)); _temp_error(heater_id, PSTR(MSG_T_THERMAL_RUNAWAY), PSTR(MSG_THERMAL_RUNAWAY));
} }
} }
}
#endif // THERMAL_PROTECTION_HOTENDS || THERMAL_PROTECTION_BED #endif // THERMAL_PROTECTION_HOTENDS || THERMAL_PROTECTION_BED
......
This diff is collapsed.
...@@ -861,6 +861,9 @@ static void lcd_move_y() { _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, Y_MIN_POS, Y_MAX_ ...@@ -861,6 +861,9 @@ static void lcd_move_y() { _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, Y_MIN_POS, Y_MAX_
static void lcd_move_z() { _lcd_move(PSTR(MSG_MOVE_Z), Z_AXIS, Z_MIN_POS, Z_MAX_POS); } static void lcd_move_z() { _lcd_move(PSTR(MSG_MOVE_Z), Z_AXIS, Z_MIN_POS, Z_MAX_POS); }
static void lcd_move_e() { static void lcd_move_e() {
if (encoderPosition != 0) { if (encoderPosition != 0) {
#if ENABLED(IDLE_OOZING_PREVENT)
IDLE_OOZING_retract(false);
#endif
current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale; current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale;
encoderPosition = 0; encoderPosition = 0;
line_to_current(E_AXIS); line_to_current(E_AXIS);
...@@ -1021,7 +1024,7 @@ static void lcd_control_temperature_menu() { ...@@ -1021,7 +1024,7 @@ static void lcd_control_temperature_menu() {
// //
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255); MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);
#if ENABLED(IDLE_OOZING_PREVENT) #if ENABLED(IDLE_OOZING_PREVENT)
MENU_ITEM_EDIT(bool, MSG_IDLEOOZING, &idleoozing_enabled); MENU_ITEM_EDIT(bool, MSG_IDLEOOZING, &IDLE_OOZING_enabled);
#endif #endif
// //
...@@ -1970,10 +1973,12 @@ char *ftostr32(const float &x) { ...@@ -1970,10 +1973,12 @@ char *ftostr32(const float &x) {
// Convert float to string with 1.234 format // Convert float to string with 1.234 format
char *ftostr43(const float &x) { char *ftostr43(const float &x) {
long xx = x * 1000; long xx = x * 1000;
if (xx >= 0) if (xx >= 0) {
conv[0] = (xx / 1000) % 10 + '0'; conv[0] = (xx / 1000) % 10 + '0';
else }
else {
conv[0] = '-'; conv[0] = '-';
}
xx = abs(xx); xx = abs(xx);
conv[1] = '.'; conv[1] = '.';
conv[2] = (xx / 100) % 10 + '0'; conv[2] = (xx / 100) % 10 + '0';
...@@ -2589,10 +2594,12 @@ char *ftostr32(const float &x) { ...@@ -2589,10 +2594,12 @@ char *ftostr32(const float &x) {
// Convert float to string with 1.234 format // Convert float to string with 1.234 format
char *ftostr43(const float &x) { char *ftostr43(const float &x) {
long xx = x * 1000; long xx = x * 1000;
if (xx >= 0) if (xx >= 0) {
conv[0] = (xx / 1000) % 10 + '0'; conv[0] = (xx / 1000) % 10 + '0';
else }
else {
conv[0] = '-'; conv[0] = '-';
}
xx = abs(xx); xx = abs(xx);
conv[1] = '.'; conv[1] = '.';
conv[2] = (xx / 100) % 10 + '0'; conv[2] = (xx / 100) % 10 + '0';
......
<img align="right" src="Documentation/Logo/MarlinKimbra%20Logo%20GitHub.png" /> <img align="right" src="Documentation/Logo/MarlinKimbra%20Logo%20GitHub.png" />
# MarlinKimbra 3D Printer Firmware # MarlinKimbra 3D Printer Firmware
## Version 4.1.3 dev ## Version 4.1.4 dev
* [Configuration & Compilation](/Documentation/Compilation.md) * [Configuration & Compilation](/Documentation/Compilation.md)
* Supported * Supported
...@@ -34,16 +34,16 @@ Adding commands to facilitate purging of hotend. ...@@ -34,16 +34,16 @@ Adding commands to facilitate purging of hotend.
Step per unit varied for each extruder as well as the feedrate. Step per unit varied for each extruder as well as the feedrate.
The addition of a different feedrate for retraction. The addition of a different feedrate for retraction.
Adding Debug Dryrun used by repetier. Adding Debug Dryrun used by repetier.
Add total Power on time write in EEPROM Added total Power on time writec in SD CARD.
Added total Power consumption writed in SD CARD.
Added anti extruder idle oozing system.
## Credits ## Credits
The current MarlinKimbra dev team consists of: The current MarlinKimbra dev team consists of:
- MagoKimbra - Alberto Cotronei (https://github.com/MagoKimbra) - MagoKimbra - Alberto Cotronei (https://github.com/MagoKimbra)
More features have been added by: More features have been added by:
- simone97 (https://github.com/simone97) - simonepri - Simone Primarosa (https://github.com/simonepri)
-
## License ## License
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment