Przeglądaj źródła

Merge pull request #7098 from thinkyhead/bf_ubl_steps

Step-by-Step Menu addition
Scott Lahteine 8 lat temu
rodzic
commit
d5368461f9

+ 3
- 0
Marlin/language_en.h Wyświetl plik

334
 #ifndef MSG_UBL_Z_OFFSET_STOPPED
334
 #ifndef MSG_UBL_Z_OFFSET_STOPPED
335
   #define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Z-Offset Stopped")
335
   #define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Z-Offset Stopped")
336
 #endif
336
 #endif
337
+#ifndef MSG_UBL_STEP_BY_STEP_MENU
338
+  #define MSG_UBL_STEP_BY_STEP_MENU           _UxGT("Step-By-Step UBL")
339
+#endif
337
 
340
 
338
 #ifndef MSG_MOVING
341
 #ifndef MSG_MOVING
339
   #define MSG_MOVING                          _UxGT("Moving...")
342
   #define MSG_MOVING                          _UxGT("Moving...")

+ 121
- 73
Marlin/ultralcd.cpp Wyświetl plik

1754
 
1754
 
1755
     /**
1755
     /**
1756
      * Step 1: Bed Level entry-point
1756
      * Step 1: Bed Level entry-point
1757
-     *  - Cancel
1758
-     *  - Auto Home       (if homing needed)
1759
-     *  - Leveling On/Off (if data exists, and homed)
1760
-     *  - Level Bed >
1761
-     *  - Fade Height     (Req: ENABLE_LEVELING_FADE_HEIGHT)
1762
-     *  - Mesh Z Offset   (Req: MESH_BED_LEVELING)
1763
-     *  - Z Probe Offset  (Req: HAS_BED_PROBE, Opt: BABYSTEP_ZPROBE_OFFSET)
1764
-     *  - Load Settings   (Req: EEPROM_SETTINGS)
1765
-     *  - Save Settings   (Req: EEPROM_SETTINGS)
1757
+     *
1758
+     * << Prepare
1759
+     *    Auto Home           (if homing needed)
1760
+     *    Leveling On/Off     (if data exists, and homed)
1761
+     *    Level Bed
1762
+     *    Fade Height: ---    (Req: ENABLE_LEVELING_FADE_HEIGHT)
1763
+     *    Mesh Z Offset: ---  (Req: MESH_BED_LEVELING)
1764
+     *    Z Probe Offset: --- (Req: HAS_BED_PROBE, Opt: BABYSTEP_ZPROBE_OFFSET)
1765
+     *    Load Settings       (Req: EEPROM_SETTINGS)
1766
+     *    Save Settings       (Req: EEPROM_SETTINGS)
1766
      */
1767
      */
1767
     void lcd_bed_leveling() {
1768
     void lcd_bed_leveling() {
1768
       START_MENU();
1769
       START_MENU();
1833
 
1834
 
1834
     /**
1835
     /**
1835
      * UBL Custom Mesh submenu
1836
      * UBL Custom Mesh submenu
1837
+     *
1838
+     * << Build Mesh
1839
+     *    Hotend Temp: ---
1840
+     *    Bed Temp: ---
1841
+     *    Build Custom Mesh
1836
      */
1842
      */
1837
     void _lcd_ubl_custom_mesh() {
1843
     void _lcd_ubl_custom_mesh() {
1838
       START_MENU();
1844
       START_MENU();
1858
 
1864
 
1859
     /**
1865
     /**
1860
      * UBL Adjust Mesh Height submenu
1866
      * UBL Adjust Mesh Height submenu
1867
+     *
1868
+     * << Edit Mesh
1869
+     *    Height Amount: ---
1870
+     *    Adjust Mesh Height
1871
+     * << Info Screen
1861
      */
1872
      */
1862
     void _lcd_ubl_height_adjust_menu() {
1873
     void _lcd_ubl_height_adjust_menu() {
1863
       START_MENU();
1874
       START_MENU();
1870
 
1881
 
1871
     /**
1882
     /**
1872
      * UBL Edit Mesh submenu
1883
      * UBL Edit Mesh submenu
1884
+     *
1885
+     * << UBL Tools
1886
+     *    Fine Tune All
1887
+     *    Fine Tune Closest
1888
+     *  - Adjust Mesh Height >>
1889
+     * << Info Screen
1873
      */
1890
      */
1874
     void _lcd_ubl_edit_mesh() {
1891
     void _lcd_ubl_edit_mesh() {
1875
       START_MENU();
1892
       START_MENU();
1899
 
1916
 
1900
     /**
1917
     /**
1901
      * UBL Validate Mesh submenu
1918
      * UBL Validate Mesh submenu
1919
+     *
1920
+     * << UBL Tools
1921
+     *    PLA Mesh Validation
1922
+     *    ABS Mesh Validation
1923
+     *    Validate Custom Mesh
1924
+     * << Info Screen
1902
      */
1925
      */
1903
     void _lcd_ubl_validate_mesh() {
1926
     void _lcd_ubl_validate_mesh() {
1904
       START_MENU();
1927
       START_MENU();
1926
 
1949
 
1927
     /**
1950
     /**
1928
      * UBL Grid Leveling submenu
1951
      * UBL Grid Leveling submenu
1952
+     *
1953
+     * << UBL Tools
1954
+     *    Side points: ---
1955
+     *    Level Mesh
1929
      */
1956
      */
1930
     void _lcd_ubl_grid_level() {
1957
     void _lcd_ubl_grid_level() {
1931
       START_MENU();
1958
       START_MENU();
1937
 
1964
 
1938
     /**
1965
     /**
1939
      * UBL Mesh Leveling submenu
1966
      * UBL Mesh Leveling submenu
1967
+     *
1968
+     * << UBL Tools
1969
+     *    3-Point Mesh Leveling
1970
+     *  - Grid Mesh Leveling >>
1971
+     * << Info Screen
1940
      */
1972
      */
1941
     void _lcd_ubl_mesh_leveling() {
1973
     void _lcd_ubl_mesh_leveling() {
1942
       START_MENU();
1974
       START_MENU();
1967
 
1999
 
1968
     /**
2000
     /**
1969
      * UBL Fill-in Mesh submenu
2001
      * UBL Fill-in Mesh submenu
2002
+     *
2003
+     * << Build Mesh
2004
+     *    Fill-in Amount: ---
2005
+     *    Fill-in Mesh
2006
+     *    Smart Fill-in
2007
+     *    Manual Fill-in
2008
+     * << Info Screen
1970
      */
2009
      */
1971
     void _lcd_ubl_fillin_menu() {
2010
     void _lcd_ubl_fillin_menu() {
1972
       START_MENU();
2011
       START_MENU();
1986
 
2025
 
1987
     /**
2026
     /**
1988
      * UBL Build Mesh submenu
2027
      * UBL Build Mesh submenu
2028
+     *
2029
+     * << UBL Tools
2030
+     *    Build PLA Mesh
2031
+     *    Build ABS Mesh
2032
+     *  - Build Custom Mesh >>
2033
+     *    Build Cold Mesh
2034
+     *  - Fill-in Mesh >>
2035
+     *    Continue Bed Mesh
2036
+     *    Invalidate All
2037
+     *    Invalidate Closest
2038
+     * << Info Screen
1989
      */
2039
      */
1990
     void _lcd_ubl_build_mesh() {
2040
     void _lcd_ubl_build_mesh() {
1991
       START_MENU();
2041
       START_MENU();
2051
 
2101
 
2052
     /**
2102
     /**
2053
      * UBL Mesh Storage submenu
2103
      * UBL Mesh Storage submenu
2104
+     *
2105
+     * << Unified Bed Leveling
2106
+     *    Memory Slot: ---
2107
+     *    Load Bed Mesh
2108
+     *    Save Bed Mesh
2054
      */
2109
      */
2055
     void _lcd_ubl_storage_mesh() {
2110
     void _lcd_ubl_storage_mesh() {
2056
       START_MENU();
2111
       START_MENU();
2278
 
2333
 
2279
     /**
2334
     /**
2280
      * UBL Output map submenu
2335
      * UBL Output map submenu
2336
+     *
2337
+     * << Unified Bed Leveling
2338
+     *  Output for Host
2339
+     *  Output for CSV
2340
+     *  Off Printer Backup
2341
+     *  Output Mesh Map
2281
      */
2342
      */
2282
     void _lcd_ubl_output_map() {
2343
     void _lcd_ubl_output_map() {
2283
       START_MENU();
2344
       START_MENU();
2291
 
2352
 
2292
     /**
2353
     /**
2293
      * UBL Tools submenu
2354
      * UBL Tools submenu
2355
+     *
2356
+     * << Unified Bed Leveling
2357
+     *  - Build Mesh >>
2358
+     *  - Validate Mesh >>
2359
+     *  - Edit Mesh >>
2360
+     *  - Mesh Leveling >>
2294
      */
2361
      */
2295
     void _lcd_ubl_tools_menu() {
2362
     void _lcd_ubl_tools_menu() {
2296
       START_MENU();
2363
       START_MENU();
2303
     }
2370
     }
2304
 
2371
 
2305
     /**
2372
     /**
2373
+     * UBL Step-By-Step submenu
2374
+     *
2375
+     * << Unified Bed Leveling
2376
+     *    1 Build Cold Mesh
2377
+     *    2 Smart Fill-in
2378
+     *  - 3 Validate Mesh >>
2379
+     *    4 Fine Tune All
2380
+     *  - 5 Validate Mesh >>
2381
+     *    6 Fine Tune All
2382
+     *    7 Save Bed Mesh
2383
+     */
2384
+    void _lcd_ubl_step_by_step() {
2385
+      START_MENU();
2386
+      MENU_BACK(MSG_UBL_LEVEL_BED);
2387
+      MENU_ITEM(gcode, "1 " MSG_UBL_BUILD_COLD_MESH, PSTR("G28\nG29 P1"));
2388
+      MENU_ITEM(function, "2 " MSG_UBL_SMART_FILLIN, _lcd_ubl_smart_fillin_cmd);
2389
+      MENU_ITEM(submenu, "3 " MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
2390
+      MENU_ITEM(gcode, "4 " MSG_UBL_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
2391
+      MENU_ITEM(submenu, "5 " MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
2392
+      MENU_ITEM(gcode, "6 " MSG_UBL_FINE_TUNE_ALL, PSTR("G29 P4 R999 T"));
2393
+      MENU_ITEM(function, "7 " MSG_UBL_SAVE_MESH, _lcd_ubl_save_mesh_cmd);
2394
+      END_MENU();
2395
+    }
2396
+
2397
+    /**
2306
      * UBL System submenu
2398
      * UBL System submenu
2307
      *
2399
      *
2308
-     *  Prepare
2309
-     * - Unified Bed Leveling
2310
-     *   - Manually Build Mesh
2311
-     *   - Activate UBL
2312
-     *   - Deactivate UBL
2313
-     *   - Mesh Storage
2314
-     *       Memory Slot:
2315
-     *       Load Bed Mesh
2316
-     *       Save Bed Mesh
2317
-     *   - Output Map
2318
-     *       Topography to Host
2319
-     *       CSV for Spreadsheet
2320
-     *       Mesh Output Backup
2321
-     *       Output to LCD Grid
2322
-     *   - UBL Tools
2323
-     *     - Build Mesh
2324
-     *         Build PLA Mesh
2325
-     *         Build ABS Mesh
2326
-     *       - Build Custom Mesh
2327
-     *           Hotend Temp:
2328
-     *           Bed Temp:
2329
-     *           Build Custom Mesh
2330
-     *         Info Screen
2331
-     *       - Build Cold Mesh
2332
-     *       - Fill-in Mesh
2333
-     *           Fill-in Mesh
2334
-     *           Smart Fill-in
2335
-     *           Manual Fill-in
2336
-     *           Info Screen
2337
-     *         Continue Bed Mesh
2338
-     *         Invalidate All
2339
-     *         Invalidate Closest
2340
-     *     - Validate Mesh
2341
-     *         PLA Mesh Validation
2342
-     *         ABS Mesh Validation
2343
-     *       - Custom Mesh Validation
2344
-     *           Hotend Temp:
2345
-     *           Bed Temp:
2346
-     *           Validate Mesh
2347
-     *         Info Screen
2348
-     *     - Edit Mesh
2349
-     *         Fine Tune All
2350
-     *         Fine Tune Closest
2351
-     *       - Adjust Mesh Height
2352
-     *           Height Amount:
2353
-     *           Adjust Mesh Height
2354
-     *         Info Screen
2355
-     *     - Mesh Leveling
2356
-     *         3-Point Mesh Leveling
2357
-     *       - Grid Mesh Leveling
2358
-     *           Side points:
2359
-     *           Level Mesh
2360
-     *         Info Screen
2361
-     *   - Output UBL Info
2400
+     * << Prepare
2401
+     *  - Manually Build Mesh >>
2402
+     *  - Activate UBL >>
2403
+     *  - Deactivate UBL >>
2404
+     *  - Step-By-Step UBL >>
2405
+     *  - Mesh Storage >>
2406
+     *  - Output Map >>
2407
+     *  - UBL Tools >>
2408
+     *  - Output UBL Info >>
2362
      */
2409
      */
2363
 
2410
 
2364
     void _lcd_ubl_level_bed() {
2411
     void _lcd_ubl_level_bed() {
2367
       MENU_ITEM(gcode, MSG_UBL_MANUAL_MESH, PSTR("G29 I999\nG29 P2 B T0"));
2414
       MENU_ITEM(gcode, MSG_UBL_MANUAL_MESH, PSTR("G29 I999\nG29 P2 B T0"));
2368
       MENU_ITEM(gcode, MSG_UBL_ACTIVATE_MESH, PSTR("G29 A"));
2415
       MENU_ITEM(gcode, MSG_UBL_ACTIVATE_MESH, PSTR("G29 A"));
2369
       MENU_ITEM(gcode, MSG_UBL_DEACTIVATE_MESH, PSTR("G29 D"));
2416
       MENU_ITEM(gcode, MSG_UBL_DEACTIVATE_MESH, PSTR("G29 D"));
2417
+      MENU_ITEM(submenu, MSG_UBL_STEP_BY_STEP_MENU, _lcd_ubl_step_by_step);
2370
       MENU_ITEM(submenu, MSG_UBL_STORAGE_MESH_MENU, _lcd_ubl_storage_mesh);
2418
       MENU_ITEM(submenu, MSG_UBL_STORAGE_MESH_MENU, _lcd_ubl_storage_mesh);
2371
       MENU_ITEM(submenu, MSG_UBL_OUTPUT_MAP, _lcd_ubl_output_map);
2419
       MENU_ITEM(submenu, MSG_UBL_OUTPUT_MAP, _lcd_ubl_output_map);
2372
       MENU_ITEM(submenu, MSG_UBL_TOOLS, _lcd_ubl_tools_menu);
2420
       MENU_ITEM(submenu, MSG_UBL_TOOLS, _lcd_ubl_tools_menu);
3263
     START_MENU();
3311
     START_MENU();
3264
     MENU_BACK(MSG_MOTION);
3312
     MENU_BACK(MSG_MOTION);
3265
 
3313
 
3266
-    MENU_ITEM_EDIT_CALLBACK(float62, MSG_XSTEPS, &planner.axis_steps_per_mm[X_AXIS], 5, 9999, _planner_refresh_positioning);
3267
-    MENU_ITEM_EDIT_CALLBACK(float62, MSG_YSTEPS, &planner.axis_steps_per_mm[Y_AXIS], 5, 9999, _planner_refresh_positioning);
3268
-    MENU_ITEM_EDIT_CALLBACK(float62, MSG_ZSTEPS, &planner.axis_steps_per_mm[Z_AXIS], 5, 9999, _planner_refresh_positioning);
3314
+    MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_XSTEPS, &planner.axis_steps_per_mm[X_AXIS], 5, 9999, _planner_refresh_positioning);
3315
+    MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_YSTEPS, &planner.axis_steps_per_mm[Y_AXIS], 5, 9999, _planner_refresh_positioning);
3316
+    MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_ZSTEPS, &planner.axis_steps_per_mm[Z_AXIS], 5, 9999, _planner_refresh_positioning);
3269
 
3317
 
3270
     #if ENABLED(DISTINCT_E_FACTORS)
3318
     #if ENABLED(DISTINCT_E_FACTORS)
3271
-      MENU_ITEM_EDIT_CALLBACK(float62, MSG_ESTEPS, &planner.axis_steps_per_mm[E_AXIS + active_extruder], 5, 9999, _planner_refresh_positioning);
3272
-      MENU_ITEM_EDIT_CALLBACK(float62, MSG_E1STEPS, &planner.axis_steps_per_mm[E_AXIS], 5, 9999, _planner_refresh_e0_positioning);
3273
-      MENU_ITEM_EDIT_CALLBACK(float62, MSG_E2STEPS, &planner.axis_steps_per_mm[E_AXIS + 1], 5, 9999, _planner_refresh_e1_positioning);
3319
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_ESTEPS, &planner.axis_steps_per_mm[E_AXIS + active_extruder], 5, 9999, _planner_refresh_positioning);
3320
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E1STEPS, &planner.axis_steps_per_mm[E_AXIS], 5, 9999, _planner_refresh_e0_positioning);
3321
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E2STEPS, &planner.axis_steps_per_mm[E_AXIS + 1], 5, 9999, _planner_refresh_e1_positioning);
3274
       #if E_STEPPERS > 2
3322
       #if E_STEPPERS > 2
3275
-        MENU_ITEM_EDIT_CALLBACK(float62, MSG_E3STEPS, &planner.axis_steps_per_mm[E_AXIS + 2], 5, 9999, _planner_refresh_e2_positioning);
3323
+        MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E3STEPS, &planner.axis_steps_per_mm[E_AXIS + 2], 5, 9999, _planner_refresh_e2_positioning);
3276
         #if E_STEPPERS > 3
3324
         #if E_STEPPERS > 3
3277
-          MENU_ITEM_EDIT_CALLBACK(float62, MSG_E4STEPS, &planner.axis_steps_per_mm[E_AXIS + 3], 5, 9999, _planner_refresh_e3_positioning);
3325
+          MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E4STEPS, &planner.axis_steps_per_mm[E_AXIS + 3], 5, 9999, _planner_refresh_e3_positioning);
3278
           #if E_STEPPERS > 4
3326
           #if E_STEPPERS > 4
3279
-            MENU_ITEM_EDIT_CALLBACK(float62, MSG_E5STEPS, &planner.axis_steps_per_mm[E_AXIS + 4], 5, 9999, _planner_refresh_e4_positioning);
3327
+            MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_E5STEPS, &planner.axis_steps_per_mm[E_AXIS + 4], 5, 9999, _planner_refresh_e4_positioning);
3280
           #endif // E_STEPPERS > 4
3328
           #endif // E_STEPPERS > 4
3281
         #endif // E_STEPPERS > 3
3329
         #endif // E_STEPPERS > 3
3282
       #endif // E_STEPPERS > 2
3330
       #endif // E_STEPPERS > 2
3283
     #else
3331
     #else
3284
-      MENU_ITEM_EDIT_CALLBACK(float62, MSG_ESTEPS, &planner.axis_steps_per_mm[E_AXIS], 5, 9999, _planner_refresh_positioning);
3332
+      MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float62, MSG_ESTEPS, &planner.axis_steps_per_mm[E_AXIS], 5, 9999, _planner_refresh_positioning);
3285
     #endif
3333
     #endif
3286
 
3334
 
3287
     END_MENU();
3335
     END_MENU();

+ 11
- 6
Marlin/ultralcd_impl_DOGM.h Wyświetl plik

871
     #if ENABLED(USE_BIG_EDIT_FONT)
871
     #if ENABLED(USE_BIG_EDIT_FONT)
872
       uint8_t lcd_width, char_width;
872
       uint8_t lcd_width, char_width;
873
       if (labellen <= LCD_WIDTH_EDIT - 1) {
873
       if (labellen <= LCD_WIDTH_EDIT - 1) {
874
-        if (labellen >= LCD_WIDTH_EDIT - vallen) rows = 2;
874
+        if (labellen + vallen + 2 >= LCD_WIDTH_EDIT) rows = 2;
875
         lcd_width = LCD_WIDTH_EDIT + 1;
875
         lcd_width = LCD_WIDTH_EDIT + 1;
876
         char_width = DOG_CHAR_WIDTH_EDIT;
876
         char_width = DOG_CHAR_WIDTH_EDIT;
877
         lcd_setFont(FONT_MENU_EDIT);
877
         lcd_setFont(FONT_MENU_EDIT);
890
     const uint8_t segmentHeight = u8g.getHeight() / (rows + 1); // 1 / (rows+1) = 1/2 or 1/3
890
     const uint8_t segmentHeight = u8g.getHeight() / (rows + 1); // 1 / (rows+1) = 1/2 or 1/3
891
     uint8_t baseline = segmentHeight + (DOG_CHAR_HEIGHT_EDIT + 1) / 2;
891
     uint8_t baseline = segmentHeight + (DOG_CHAR_HEIGHT_EDIT + 1) / 2;
892
 
892
 
893
-    if (PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline)) {
893
+    bool onpage = PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline);
894
+    if (onpage) {
894
       u8g.setPrintPos(0, baseline);
895
       u8g.setPrintPos(0, baseline);
895
       lcd_printPGM(pstr);
896
       lcd_printPGM(pstr);
896
     }
897
     }
897
 
898
 
898
     if (value != NULL) {
899
     if (value != NULL) {
899
-      baseline += (rows - 1) * segmentHeight;
900
-      if (PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline)) {
901
-        u8g.print(':');
902
-        u8g.setPrintPos((lcd_width - 1 - vallen) * char_width, baseline);
900
+      u8g.print(':');
901
+      if (rows == 2) {
902
+        baseline += segmentHeight;
903
+        onpage = PAGE_CONTAINS(baseline + 1 - (DOG_CHAR_HEIGHT_EDIT), baseline);
904
+      }
905
+      if (onpage) {
906
+        u8g.setPrintPos(((lcd_width - 1) - (vallen + 1)) * char_width, baseline); // Right-justified, leaving padded by spaces
907
+        u8g.print(' '); // overwrite char if value gets shorter
903
         lcd_print(value);
908
         lcd_print(value);
904
       }
909
       }
905
     }
910
     }

+ 3
- 1
Marlin/ultralcd_impl_HD44780.h Wyświetl plik

978
     lcd_printPGM(pstr);
978
     lcd_printPGM(pstr);
979
     if (value != NULL) {
979
     if (value != NULL) {
980
       lcd.print(':');
980
       lcd.print(':');
981
-      lcd.setCursor(LCD_WIDTH - lcd_strlen(value), 1);
981
+      const uint8_t valrow = (lcd_strlen_P(pstr) + 1 + lcd_strlen(value) + 1) > (LCD_WIDTH - 2) ? 2 : 1;  // Value on the next row if it won't fit
982
+      lcd.setCursor((LCD_WIDTH - 1) - (lcd_strlen(value) + 1), valrow);                                   // Right-justified, padded by spaces
983
+      lcd.print(' ');                                                                                     // overwrite char if value gets shorter
982
       lcd_print(value);
984
       lcd_print(value);
983
     }
985
     }
984
   }
986
   }

Ładowanie…
Anuluj
Zapisz