Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavelSindler <pavel@prusa3d.cz>2017-10-04 22:04:19 +0300
committerGitHub <noreply@github.com>2017-10-04 22:04:19 +0300
commit2a22fa9fa9b7f7f8b4123f7f06a7f773d9449747 (patch)
tree40962c49af38f23b61ccf1e8a8d4bf08e9a029ee
parent6eaedec2881c1af7f7a88bf7da3aff8d00b6049f (diff)
parent4297d90309e6b8caca406269454500426e76435b (diff)
Merge pull request #217 from PavelSindler/v2_calv3.1.0-RC1
First layer calibration: print small rectangular in the end of calibration
-rw-r--r--Firmware/Configuration.h2
-rw-r--r--Firmware/ultralcd.cpp292
-rw-r--r--Firmware/ultralcd.h1
3 files changed, 277 insertions, 18 deletions
diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h
index 1a8f86b73..7b224861a 100644
--- a/Firmware/Configuration.h
+++ b/Firmware/Configuration.h
@@ -5,7 +5,7 @@
#include "Configuration_prusa.h"
// Firmware version
-#define FW_version "3.0.12-9"
+#define FW_version "3.1.0-RC1"
#define FW_PRUSA3D_MAGIC "PRUSA3DFW"
#define FW_PRUSA3D_MAGIC_LEN 10
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index a8fabe7d2..570baf481 100644
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -602,12 +602,18 @@ void lcd_commands()
#ifdef SNMM
if (lcd_commands_type == LCD_COMMAND_V2_CAL)
{
+ char cmd1[30];
+ float width = 0.4;
+ float length = 20 - width;
+ float extr = count_e(0.2, width, length);
+ float extr_short_segment = count_e(0.2, width, width);
+
lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
if (lcd_commands_step == 0)
{
- lcd_commands_step = 6;
+ lcd_commands_step = 10;
}
- if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty())
+ if (lcd_commands_step == 10 && !blocks_queued() && cmd_buffer_empty())
{
enquecommand_P(PSTR("M107"));
enquecommand_P(PSTR("M104 S210"));
@@ -624,9 +630,9 @@ void lcd_commands()
enquecommand_P(PSTR("G92 E0"));
enquecommand_P(PSTR("M203 E100"));
enquecommand_P(PSTR("M92 E140"));
- lcd_commands_step = 5;
+ lcd_commands_step = 9;
}
- if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty())
+ if (lcd_commands_step == 9 && !blocks_queued() && cmd_buffer_empty())
{
lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
enquecommand_P(PSTR("G1 Z0.250 F7200.000"));
@@ -648,9 +654,9 @@ void lcd_commands()
lcd_goto_menu(lcd_babystep_z, 0, false);
- lcd_commands_step = 4;
+ lcd_commands_step = 8;
}
- if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty()) //draw meander
+ if (lcd_commands_step == 8 && !blocks_queued() && cmd_buffer_empty()) //draw meander
{
lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
@@ -671,14 +677,134 @@ void lcd_commands()
enquecommand_P(PSTR("G1 X200 Y75 E3.62773"));
enquecommand_P(PSTR("G1 X200 Y55 E0.49386"));
enquecommand_P(PSTR("G1 X50 Y55 E3.62773"));
- enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000"));
+
+ lcd_commands_step = 7;
+ }
+
+ if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty())
+ {
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ strcpy(cmd1, "G1 X50 Y35 E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+
+ for (int i = 0; i < 4; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
+ lcd_commands_step = 6;
+ }
+
+ if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty())
+ {
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ for (int i = 4; i < 8; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
+ lcd_commands_step = 5;
+ }
+
+ if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty())
+ {
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ for (int i = 8; i < 12; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
+ lcd_commands_step = 4;
+ }
+
+ if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty())
+ {
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ for (int i = 12; i < 16; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
lcd_commands_step = 3;
}
if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty())
{
lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
-
+ enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000"));
enquecommand_P(PSTR("G4 S0"));
enquecommand_P(PSTR("G1 E-4 F2100.00000"));
enquecommand_P(PSTR("G1 Z0.5 F7200.000"));
@@ -739,15 +865,19 @@ void lcd_commands()
#else //if not SNMM
-
if (lcd_commands_type == LCD_COMMAND_V2_CAL)
{
+ char cmd1[30];
+ float width = 0.4;
+ float length = 20 - width;
+ float extr = count_e(0.2, width, length);
+ float extr_short_segment = count_e(0.2, width, width);
lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
if (lcd_commands_step == 0)
{
- lcd_commands_step = 5;
+ lcd_commands_step = 9;
}
- if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty())
+ if (lcd_commands_step == 9 && !blocks_queued() && cmd_buffer_empty())
{
enquecommand_P(PSTR("M107"));
enquecommand_P(PSTR("M104 S210"));
@@ -758,9 +888,9 @@ void lcd_commands()
enquecommand_P(PSTR("G87")); //sets calibration status
enquecommand_P(PSTR("G28"));
enquecommand_P(PSTR("G92 E0.0"));
- lcd_commands_step = 4;
+ lcd_commands_step = 8;
}
- if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty())
+ if (lcd_commands_step == 8 && !blocks_queued() && cmd_buffer_empty())
{
lcd_implementation_clear();
@@ -775,9 +905,9 @@ void lcd_commands()
enquecommand_P(PSTR("G1 Z0.150 F7200.000"));
enquecommand_P(PSTR("M204 S1000")); //set acceleration
enquecommand_P(PSTR("G1 F4000"));
- lcd_commands_step = 3;
+ lcd_commands_step = 7;
}
- if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty()) //draw meander
+ if (lcd_commands_step == 7 && !blocks_queued() && cmd_buffer_empty()) //draw meander
{
lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
@@ -816,13 +946,135 @@ void lcd_commands()
enquecommand_P(PSTR("G1 X200 Y75 E3.62773"));
enquecommand_P(PSTR("G1 X200 Y55 E0.49386"));
enquecommand_P(PSTR("G1 X50 Y55 E3.62773"));
- enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000"));
+
+ lcd_commands_step = 6;
+ }
+
+ if (lcd_commands_step == 6 && !blocks_queued() && cmd_buffer_empty())
+ {
+
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ strcpy(cmd1, "G1 X50 Y35 E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+
+ for (int i = 0; i < 4; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
+ lcd_commands_step = 5;
+ }
+
+ if (lcd_commands_step == 5 && !blocks_queued() && cmd_buffer_empty())
+ {
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ for (int i = 4; i < 8; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
+ lcd_commands_step = 4;
+ }
+
+ if (lcd_commands_step == 4 && !blocks_queued() && cmd_buffer_empty())
+ {
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ for (int i = 8; i < 12; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
+ lcd_commands_step = 3;
+ }
+
+ if (lcd_commands_step == 3 && !blocks_queued() && cmd_buffer_empty())
+ {
+ lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ for (int i = 12; i < 16; i++) {
+ strcpy(cmd1, "G1 X70 Y");
+ strcat(cmd1, ftostr32(35 - i*width * 2));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 X50 Y");
+ strcat(cmd1, ftostr32(35 - (2 * i + 1)*width));
+ strcat(cmd1, " E");
+ strcat(cmd1, ftostr43(extr));
+ enquecommand(cmd1);
+ strcpy(cmd1, "G1 Y");
+ strcat(cmd1, ftostr32(35 - (i + 1)*width * 2));
+ strcat(cmd1, "E ");
+ strcat(cmd1, ftostr43(extr_short_segment));
+ enquecommand(cmd1);
+ }
+
lcd_commands_step = 2;
}
if (lcd_commands_step == 2 && !blocks_queued() && cmd_buffer_empty())
{
lcd_timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS;
+ enquecommand_P(PSTR("G1 E - 0.07500 F2100.00000"));
enquecommand_P(PSTR("M107")); //turn off printer fan
enquecommand_P(PSTR("M104 S0")); // turn off temperature
enquecommand_P(PSTR("M140 S0")); // turn off heatbed
@@ -1031,6 +1283,12 @@ void lcd_commands()
}
+static float count_e(float layer_heigth, float extrusion_width, float extrusion_length) {
+ //returns filament length in mm which needs to be extrude to form line with extrusion_length * extrusion_width * layer heigth dimensions
+ float extr = extrusion_length * layer_heigth * extrusion_width / (M_PI * pow(1.75, 2) / 4);
+ return extr;
+}
+
static void lcd_return_to_status() {
lcd_implementation_init( // to maybe revive the LCD if static electricity killed it.
#if defined(LCD_PROGRESS_BAR) && defined(SDSUPPORT)
@@ -4414,7 +4672,7 @@ static void lcd_main_menu()
}*/
- if ( ( IS_SD_PRINTING || is_usb_printing ) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag)
+ if ( ( IS_SD_PRINTING || is_usb_printing || (lcd_commands_type == LCD_COMMAND_V2_CAL) ) && (current_position[Z_AXIS] < Z_HEIGHT_HIDE_LIVE_ADJUST_MENU) && !homing_flag && !mesh_bed_leveling_flag)
{
MENU_ITEM(submenu, MSG_BABYSTEP_Z, lcd_babystep_z);//8
}
diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h
index bc3f9606c..8aad71932 100644
--- a/Firmware/ultralcd.h
+++ b/Firmware/ultralcd.h
@@ -234,6 +234,7 @@ static void lcd_babystep_z();
#ifdef SDCARD_SORT_ALPHA
static void lcd_sort_type_set();
#endif
+static float count_e(float layer_heigth, float extrusion_width, float extrusion_length);
void stack_error();
static void lcd_ping_allert();
void lcd_printer_connected();