Start of process to get UBL running again.
The wait_for_user change totally broke UBL. But there is stuff wrong now in the thermal code and/or LCD Panel code.
This commit is contained in:
		
							parent
							
								
									b47eaf14ae
								
							
						
					
					
						commit
						aec85ad45a
					
				| @ -199,6 +199,7 @@ | |||||||
|       set_current_to_destination(); |       set_current_to_destination(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     ubl_has_control_of_lcd_panel = true; // Take control of the LCD Panel!
 | ||||||
|     if (turn_on_heaters())     // Turn on the heaters, leave the command if anything
 |     if (turn_on_heaters())     // Turn on the heaters, leave the command if anything
 | ||||||
|       goto LEAVE;              // has gone wrong.
 |       goto LEAVE;              // has gone wrong.
 | ||||||
| 
 | 
 | ||||||
| @ -233,19 +234,30 @@ | |||||||
|     move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0.0); |     move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0.0); | ||||||
|     move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], ooze_amount); |     move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], ooze_amount); | ||||||
| 
 | 
 | ||||||
|     ubl_has_control_of_lcd_panel++; // Take control of the LCD Panel!
 |     ubl_has_control_of_lcd_panel = true; // Take control of the LCD Panel!
 | ||||||
|     debug_current_and_destination((char*)"Starting G26 Mesh Validation Pattern."); |     debug_current_and_destination((char*)"Starting G26 Mesh Validation Pattern."); | ||||||
| 
 | 
 | ||||||
|     wait_for_user = true; |     /**
 | ||||||
|  |      * Declare and generate a sin() & cos() table to be used during the circle drawing.  This will lighten | ||||||
|  |      * the CPU load and make the arc drawing faster and more smooth | ||||||
|  |      */ | ||||||
|  |     float sin_table[360 / 30 + 1], cos_table[360 / 30 + 1]; | ||||||
|  |     for (i = 0; i <= 360 / 30; i++) { | ||||||
|  |       cos_table[i] = SIZE_OF_INTERSECTION_CIRCLES * cos(RADIANS(valid_trig_angle(i * 30.0))); | ||||||
|  |       sin_table[i] = SIZE_OF_INTERSECTION_CIRCLES * sin(RADIANS(valid_trig_angle(i * 30.0))); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     do { |     do { | ||||||
| 
 | 
 | ||||||
|       if (!wait_for_user) {                                     // Check if the user wants to stop the Mesh Validation
 |       if (ubl_lcd_clicked()) {                                  // Check if the user wants to stop the Mesh Validation
 | ||||||
|         strcpy(lcd_status_message, "Mesh Validation Stopped."); // We can't do lcd_setstatus() without having it continue;
 |         strcpy(lcd_status_message, "Mesh Validation Stopped."); // We can't do lcd_setstatus() without having it continue;
 | ||||||
|         #if ENABLED(ULTRA_LCD) |         #if ENABLED(ULTRA_LCD) | ||||||
|           lcd_setstatus("Mesh Validation Stopped.", true); |           lcd_setstatus("Mesh Validation Stopped.", true); | ||||||
|           lcd_quick_feedback(); |           lcd_quick_feedback(); | ||||||
|         #endif |         #endif | ||||||
|  |         while (ubl_lcd_clicked()) {         // Wait until the user is done pressing the
 | ||||||
|  |           idle();                           // Encoder Wheel if that is why we are leaving
 | ||||||
|  |         } | ||||||
|         goto LEAVE; |         goto LEAVE; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
| @ -309,16 +321,6 @@ | |||||||
|           end_angle   = 360.0; |           end_angle   = 360.0; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         /**
 |  | ||||||
|          * Declare and generate a sin() & cos() table to be used during the circle drawing.  This will lighten |  | ||||||
|          * the CPU load and make the arc drawing faster and more smooth |  | ||||||
|          */ |  | ||||||
|         float sin_table[360 / 30 + 1], cos_table[360 / 30 + 1]; |  | ||||||
|         for (i = 0; i <= 360 / 30; i++) { |  | ||||||
|           cos_table[i] = SIZE_OF_INTERSECTION_CIRCLES * cos(RADIANS(valid_trig_angle(i * 30.0))); |  | ||||||
|           sin_table[i] = SIZE_OF_INTERSECTION_CIRCLES * sin(RADIANS(valid_trig_angle(i * 30.0))); |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         for (tmp = start_angle; tmp < end_angle - 0.1; tmp += 30.0) { |         for (tmp = start_angle; tmp < end_angle - 0.1; tmp += 30.0) { | ||||||
|           int tmp_div_30 = tmp / 30.0; |           int tmp_div_30 = tmp / 30.0; | ||||||
|           if (tmp_div_30 < 0) tmp_div_30 += 360 / 30; |           if (tmp_div_30 < 0) tmp_div_30 += 360 / 30; | ||||||
| @ -351,13 +353,16 @@ | |||||||
|           } |           } | ||||||
| 
 | 
 | ||||||
|           print_line_from_here_to_there(x, y, layer_height, xe, ye, layer_height); |           print_line_from_here_to_there(x, y, layer_height, xe, ye, layer_height); | ||||||
|         } |  | ||||||
|         lcd_init_counter++; |  | ||||||
|         if (lcd_init_counter > 10) { |  | ||||||
|           lcd_init_counter = 0; |  | ||||||
|           lcd_init(); // Some people's LCD Displays are locking up.  This might help them
 |  | ||||||
|         } |  | ||||||
| 
 | 
 | ||||||
|  |         } | ||||||
|  | //      lcd_init_counter++;
 | ||||||
|  | //      if (lcd_init_counter > 10) {
 | ||||||
|  | //        lcd_init_counter = 0;
 | ||||||
|  | //        lcd_init(); // Some people's LCD Displays are locking up.  This might help them
 | ||||||
|  | //        ubl_has_control_of_lcd_panel = true;     // Make sure UBL still is controlling the LCD Panel
 | ||||||
|  | //      }
 | ||||||
|  | 
 | ||||||
|  |     // If the end point of the line is closer to the nozzle, we are going to
 | ||||||
|         debug_current_and_destination((char*)"Looking for lines to connect."); |         debug_current_and_destination((char*)"Looking for lines to connect."); | ||||||
|         look_for_lines_to_connect(); |         look_for_lines_to_connect(); | ||||||
|         debug_current_and_destination((char*)"Done with line connect."); |         debug_current_and_destination((char*)"Done with line connect."); | ||||||
| @ -365,21 +370,24 @@ | |||||||
| 
 | 
 | ||||||
|       debug_current_and_destination((char*)"Done with current circle."); |       debug_current_and_destination((char*)"Done with current circle."); | ||||||
| 
 | 
 | ||||||
|  |     // If the end point of the line is closer to the nozzle, we are going to
 | ||||||
|  | 
 | ||||||
|     } |     } | ||||||
|     while (location.x_index >= 0 && location.y_index >= 0); |     while (location.x_index >= 0 && location.y_index >= 0); | ||||||
| 
 | 
 | ||||||
|     LEAVE: |     LEAVE: | ||||||
| 
 | 
 | ||||||
|     wait_for_user = false; |     while (ubl_lcd_clicked()) {         // Wait until the user is done pressing the
 | ||||||
| 
 |       idle();                           // Encoder Wheel if that is why we are leaving
 | ||||||
|  |     } | ||||||
|     retract_filament(); |     retract_filament(); | ||||||
|     destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES;                             // Raise the nozzle
 |     destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES;                             // Raise the nozzle
 | ||||||
| 
 | 
 | ||||||
|     debug_current_and_destination((char*)"ready to do Z-Raise."); |     debug_current_and_destination((char*)"ready to do Z-Raise."); | ||||||
|     move_to( destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0); // Raise the nozzle
 |     move_to( destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], 0);   // Raise the nozzle
 | ||||||
|     debug_current_and_destination((char*)"done doing Z-Raise."); |     debug_current_and_destination((char*)"done doing Z-Raise."); | ||||||
| 
 | 
 | ||||||
|     destination[X_AXIS] = x_pos;                                                // Move back to the starting position
 |     destination[X_AXIS] = x_pos;                                                  // Move back to the starting position
 | ||||||
|     destination[Y_AXIS] = y_pos; |     destination[Y_AXIS] = y_pos; | ||||||
|     destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES;                             // Keep the nozzle where it is
 |     destination[Z_AXIS] = Z_CLEARANCE_BETWEEN_PROBES;                             // Keep the nozzle where it is
 | ||||||
| 
 | 
 | ||||||
| @ -538,6 +546,8 @@ | |||||||
|     float feed_value; |     float feed_value; | ||||||
|     static float last_z = -999.99; |     static float last_z = -999.99; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|     bool has_xy_component = (x != current_position[X_AXIS] || y != current_position[Y_AXIS]); // Check if X or Y is involved in the movement.
 |     bool has_xy_component = (x != current_position[X_AXIS] || y != current_position[Y_AXIS]); // Check if X or Y is involved in the movement.
 | ||||||
| 
 | 
 | ||||||
|     if (g26_debug_flag) { |     if (g26_debug_flag) { | ||||||
| @ -591,6 +601,7 @@ | |||||||
| 
 | 
 | ||||||
|     stepper.synchronize(); |     stepper.synchronize(); | ||||||
|     set_destination_to_current(); |     set_destination_to_current(); | ||||||
|  | 
 | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   void retract_filament() { |   void retract_filament() { | ||||||
| @ -658,16 +669,23 @@ | |||||||
|       if (g26_debug_flag) |       if (g26_debug_flag) | ||||||
|         SERIAL_ECHOLNPGM("  filament retracted."); |         SERIAL_ECHOLNPGM("  filament retracted."); | ||||||
|     } |     } | ||||||
|  |     // If the end point of the line is closer to the nozzle, we are going to
 | ||||||
|     move_to(sx, sy, sz, 0.0); // Get to the starting point with no extrusion
 |     move_to(sx, sy, sz, 0.0); // Get to the starting point with no extrusion
 | ||||||
| 
 | 
 | ||||||
|  |     // If the end point of the line is closer to the nozzle, we are going to
 | ||||||
|  | 
 | ||||||
|     float e_pos_delta = Line_Length * g26_e_axis_feedrate * extrusion_multiplier; |     float e_pos_delta = Line_Length * g26_e_axis_feedrate * extrusion_multiplier; | ||||||
| 
 | 
 | ||||||
|     un_retract_filament(); |     un_retract_filament(); | ||||||
|  | 
 | ||||||
|  |     // If the end point of the line is closer to the nozzle, we are going to
 | ||||||
|     if (g26_debug_flag) { |     if (g26_debug_flag) { | ||||||
|       SERIAL_ECHOLNPGM("  doing printing move."); |       SERIAL_ECHOLNPGM("  doing printing move."); | ||||||
|       debug_current_and_destination((char*)"doing final move_to() inside print_line_from_here_to_there()"); |       debug_current_and_destination((char*)"doing final move_to() inside print_line_from_here_to_there()"); | ||||||
|     } |     } | ||||||
|     move_to(ex, ey, ez, e_pos_delta);  // Get to the ending point with an appropriate amount of extrusion
 |     move_to(ex, ey, ez, e_pos_delta);  // Get to the ending point with an appropriate amount of extrusion
 | ||||||
|  | 
 | ||||||
|  |     // If the end point of the line is closer to the nozzle, we are going to
 | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   /**
 |   /**
 | ||||||
| @ -815,18 +833,18 @@ | |||||||
|           lcd_setstatus("G26 Heating Bed.", true); |           lcd_setstatus("G26 Heating Bed.", true); | ||||||
|           lcd_quick_feedback(); |           lcd_quick_feedback(); | ||||||
|       #endif |       #endif | ||||||
|           ubl_has_control_of_lcd_panel++; |           ubl_has_control_of_lcd_panel = true; | ||||||
|           thermalManager.setTargetBed(bed_temp); |           thermalManager.setTargetBed(bed_temp); | ||||||
|           wait_for_user = true; |  | ||||||
|           while (abs(thermalManager.degBed() - bed_temp) > 3) { |           while (abs(thermalManager.degBed() - bed_temp) > 3) { | ||||||
|             if (!wait_for_user) { |             if (ubl_lcd_clicked()) { | ||||||
|               strcpy(lcd_status_message, "Leaving G26"); // We can't do lcd_setstatus() without having it continue;
 |               strcpy(lcd_status_message, "Leaving G26"); // We can't do lcd_setstatus() without having it continue;
 | ||||||
|               lcd_setstatus("Leaving G26", true);        // Now we do it right.
 |               lcd_setstatus("Leaving G26", true);        // Now we do it right.
 | ||||||
|  |               while (ubl_lcd_clicked())                  // Debounce Encoder Wheel 
 | ||||||
|  |                 idle(); | ||||||
|               return UBL_ERR; |               return UBL_ERR; | ||||||
|             } |             } | ||||||
|             idle(); |             idle(); | ||||||
|           } |           } | ||||||
|           wait_for_user = false; |  | ||||||
|       #if ENABLED(ULTRA_LCD) |       #if ENABLED(ULTRA_LCD) | ||||||
|         } |         } | ||||||
|         lcd_setstatus("G26 Heating Nozzle.", true); |         lcd_setstatus("G26 Heating Nozzle.", true); | ||||||
| @ -836,16 +854,16 @@ | |||||||
| 
 | 
 | ||||||
|     // Start heating the nozzle and wait for it to reach temperature.
 |     // Start heating the nozzle and wait for it to reach temperature.
 | ||||||
|     thermalManager.setTargetHotend(hotend_temp, 0); |     thermalManager.setTargetHotend(hotend_temp, 0); | ||||||
|     wait_for_user = true; |  | ||||||
|     while (abs(thermalManager.degHotend(0) - hotend_temp) > 3) { |     while (abs(thermalManager.degHotend(0) - hotend_temp) > 3) { | ||||||
|       if (!wait_for_user) { |       if (ubl_lcd_clicked()) { | ||||||
|         strcpy(lcd_status_message, "Leaving G26"); // We can't do lcd_setstatus() without having it continue;
 |         strcpy(lcd_status_message, "Leaving G26"); // We can't do lcd_setstatus() without having it continue;
 | ||||||
|         lcd_setstatus("Leaving G26", true);        // Now we do it right.
 |         lcd_setstatus("Leaving G26", true);        // Now we do it right.
 | ||||||
|  |         while (ubl_lcd_clicked())                  // Debounce Encoder Wheel 
 | ||||||
|  |           idle(); | ||||||
|         return UBL_ERR; |         return UBL_ERR; | ||||||
|       } |       } | ||||||
|       idle(); |       idle(); | ||||||
|     } |     } | ||||||
|     wait_for_user = false; |  | ||||||
| 
 | 
 | ||||||
|     #if ENABLED(ULTRA_LCD) |     #if ENABLED(ULTRA_LCD) | ||||||
|       lcd_setstatus("", true); |       lcd_setstatus("", true); | ||||||
| @ -869,9 +887,7 @@ | |||||||
|       un_retract_filament();    // Lets make sure the G26 command doesn't think the filament is
 |       un_retract_filament();    // Lets make sure the G26 command doesn't think the filament is
 | ||||||
|                                 // retracted().  We are here because we want to prime the nozzle.
 |                                 // retracted().  We are here because we want to prime the nozzle.
 | ||||||
|                                 // So let's just unretract just to be sure.
 |                                 // So let's just unretract just to be sure.
 | ||||||
| 
 |       while (!ubl_lcd_clicked()) { | ||||||
|       wait_for_user = true; |  | ||||||
|       while (wait_for_user) { |  | ||||||
|         chirp_at_user(); |         chirp_at_user(); | ||||||
|         destination[E_AXIS] += 0.25; |         destination[E_AXIS] += 0.25; | ||||||
|         #ifdef PREVENT_LENGTHY_EXTRUDE |         #ifdef PREVENT_LENGTHY_EXTRUDE | ||||||
| @ -894,9 +910,10 @@ | |||||||
| 
 | 
 | ||||||
|       strcpy(lcd_status_message, "Done Priming"); // We can't do lcd_setstatus() without having it continue;
 |       strcpy(lcd_status_message, "Done Priming"); // We can't do lcd_setstatus() without having it continue;
 | ||||||
|                                                   // So...  We cheat to get a message up.
 |                                                   // So...  We cheat to get a message up.
 | ||||||
|  |       while (ubl_lcd_clicked())                   // Debounce Encoder Wheel 
 | ||||||
|  |         idle(); | ||||||
| 
 | 
 | ||||||
|       #if ENABLED(ULTRA_LCD) |       #if ENABLED(ULTRA_LCD) | ||||||
|         ubl_has_control_of_lcd_panel = false; |  | ||||||
|         lcd_setstatus("Done Priming", true);      // Now we do it right.
 |         lcd_setstatus("Done Priming", true);      // Now we do it right.
 | ||||||
|         lcd_quick_feedback(); |         lcd_quick_feedback(); | ||||||
|       #endif |       #endif | ||||||
| @ -917,6 +934,7 @@ | |||||||
|       set_destination_to_current(); |       set_destination_to_current(); | ||||||
|       retract_filament(); |       retract_filament(); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     return UBL_OK; |     return UBL_OK; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -175,8 +175,13 @@ | |||||||
|     current_xi = ubl.get_cell_index_x(current_position[X_AXIS] + (MESH_X_DIST) / 2.0); |     current_xi = ubl.get_cell_index_x(current_position[X_AXIS] + (MESH_X_DIST) / 2.0); | ||||||
|     current_yi = ubl.get_cell_index_y(current_position[Y_AXIS] + (MESH_Y_DIST) / 2.0); |     current_yi = ubl.get_cell_index_y(current_position[Y_AXIS] + (MESH_Y_DIST) / 2.0); | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) |     for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) { | ||||||
|       SERIAL_ECHOPGM("                 "); |       SERIAL_ECHOPGM("            "); | ||||||
|  |       #if TX_BUFFER_SIZE>0 | ||||||
|  |         MYSERIAL.flushTX(); | ||||||
|  |       #endif | ||||||
|  |       delay(15); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS - 1); |     SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS - 1); | ||||||
|     SERIAL_ECHOPAIR(",", UBL_MESH_NUM_Y_POINTS - 1); |     SERIAL_ECHOPAIR(",", UBL_MESH_NUM_Y_POINTS - 1); | ||||||
| @ -188,8 +193,13 @@ | |||||||
|       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y); |       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y); | ||||||
|       SERIAL_CHAR(')'); |       SERIAL_CHAR(')'); | ||||||
| 
 | 
 | ||||||
|       for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) |       for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) { | ||||||
|         SERIAL_ECHOPGM("                 "); |         SERIAL_ECHOPGM("            "); | ||||||
|  |         #if TX_BUFFER_SIZE>0 | ||||||
|  |           MYSERIAL.flushTX(); | ||||||
|  |         #endif | ||||||
|  |         delay(15); | ||||||
|  |       } | ||||||
| 
 | 
 | ||||||
|       SERIAL_ECHOPAIR("(", UBL_MESH_MAX_X); |       SERIAL_ECHOPAIR("(", UBL_MESH_MAX_X); | ||||||
|       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y); |       SERIAL_ECHOPAIR(",", UBL_MESH_MAX_Y); | ||||||
| @ -205,13 +215,17 @@ | |||||||
|         SERIAL_CHAR(i == current_xi && j == current_yi ? '[' : ' '); |         SERIAL_CHAR(i == current_xi && j == current_yi ? '[' : ' '); | ||||||
| 
 | 
 | ||||||
|         if (isnan(f)) |         if (isnan(f)) | ||||||
|           SERIAL_PROTOCOLPGM("      .       "); |           SERIAL_PROTOCOLPGM("    .    "); | ||||||
|         else { |         else { | ||||||
|           // if we don't do this, the columns won't line up nicely
 |           // if we don't do this, the columns won't line up nicely
 | ||||||
|           if (f >= 0.0) SERIAL_CHAR(' '); |           if (f >= 0.0) SERIAL_CHAR(' '); | ||||||
|           SERIAL_PROTOCOL_F(f, 5); |           SERIAL_PROTOCOL_F(f, 3); | ||||||
|           idle(); |           idle(); | ||||||
|         } |         } | ||||||
|  |         #if TX_BUFFER_SIZE>0 | ||||||
|  |           MYSERIAL.flushTX(); | ||||||
|  |         #endif | ||||||
|  |         delay(15); | ||||||
|         if (i == current_xi && j == current_yi) // is the nozzle here? if so, finish marking the number
 |         if (i == current_xi && j == current_yi) // is the nozzle here? if so, finish marking the number
 | ||||||
|           SERIAL_CHAR(']'); |           SERIAL_CHAR(']'); | ||||||
|         else |         else | ||||||
| @ -231,27 +245,34 @@ | |||||||
|     SERIAL_ECHOPAIR(",", int(UBL_MESH_MIN_Y)); |     SERIAL_ECHOPAIR(",", int(UBL_MESH_MIN_Y)); | ||||||
|     SERIAL_ECHOPGM(")    "); |     SERIAL_ECHOPGM(")    "); | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) |     for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++)  { | ||||||
|       SERIAL_ECHOPGM("                 "); |       SERIAL_ECHOPGM("            "); | ||||||
|  |       #if TX_BUFFER_SIZE>0 | ||||||
|  |         MYSERIAL.flushTX(); | ||||||
|  |       #endif | ||||||
|  |       delay(15); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     SERIAL_ECHOPAIR("(", int(UBL_MESH_MAX_X)); |     SERIAL_ECHOPAIR("(", int(UBL_MESH_MAX_X)); | ||||||
|     SERIAL_ECHOPAIR(",", int(UBL_MESH_MIN_Y)); |     SERIAL_ECHOPAIR(",", int(UBL_MESH_MIN_Y)); | ||||||
|     SERIAL_CHAR(')'); |     SERIAL_CHAR(')'); | ||||||
|     //  }
 |     SERIAL_EOL; | ||||||
| 
 | 
 | ||||||
|     SERIAL_ECHOPAIR("(", 0); |     SERIAL_ECHOPAIR("(", 0); | ||||||
|     SERIAL_ECHOPAIR(",", 0); |     SERIAL_ECHOPAIR(",", 0); | ||||||
|     SERIAL_ECHOPGM(")       "); |     SERIAL_ECHOPGM(")       "); | ||||||
| 
 | 
 | ||||||
|     for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) |     for (i = 0; i < UBL_MESH_NUM_X_POINTS - 1; i++) { | ||||||
|       SERIAL_ECHOPGM("                 "); |       SERIAL_ECHOPGM("            "); | ||||||
|  |       #if TX_BUFFER_SIZE>0 | ||||||
|  |         MYSERIAL.flushTX(); | ||||||
|  |       #endif | ||||||
|  |       delay(15); | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS-1); |     SERIAL_ECHOPAIR("(", UBL_MESH_NUM_X_POINTS-1); | ||||||
|     SERIAL_ECHOPAIR(",", 0); |     SERIAL_ECHOPAIR(",", 0); | ||||||
|     SERIAL_CHAR(')'); |     SERIAL_ECHOLNPGM(")"); | ||||||
| 
 |  | ||||||
|     SERIAL_CHAR(' '); |  | ||||||
|     SERIAL_EOL; |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   bool unified_bed_leveling::sanity_check() { |   bool unified_bed_leveling::sanity_check() { | ||||||
|  | |||||||
| @ -594,18 +594,18 @@ | |||||||
|         save_ubl_active_state_and_disable(); |         save_ubl_active_state_and_disable(); | ||||||
|         //measured_z = probe_pt(x_pos + X_PROBE_OFFSET_FROM_EXTRUDER, y_pos + Y_PROBE_OFFSET_FROM_EXTRUDER, ProbeDeployAndStow, g29_verbose_level);
 |         //measured_z = probe_pt(x_pos + X_PROBE_OFFSET_FROM_EXTRUDER, y_pos + Y_PROBE_OFFSET_FROM_EXTRUDER, ProbeDeployAndStow, g29_verbose_level);
 | ||||||
| 
 | 
 | ||||||
|  |         ubl_has_control_of_lcd_panel = true;// Grab the LCD Hardware
 | ||||||
|         measured_z = 1.5; |         measured_z = 1.5; | ||||||
|         do_blocking_move_to_z(measured_z);  // Get close to the bed, but leave some space so we don't damage anything
 |         do_blocking_move_to_z(measured_z);  // Get close to the bed, but leave some space so we don't damage anything
 | ||||||
|                                             // The user is not going to be locking in a new Z-Offset very often so
 |                                             // The user is not going to be locking in a new Z-Offset very often so
 | ||||||
|                                             // it won't be that painful to spin the Encoder Wheel for 1.5mm
 |                                             // it won't be that painful to spin the Encoder Wheel for 1.5mm
 | ||||||
|         lcd_implementation_clear(); |         lcd_implementation_clear(); | ||||||
|         lcd_z_offset_edit_setup(measured_z); |         lcd_z_offset_edit_setup(measured_z); | ||||||
|         wait_for_user = true; |  | ||||||
|         do { |         do { | ||||||
|           measured_z = lcd_z_offset_edit(); |           measured_z = lcd_z_offset_edit(); | ||||||
|           idle(); |           idle(); | ||||||
|           do_blocking_move_to_z(measured_z); |           do_blocking_move_to_z(measured_z); | ||||||
|         } while (wait_for_user); |         } while (!ubl_lcd_clicked()); | ||||||
| 
 | 
 | ||||||
|         ubl_has_control_of_lcd_panel++;   // There is a race condition for the Encoder Wheel getting clicked.
 |         ubl_has_control_of_lcd_panel++;   // There is a race condition for the Encoder Wheel getting clicked.
 | ||||||
|                                           // It could get detected in lcd_mesh_edit (actually _lcd_mesh_fine_tune)
 |                                           // It could get detected in lcd_mesh_edit (actually _lcd_mesh_fine_tune)
 | ||||||
| @ -707,14 +707,17 @@ | |||||||
|     save_ubl_active_state_and_disable();   // we don't do bed level correction because we want the raw data when we probe
 |     save_ubl_active_state_and_disable();   // we don't do bed level correction because we want the raw data when we probe
 | ||||||
|     DEPLOY_PROBE(); |     DEPLOY_PROBE(); | ||||||
| 
 | 
 | ||||||
|     wait_for_user = true; |  | ||||||
|     do { |     do { | ||||||
|       if (!wait_for_user) { |       if (ubl_lcd_clicked()) { | ||||||
|         SERIAL_PROTOCOLLNPGM("\nMesh only partially populated."); |         SERIAL_PROTOCOLLNPGM("\nMesh only partially populated.\n"); | ||||||
|         lcd_quick_feedback(); |         lcd_quick_feedback(); | ||||||
|         ubl_has_control_of_lcd_panel = false; |  | ||||||
|         STOW_PROBE(); |         STOW_PROBE(); | ||||||
|  |         while (ubl_lcd_clicked() ) { | ||||||
|  |           idle(); | ||||||
|  |         } | ||||||
|  |         ubl_has_control_of_lcd_panel = false; | ||||||
|         restore_ubl_active_state_and_leave(); |         restore_ubl_active_state_and_leave(); | ||||||
|  |         delay(50);  // Debounce the Encoder wheel
 | ||||||
|         return; |         return; | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
| @ -737,7 +740,6 @@ | |||||||
| 
 | 
 | ||||||
|     LEAVE: |     LEAVE: | ||||||
| 
 | 
 | ||||||
|     wait_for_user = false; |  | ||||||
|     STOW_PROBE(); |     STOW_PROBE(); | ||||||
|     restore_ubl_active_state_and_leave(); |     restore_ubl_active_state_and_leave(); | ||||||
| 
 | 
 | ||||||
| @ -813,8 +815,7 @@ | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   float use_encoder_wheel_to_measure_point() { |   float use_encoder_wheel_to_measure_point() { | ||||||
|     wait_for_user = true; |     while (!ubl_lcd_clicked()) {     // we need the loop to move the nozzle based on the encoder wheel here!
 | ||||||
|     while (wait_for_user) {     // we need the loop to move the nozzle based on the encoder wheel here!
 |  | ||||||
|       idle(); |       idle(); | ||||||
|       if (ubl_encoderDiff) { |       if (ubl_encoderDiff) { | ||||||
|         do_blocking_move_to_z(current_position[Z_AXIS] + 0.01 * float(ubl_encoderDiff)); |         do_blocking_move_to_z(current_position[Z_AXIS] + 0.01 * float(ubl_encoderDiff)); | ||||||
| @ -891,8 +892,8 @@ | |||||||
|       last_x = xProbe; |       last_x = xProbe; | ||||||
|       last_y = yProbe; |       last_y = yProbe; | ||||||
| 
 | 
 | ||||||
|       wait_for_user = true; |       ubl_has_control_of_lcd_panel = true; | ||||||
|       while (wait_for_user) {     // we need the loop to move the nozzle based on the encoder wheel here!
 |       while (!ubl_lcd_clicked) {     // we need the loop to move the nozzle based on the encoder wheel here!
 | ||||||
|         idle(); |         idle(); | ||||||
|         if (ubl_encoderDiff) { |         if (ubl_encoderDiff) { | ||||||
|           do_blocking_move_to_z(current_position[Z_AXIS] + float(ubl_encoderDiff) / 100.0); |           do_blocking_move_to_z(current_position[Z_AXIS] + float(ubl_encoderDiff) / 100.0); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user