소스 검색

Merge pull request #7098 from thinkyhead/bf_ubl_steps

Step-by-Step Menu addition
Scott Lahteine 8 년 전
부모
커밋
d5368461f9
4개의 변경된 파일138개의 추가작업 그리고 80개의 파일을 삭제
  1. 3
    0
      Marlin/language_en.h
  2. 121
    73
      Marlin/ultralcd.cpp
  3. 11
    6
      Marlin/ultralcd_impl_DOGM.h
  4. 3
    1
      Marlin/ultralcd_impl_HD44780.h

+ 3
- 0
Marlin/language_en.h 파일 보기

@@ -334,6 +334,9 @@
334 334
 #ifndef MSG_UBL_Z_OFFSET_STOPPED
335 335
   #define MSG_UBL_Z_OFFSET_STOPPED            _UxGT("Z-Offset Stopped")
336 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 341
 #ifndef MSG_MOVING
339 342
   #define MSG_MOVING                          _UxGT("Moving...")

+ 121
- 73
Marlin/ultralcd.cpp 파일 보기

@@ -1754,15 +1754,16 @@ void kill_screen(const char* lcd_msg) {
1754 1754
 
1755 1755
     /**
1756 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 1768
     void lcd_bed_leveling() {
1768 1769
       START_MENU();
@@ -1833,6 +1834,11 @@ void kill_screen(const char* lcd_msg) {
1833 1834
 
1834 1835
     /**
1835 1836
      * UBL Custom Mesh submenu
1837
+     *
1838
+     * << Build Mesh
1839
+     *    Hotend Temp: ---
1840
+     *    Bed Temp: ---
1841
+     *    Build Custom Mesh
1836 1842
      */
1837 1843
     void _lcd_ubl_custom_mesh() {
1838 1844
       START_MENU();
@@ -1858,6 +1864,11 @@ void kill_screen(const char* lcd_msg) {
1858 1864
 
1859 1865
     /**
1860 1866
      * UBL Adjust Mesh Height submenu
1867
+     *
1868
+     * << Edit Mesh
1869
+     *    Height Amount: ---
1870
+     *    Adjust Mesh Height
1871
+     * << Info Screen
1861 1872
      */
1862 1873
     void _lcd_ubl_height_adjust_menu() {
1863 1874
       START_MENU();
@@ -1870,6 +1881,12 @@ void kill_screen(const char* lcd_msg) {
1870 1881
 
1871 1882
     /**
1872 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 1891
     void _lcd_ubl_edit_mesh() {
1875 1892
       START_MENU();
@@ -1899,6 +1916,12 @@ void kill_screen(const char* lcd_msg) {
1899 1916
 
1900 1917
     /**
1901 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 1926
     void _lcd_ubl_validate_mesh() {
1904 1927
       START_MENU();
@@ -1926,6 +1949,10 @@ void kill_screen(const char* lcd_msg) {
1926 1949
 
1927 1950
     /**
1928 1951
      * UBL Grid Leveling submenu
1952
+     *
1953
+     * << UBL Tools
1954
+     *    Side points: ---
1955
+     *    Level Mesh
1929 1956
      */
1930 1957
     void _lcd_ubl_grid_level() {
1931 1958
       START_MENU();
@@ -1937,6 +1964,11 @@ void kill_screen(const char* lcd_msg) {
1937 1964
 
1938 1965
     /**
1939 1966
      * UBL Mesh Leveling submenu
1967
+     *
1968
+     * << UBL Tools
1969
+     *    3-Point Mesh Leveling
1970
+     *  - Grid Mesh Leveling >>
1971
+     * << Info Screen
1940 1972
      */
1941 1973
     void _lcd_ubl_mesh_leveling() {
1942 1974
       START_MENU();
@@ -1967,6 +1999,13 @@ void kill_screen(const char* lcd_msg) {
1967 1999
 
1968 2000
     /**
1969 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 2010
     void _lcd_ubl_fillin_menu() {
1972 2011
       START_MENU();
@@ -1986,6 +2025,17 @@ void kill_screen(const char* lcd_msg) {
1986 2025
 
1987 2026
     /**
1988 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 2040
     void _lcd_ubl_build_mesh() {
1991 2041
       START_MENU();
@@ -2051,6 +2101,11 @@ void kill_screen(const char* lcd_msg) {
2051 2101
 
2052 2102
     /**
2053 2103
      * UBL Mesh Storage submenu
2104
+     *
2105
+     * << Unified Bed Leveling
2106
+     *    Memory Slot: ---
2107
+     *    Load Bed Mesh
2108
+     *    Save Bed Mesh
2054 2109
      */
2055 2110
     void _lcd_ubl_storage_mesh() {
2056 2111
       START_MENU();
@@ -2278,6 +2333,12 @@ void kill_screen(const char* lcd_msg) {
2278 2333
 
2279 2334
     /**
2280 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 2343
     void _lcd_ubl_output_map() {
2283 2344
       START_MENU();
@@ -2291,6 +2352,12 @@ void kill_screen(const char* lcd_msg) {
2291 2352
 
2292 2353
     /**
2293 2354
      * UBL Tools submenu
2355
+     *
2356
+     * << Unified Bed Leveling
2357
+     *  - Build Mesh >>
2358
+     *  - Validate Mesh >>
2359
+     *  - Edit Mesh >>
2360
+     *  - Mesh Leveling >>
2294 2361
      */
2295 2362
     void _lcd_ubl_tools_menu() {
2296 2363
       START_MENU();
@@ -2303,62 +2370,42 @@ void kill_screen(const char* lcd_msg) {
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 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 2411
     void _lcd_ubl_level_bed() {
@@ -2367,6 +2414,7 @@ void kill_screen(const char* lcd_msg) {
2367 2414
       MENU_ITEM(gcode, MSG_UBL_MANUAL_MESH, PSTR("G29 I999\nG29 P2 B T0"));
2368 2415
       MENU_ITEM(gcode, MSG_UBL_ACTIVATE_MESH, PSTR("G29 A"));
2369 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 2418
       MENU_ITEM(submenu, MSG_UBL_STORAGE_MESH_MENU, _lcd_ubl_storage_mesh);
2371 2419
       MENU_ITEM(submenu, MSG_UBL_OUTPUT_MAP, _lcd_ubl_output_map);
2372 2420
       MENU_ITEM(submenu, MSG_UBL_TOOLS, _lcd_ubl_tools_menu);
@@ -3263,25 +3311,25 @@ void kill_screen(const char* lcd_msg) {
3263 3311
     START_MENU();
3264 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 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 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 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 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 3328
           #endif // E_STEPPERS > 4
3281 3329
         #endif // E_STEPPERS > 3
3282 3330
       #endif // E_STEPPERS > 2
3283 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 3333
     #endif
3286 3334
 
3287 3335
     END_MENU();

+ 11
- 6
Marlin/ultralcd_impl_DOGM.h 파일 보기

@@ -871,7 +871,7 @@ static void lcd_implementation_status_screen() {
871 871
     #if ENABLED(USE_BIG_EDIT_FONT)
872 872
       uint8_t lcd_width, char_width;
873 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 875
         lcd_width = LCD_WIDTH_EDIT + 1;
876 876
         char_width = DOG_CHAR_WIDTH_EDIT;
877 877
         lcd_setFont(FONT_MENU_EDIT);
@@ -890,16 +890,21 @@ static void lcd_implementation_status_screen() {
890 890
     const uint8_t segmentHeight = u8g.getHeight() / (rows + 1); // 1 / (rows+1) = 1/2 or 1/3
891 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 895
       u8g.setPrintPos(0, baseline);
895 896
       lcd_printPGM(pstr);
896 897
     }
897 898
 
898 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 908
         lcd_print(value);
904 909
       }
905 910
     }

+ 3
- 1
Marlin/ultralcd_impl_HD44780.h 파일 보기

@@ -978,7 +978,9 @@ static void lcd_implementation_status_screen() {
978 978
     lcd_printPGM(pstr);
979 979
     if (value != NULL) {
980 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 984
       lcd_print(value);
983 985
     }
984 986
   }

Loading…
취소
저장