Fixed "Shift out of range" bug in xyz calibration, status on demand added, temp reading disable in farm mode
This commit is contained in:
parent
590cc8f3e8
commit
241e32e691
|
|
@ -5,7 +5,7 @@
|
|||
#include "Configuration_prusa.h"
|
||||
|
||||
// Firmware version
|
||||
#define FW_version "3.0.10"
|
||||
#define FW_version "3.0.10.1"
|
||||
|
||||
#define FW_PRUSA3D_MAGIC "PRUSA3DFW"
|
||||
#define FW_PRUSA3D_MAGIC_LEN 10
|
||||
|
|
|
|||
|
|
@ -292,6 +292,7 @@ extern unsigned long kicktime;
|
|||
extern unsigned long total_filament_used;
|
||||
void save_statistics(unsigned long _total_filament_used, unsigned long _total_print_time);
|
||||
extern unsigned int heating_status;
|
||||
extern unsigned int status_number;
|
||||
extern unsigned int heating_status_counter;
|
||||
extern bool custom_message;
|
||||
extern unsigned int custom_message_type;
|
||||
|
|
|
|||
|
|
@ -267,6 +267,7 @@ unsigned char lang_selected = 0;
|
|||
|
||||
bool prusa_sd_card_upload = false;
|
||||
|
||||
unsigned int status_number = 0;
|
||||
|
||||
unsigned long total_filament_used;
|
||||
unsigned int heating_status;
|
||||
|
|
@ -1958,7 +1959,10 @@ void process_commands()
|
|||
int8_t SilentMode;
|
||||
#endif
|
||||
if(code_seen("PRUSA")){
|
||||
if (code_seen("fn")) {
|
||||
if (code_seen("PRN")) {
|
||||
MYSERIAL.println(status_number);
|
||||
|
||||
}else if (code_seen("fn")) {
|
||||
if (farm_mode) {
|
||||
MYSERIAL.println(farm_no);
|
||||
}
|
||||
|
|
@ -1966,7 +1970,7 @@ void process_commands()
|
|||
MYSERIAL.println("Not in farm mode.");
|
||||
}
|
||||
|
||||
}else if (code_seen("fv")) {
|
||||
}else if (code_seen("fv")) {
|
||||
// get file version
|
||||
#ifdef SDSUPPORT
|
||||
card.openFile(strchr_pointer + 3,true);
|
||||
|
|
@ -2017,7 +2021,7 @@ void process_commands()
|
|||
}else if(code_seen("Y")) { //filaments adjustment at the beginning of print (for SNMM)
|
||||
#ifdef SNMM
|
||||
int extr;
|
||||
SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); //is silent mode or loud mode set
|
||||
SilentMode = eeprom_read_byte((uint8_t*)EEPROM_SILENT); //is e or loud mode set
|
||||
lcd_implementation_clear();
|
||||
lcd_display_message_fullscreen_P(MSG_FIL_ADJUSTING);
|
||||
current_position[Z_AXIS] = 100;
|
||||
|
|
@ -3917,22 +3921,24 @@ Sigma_Exit:
|
|||
#endif //TEMP_RESIDENCY_TIME
|
||||
if( (millis() - codenum) > 1000UL )
|
||||
{ //Print Temp Reading and remaining time every 1 second while heating up/cooling down
|
||||
SERIAL_PROTOCOLPGM("T:");
|
||||
SERIAL_PROTOCOL_F(degHotend(tmp_extruder),1);
|
||||
SERIAL_PROTOCOLPGM(" E:");
|
||||
SERIAL_PROTOCOL((int)tmp_extruder);
|
||||
|
||||
#ifdef TEMP_RESIDENCY_TIME
|
||||
SERIAL_PROTOCOLPGM(" W:");
|
||||
if(residencyStart > -1)
|
||||
{
|
||||
codenum = ((TEMP_RESIDENCY_TIME * 1000UL) - (millis() - residencyStart)) / 1000UL;
|
||||
SERIAL_PROTOCOLLN( codenum );
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_PROTOCOLLN( "?" );
|
||||
}
|
||||
if (!farm_mode) {
|
||||
SERIAL_PROTOCOLPGM("T:");
|
||||
SERIAL_PROTOCOL_F(degHotend(tmp_extruder), 1);
|
||||
SERIAL_PROTOCOLPGM(" E:");
|
||||
SERIAL_PROTOCOL((int)tmp_extruder);
|
||||
|
||||
#ifdef TEMP_RESIDENCY_TIME
|
||||
SERIAL_PROTOCOLPGM(" W:");
|
||||
if (residencyStart > -1)
|
||||
{
|
||||
codenum = ((TEMP_RESIDENCY_TIME * 1000UL) - (millis() - residencyStart)) / 1000UL;
|
||||
SERIAL_PROTOCOLLN(codenum);
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_PROTOCOLLN("?");
|
||||
}
|
||||
}
|
||||
#else
|
||||
SERIAL_PROTOCOLLN("");
|
||||
#endif
|
||||
|
|
@ -3984,15 +3990,18 @@ Sigma_Exit:
|
|||
{
|
||||
if(( millis() - codenum) > 1000 ) //Print Temp Reading every 1 second while heating up.
|
||||
{
|
||||
float tt=degHotend(active_extruder);
|
||||
SERIAL_PROTOCOLPGM("T:");
|
||||
SERIAL_PROTOCOL(tt);
|
||||
SERIAL_PROTOCOLPGM(" E:");
|
||||
SERIAL_PROTOCOL((int)active_extruder);
|
||||
SERIAL_PROTOCOLPGM(" B:");
|
||||
SERIAL_PROTOCOL_F(degBed(),1);
|
||||
SERIAL_PROTOCOLLN("");
|
||||
codenum = millis();
|
||||
if (!farm_mode) {
|
||||
float tt = degHotend(active_extruder);
|
||||
SERIAL_PROTOCOLPGM("T:");
|
||||
SERIAL_PROTOCOL(tt);
|
||||
SERIAL_PROTOCOLPGM(" E:");
|
||||
SERIAL_PROTOCOL((int)active_extruder);
|
||||
SERIAL_PROTOCOLPGM(" B:");
|
||||
SERIAL_PROTOCOL_F(degBed(), 1);
|
||||
SERIAL_PROTOCOLLN("");
|
||||
}
|
||||
codenum = millis();
|
||||
|
||||
}
|
||||
manage_heater();
|
||||
manage_inactivity();
|
||||
|
|
|
|||
|
|
@ -412,18 +412,55 @@ BedSkewOffsetDetectionResultType calculate_machine_skew_and_offset_LS(
|
|||
cntr[1] = 0.f;
|
||||
float wx = 0.f;
|
||||
float wy = 0.f;
|
||||
for (int8_t i = 0; i < 9; ++ i) {
|
||||
for (int8_t i = 0; i < npts; ++ i) {
|
||||
float x = vec_x[0] * measured_pts[i * 2] + vec_y[0] * measured_pts[i * 2 + 1];
|
||||
float y = vec_x[1] * measured_pts[i * 2] + vec_y[1] * measured_pts[i * 2 + 1];
|
||||
float w = point_weight_x(i, y);
|
||||
cntr[0] += w * (pgm_read_float(true_pts + i * 2) - x);
|
||||
wx += w;
|
||||
cntr[0] += w * (pgm_read_float(true_pts + i * 2) - x);
|
||||
wx += w;
|
||||
if (verbosity_level >= 20) {
|
||||
MYSERIAL.print(i);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("Weight_x:");
|
||||
MYSERIAL.print(w);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("cntr[0]:");
|
||||
MYSERIAL.print(cntr[0]);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("wx:");
|
||||
MYSERIAL.print(wx);
|
||||
}
|
||||
w = point_weight_y(i, y);
|
||||
cntr[1] += w * (pgm_read_float(true_pts + i * 2 + 1) - y);
|
||||
wy += w;
|
||||
}
|
||||
cntr[1] += w * (pgm_read_float(true_pts + i * 2 + 1) - y);
|
||||
wy += w;
|
||||
|
||||
if (verbosity_level >= 20) {
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("Weight_y:");
|
||||
MYSERIAL.print(w);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("cntr[1]:");
|
||||
MYSERIAL.print(cntr[1]);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("wy:");
|
||||
MYSERIAL.print(wy);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("");
|
||||
}
|
||||
}
|
||||
cntr[0] /= wx;
|
||||
cntr[1] /= wy;
|
||||
if (verbosity_level >= 20) {
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("Final cntr values:");
|
||||
SERIAL_ECHOLNPGM("cntr[0]:");
|
||||
MYSERIAL.print(cntr[0]);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
SERIAL_ECHOLNPGM("cntr[1]:");
|
||||
MYSERIAL.print(cntr[1]);
|
||||
SERIAL_ECHOLNPGM("");
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -605,18 +642,24 @@ void world2machine_initialize()
|
|||
// Length of the vec_x shall be close to unity.
|
||||
float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]);
|
||||
if (l < 0.9 || l > 1.1) {
|
||||
SERIAL_ECHOLNPGM("X vector length:");
|
||||
MYSERIAL.println(l);
|
||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range.");
|
||||
reset = true;
|
||||
}
|
||||
// Length of the vec_y shall be close to unity.
|
||||
l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]);
|
||||
if (l < 0.9 || l > 1.1) {
|
||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the X vector out of range.");
|
||||
SERIAL_ECHOLNPGM("Y vector length:");
|
||||
MYSERIAL.println(l);
|
||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Length of the Y vector out of range.");
|
||||
reset = true;
|
||||
}
|
||||
// Correction of the zero point shall be reasonably small.
|
||||
l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]);
|
||||
if (l > 15.f) {
|
||||
SERIAL_ECHOLNPGM("Zero point correction:");
|
||||
MYSERIAL.println(l);
|
||||
SERIAL_ECHOLNPGM("Invalid bed correction matrix. Shift out of range.");
|
||||
reset = true;
|
||||
}
|
||||
|
|
@ -1654,7 +1697,27 @@ BedSkewOffsetDetectionResultType find_bed_offset_and_skew(int8_t verbosity_level
|
|||
eeprom_update_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +0), vec_y[0]);
|
||||
eeprom_update_float((float*)(EEPROM_BED_CALIBRATION_VEC_Y +4), vec_y[1]);
|
||||
#endif
|
||||
if (verbosity_level >= 10) {
|
||||
// Length of the vec_x
|
||||
float l = sqrt(vec_x[0] * vec_x[0] + vec_x[1] * vec_x[1]);
|
||||
SERIAL_ECHOLNPGM("X vector length:");
|
||||
MYSERIAL.println(l);
|
||||
|
||||
// Length of the vec_y
|
||||
l = sqrt(vec_y[0] * vec_y[0] + vec_y[1] * vec_y[1]);
|
||||
SERIAL_ECHOLNPGM("Y vector length:");
|
||||
MYSERIAL.println(l);
|
||||
// Zero point correction
|
||||
l = sqrt(cntr[0] * cntr[0] + cntr[1] * cntr[1]);
|
||||
SERIAL_ECHOLNPGM("Zero point correction:");
|
||||
MYSERIAL.println(l);
|
||||
|
||||
// vec_x and vec_y shall be nearly perpendicular.
|
||||
l = vec_x[0] * vec_y[0] + vec_x[1] * vec_y[1];
|
||||
SERIAL_ECHOLNPGM("Perpendicularity");
|
||||
MYSERIAL.println(fabs(l));
|
||||
SERIAL_ECHOLNPGM("Saving bed calibration vectors to EEPROM");
|
||||
}
|
||||
// Correct the current_position to match the transformed coordinate system after world2machine_rotation_and_skew and world2machine_shift were set.
|
||||
world2machine_update_current();
|
||||
|
||||
|
|
|
|||
|
|
@ -1874,6 +1874,7 @@ void lcd_diag_show_end_stops()
|
|||
|
||||
|
||||
void prusa_statistics(int _message) {
|
||||
|
||||
|
||||
switch (_message)
|
||||
{
|
||||
|
|
@ -1883,6 +1884,7 @@ void prusa_statistics(int _message) {
|
|||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(4);
|
||||
status_number = 4;
|
||||
prusa_stat_printinfo();
|
||||
SERIAL_ECHOLN("}");
|
||||
}
|
||||
|
|
@ -1890,6 +1892,7 @@ void prusa_statistics(int _message) {
|
|||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(1);
|
||||
status_number = 1;
|
||||
SERIAL_ECHOLN("}");
|
||||
}
|
||||
break;
|
||||
|
|
@ -1898,6 +1901,7 @@ void prusa_statistics(int _message) {
|
|||
farm_status = 2;
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(2);
|
||||
status_number = 2;
|
||||
SERIAL_ECHOLN("}");
|
||||
farm_timer = 1;
|
||||
break;
|
||||
|
|
@ -1906,6 +1910,7 @@ void prusa_statistics(int _message) {
|
|||
farm_status = 3;
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(3);
|
||||
status_number = 3;
|
||||
SERIAL_ECHOLN("}");
|
||||
farm_timer = 1;
|
||||
|
||||
|
|
@ -1914,12 +1919,14 @@ void prusa_statistics(int _message) {
|
|||
farm_status = 4;
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(4);
|
||||
status_number = 4;
|
||||
SERIAL_ECHOLN("}");
|
||||
}
|
||||
else
|
||||
{
|
||||
SERIAL_ECHO("{");
|
||||
prusa_stat_printerstatus(3);
|
||||
status_number = 3;
|
||||
SERIAL_ECHOLN("}");;
|
||||
}
|
||||
farm_timer = 1;
|
||||
|
|
@ -1938,14 +1945,17 @@ void prusa_statistics(int _message) {
|
|||
break;
|
||||
case 6: // print done
|
||||
SERIAL_ECHOLN("{[PRN:8]}");
|
||||
status_number = 8;
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 7: // print done - stopped
|
||||
SERIAL_ECHOLN("{[PRN:9]}");
|
||||
status_number = 9;
|
||||
farm_timer = 2;
|
||||
break;
|
||||
case 8: // printer started
|
||||
SERIAL_ECHO("{[PRN:0][PFN:");
|
||||
status_number = 0;
|
||||
SERIAL_ECHO(farm_no);
|
||||
SERIAL_ECHOLN("]}");
|
||||
farm_timer = 2;
|
||||
|
|
@ -1963,6 +1973,7 @@ void prusa_statistics(int _message) {
|
|||
break;
|
||||
case 22: // waiting for filament change
|
||||
SERIAL_ECHOLN("{[PRN:5]}");
|
||||
status_number = 5;
|
||||
break;
|
||||
|
||||
case 90: // Error - Thermal Runaway
|
||||
|
|
@ -3166,6 +3177,7 @@ static void lcd_main_menu()
|
|||
MENU_ITEM(submenu, MSG_UNLOAD_FILAMENT, fil_unload_menu);
|
||||
MENU_ITEM(submenu, MSG_CHANGE_EXTR, change_extr_menu);
|
||||
#endif
|
||||
//MENU_ITEM(function, PSTR("belt test"), belt_test);
|
||||
MENU_ITEM(submenu, MSG_SETTINGS, lcd_settings_menu);
|
||||
if(!isPrintPaused) MENU_ITEM(submenu, MSG_MENU_CALIBRATION, lcd_calibration_menu);
|
||||
}
|
||||
|
|
@ -3551,6 +3563,251 @@ menu_edit_type(float, float52, ftostr52, 100)
|
|||
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
||||
|
||||
|
||||
static void belt_test() {
|
||||
|
||||
|
||||
/*lcd_update_enable(false);
|
||||
float coordinate[2] = { 253, 215.5 };
|
||||
float max = 10;
|
||||
float step = 0.5; //mm
|
||||
float change_belt = 2.5; //mm
|
||||
float excellent = 1;
|
||||
|
||||
//set motor current higherdigipot_current(0, 850); //set motor current higher
|
||||
//current_position[Z_AXIS] += 15;
|
||||
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
|
||||
for (int j = 0; j < 2; j++) {
|
||||
lcd_implementation_clear();
|
||||
j == 0 ? lcd_printPGM(PSTR("Testing X belt")) : lcd_printPGM(PSTR("Testing Y belt"));
|
||||
for (int i = 0; i < max*(1 / step); i++) {
|
||||
|
||||
if (i == 0) {
|
||||
current_position[j] += coordinate[j] + max;
|
||||
j == 0 ? digipot_current(0, 130):digipot_current(0, 60);
|
||||
}
|
||||
else {
|
||||
current_position[j] += ((float)i - 1.f)*step;
|
||||
}
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
digipot_current(0, 500);
|
||||
if (i == 0) current_position[j] -= coordinate[j];
|
||||
else current_position[j] -= (float)i * step;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
|
||||
|
||||
st_synchronize();
|
||||
if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) || (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1)) {
|
||||
//lcd_display_message_fullscreen_P(PSTR("Endstop hit"));
|
||||
lcd.setCursor(0, 0);
|
||||
if (i < (excellent / step)) lcd_printPGM(PSTR("Excelent condition ")); //1 mm
|
||||
else if (i < (change_belt / step)) lcd_printPGM(PSTR("Belt ok ")); //2.5 mm
|
||||
else lcd_printPGM(PSTR("Change the belt ")); //>2.5mm
|
||||
|
||||
delay_keep_alive(5000);
|
||||
|
||||
|
||||
|
||||
i = max*(1 / step);
|
||||
}
|
||||
else {
|
||||
lcd.setCursor((change_belt / step), 1); lcd_printPGM(PSTR("|"));
|
||||
lcd.setCursor((change_belt / step), 2); lcd_printPGM(PSTR("|"));
|
||||
lcd.setCursor((change_belt / step), 3); lcd_printPGM(PSTR("|"));
|
||||
|
||||
lcd.setCursor(i, 2);
|
||||
if (i == (change_belt / step)) lcd_printPGM(PSTR("+"));
|
||||
else lcd_printPGM(PSTR("-"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
enquecommand_P(PSTR("G28 W"));
|
||||
lcd_update_enable(true);
|
||||
digipot_current(0, 800);
|
||||
lcd_update(2);
|
||||
return;*/
|
||||
|
||||
/*
|
||||
13.f - BED_ZERO_REF_X, 6.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 6.4f - BED_ZERO_REF_Y,
|
||||
216.f - BED_ZERO_REF_X, 6.4f - BED_ZERO_REF_Y,
|
||||
|
||||
216.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y,
|
||||
13.f - BED_ZERO_REF_X, 104.4f - BED_ZERO_REF_Y,
|
||||
|
||||
13.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y,
|
||||
115.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y,
|
||||
216.f - BED_ZERO_REF_X, 202.4f - BED_ZERO_REF_Y
|
||||
|
||||
|
||||
#define BED_ZERO_REF_X (- 22.f + X_PROBE_OFFSET_FROM_EXTRUDER)
|
||||
#define BED_ZERO_REF_Y (- 0.6f + Y_PROBE_OFFSET_FROM_EXTRUDER)
|
||||
|
||||
#define X_PROBE_OFFSET_FROM_EXTRUDER 23 // Z probe to nozzle X offset: -left +right
|
||||
#define Y_PROBE_OFFSET_FROM_EXTRUDER 9 // Z probe to nozzle Y offset: -front +behind
|
||||
#define Z_PROBE_OFFSET_FROM_EXTRUDER -0.4
|
||||
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
lcd_update_enable(false);
|
||||
float coordinate[2] = { 210, 190 };
|
||||
float max = 10;
|
||||
float step = 0.5; //mm
|
||||
float change_belt = 2.5; //mm
|
||||
float excellent = 1;
|
||||
float safety_a = 20;
|
||||
|
||||
//set motor current higherdigipot_current(0, 850); //set motor current higher
|
||||
current_position[Z_AXIS] -= 0.4;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
for (int j = 0; j < 2; j++) {
|
||||
lcd_implementation_clear();
|
||||
j == 0 ? lcd_printPGM(PSTR("Testing X belt")) : lcd_printPGM(PSTR("Testing Y belt"));
|
||||
for (int i = 0; i < max*(1 / step); i++) {
|
||||
|
||||
if (i == 0) {
|
||||
current_position[j] += coordinate[j] - safety_a;
|
||||
//j == 0 ? digipot_current(0, 130):digipot_current(0, 60);
|
||||
}
|
||||
else {
|
||||
current_position[j] += ((float)i - 1.f)*step;
|
||||
}
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
if (i == 0) {
|
||||
for (int k = 0; k < (safety_a + max)*(1 / step); k++) {
|
||||
current_position[j] += step ;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1)) {
|
||||
k = 2000;
|
||||
}
|
||||
}
|
||||
}
|
||||
//digipot_current(0, 500);
|
||||
if (i == 0) current_position[j] -= coordinate[j];
|
||||
else current_position[j] -= (float)i * step;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
|
||||
|
||||
st_synchronize();
|
||||
if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) || (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1)) {
|
||||
//lcd_display_message_fullscreen_P(PSTR("Endstop hit"));
|
||||
lcd.setCursor(0, 0);
|
||||
//if (i < (excellent / step)) lcd_printPGM(PSTR("Change it ")); //1 mm
|
||||
if (i < (change_belt / step)) lcd_printPGM(PSTR("Change the belt ")); //2.5 mm
|
||||
else lcd_printPGM(PSTR("Belt ok ")); //>2.5mm
|
||||
|
||||
delay_keep_alive(5000);
|
||||
current_position[j] += 14;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
i = max*(1 / step);
|
||||
}
|
||||
else {
|
||||
lcd.setCursor((change_belt / step), 1); lcd_printPGM(PSTR("|"));
|
||||
lcd.setCursor((change_belt / step), 2); lcd_printPGM(PSTR("|"));
|
||||
lcd.setCursor((change_belt / step), 3); lcd_printPGM(PSTR("|"));
|
||||
|
||||
lcd.setCursor(i, 2);
|
||||
if (i == (change_belt / step)) lcd_printPGM(PSTR("+"));
|
||||
else lcd_printPGM(PSTR("-"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
enquecommand_P(PSTR("G28 W"));
|
||||
lcd_update_enable(true);
|
||||
//digipot_current(0, 800);
|
||||
lcd_update(2);
|
||||
return;*/
|
||||
|
||||
/*
|
||||
|
||||
lcd_update_enable(false);
|
||||
float coordinate[2] = { 210, 190 };
|
||||
float max = 10;
|
||||
float step = 0.5; //mm
|
||||
float change_belt = 2.5; //mm
|
||||
float excellent = 1;
|
||||
float safety_a = 20;
|
||||
|
||||
//set motor current higherdigipot_current(0, 850); //set motor current higher
|
||||
current_position[Z_AXIS] -= 0.4;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
for (int j = 0; j < 2; j++) {
|
||||
lcd_implementation_clear();
|
||||
j == 0 ? lcd_printPGM(PSTR("Testing X belt")) : lcd_printPGM(PSTR("Testing Y belt"));
|
||||
current_position[j] += coordinate[j] - safety_a;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
for (int k = 0; k < (safety_a + max)*(1 / step); k++) {
|
||||
current_position[j] += step;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING == 1)) {
|
||||
k = 2000;
|
||||
}
|
||||
}
|
||||
}
|
||||
current_position[j] -= coordinate[j];
|
||||
|
||||
|
||||
else current_position[j] -= (float)i * step;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
|
||||
|
||||
st_synchronize();
|
||||
if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING == 1) || (READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING == 1)) {
|
||||
//lcd_display_message_fullscreen_P(PSTR("Endstop hit"));
|
||||
lcd.setCursor(0, 0);
|
||||
//if (i < (excellent / step)) lcd_printPGM(PSTR("Change it ")); //1 mm
|
||||
if (i < (change_belt / step)) lcd_printPGM(PSTR("Change the belt ")); //2.5 mm
|
||||
else lcd_printPGM(PSTR("Belt ok ")); //>2.5mm
|
||||
|
||||
delay_keep_alive(5000);
|
||||
current_position[j] += 14;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
i = max*(1 / step);
|
||||
}
|
||||
else {
|
||||
lcd.setCursor((change_belt / step), 1); lcd_printPGM(PSTR("|"));
|
||||
lcd.setCursor((change_belt / step), 2); lcd_printPGM(PSTR("|"));
|
||||
lcd.setCursor((change_belt / step), 3); lcd_printPGM(PSTR("|"));
|
||||
|
||||
lcd.setCursor(i, 2);
|
||||
if (i == (change_belt / step)) lcd_printPGM(PSTR("+"));
|
||||
else lcd_printPGM(PSTR("-"));
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
enquecommand_P(PSTR("G28 W"));
|
||||
lcd_update_enable(true);
|
||||
//digipot_current(0, 800);
|
||||
lcd_update(2);
|
||||
return;
|
||||
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
static void lcd_selftest()
|
||||
{
|
||||
int _progress = 0;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@
|
|||
void lcd_mylang();
|
||||
bool lcd_detected(void);
|
||||
|
||||
static void belt_test();
|
||||
|
||||
static void lcd_selftest();
|
||||
static bool lcd_selfcheck_endstops();
|
||||
static bool lcd_selfcheck_axis(int _axis, int _travel);
|
||||
|
|
|
|||
Loading…
Reference in New Issue