|
@@ -2295,6 +2295,7 @@ void kill_screen(const char* lcd_msg) {
|
2295
|
2295
|
currentScreen = menu_edit_callback_ ## _name; \
|
2296
|
2296
|
callbackFunc = callback; \
|
2297
|
2297
|
}
|
|
2298
|
+
|
2298
|
2299
|
menu_edit_type(int, int3, itostr3, 1);
|
2299
|
2300
|
menu_edit_type(float, float3, ftostr3, 1);
|
2300
|
2301
|
menu_edit_type(float, float32, ftostr32, 100);
|
|
@@ -2310,42 +2311,25 @@ void kill_screen(const char* lcd_msg) {
|
2310
|
2311
|
*
|
2311
|
2312
|
*/
|
2312
|
2313
|
#if ENABLED(REPRAPWORLD_KEYPAD)
|
2313
|
|
- static void reprapworld_keypad_move_z_up() {
|
2314
|
|
- encoderPosition = 1;
|
2315
|
|
- move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
2316
|
|
- lcd_move_z();
|
2317
|
|
- }
|
2318
|
|
- static void reprapworld_keypad_move_z_down() {
|
2319
|
|
- encoderPosition = -1;
|
2320
|
|
- move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
2321
|
|
- lcd_move_z();
|
2322
|
|
- }
|
2323
|
|
- static void reprapworld_keypad_move_x_left() {
|
2324
|
|
- encoderPosition = -1;
|
2325
|
|
- move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
2326
|
|
- lcd_move_x();
|
2327
|
|
- }
|
2328
|
|
- static void reprapworld_keypad_move_x_right() {
|
2329
|
|
- encoderPosition = 1;
|
|
2314
|
+ static void _reprapworld_keypad_move(AxisEnum axis, int dir) {
|
2330
|
2315
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
2331
|
|
- lcd_move_x();
|
2332
|
|
- }
|
2333
|
|
- static void reprapworld_keypad_move_y_down() {
|
2334
|
|
- encoderPosition = 1;
|
2335
|
|
- move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
2336
|
|
- lcd_move_y();
|
2337
|
|
- }
|
2338
|
|
- static void reprapworld_keypad_move_y_up() {
|
2339
|
|
- encoderPosition = -1;
|
2340
|
|
- move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
2341
|
|
- lcd_move_y();
|
2342
|
|
- }
|
2343
|
|
- static void reprapworld_keypad_move_home() {
|
2344
|
|
- enqueue_and_echo_commands_P(PSTR("G28")); // move all axes home
|
|
2316
|
+ encoderPosition = dir;
|
|
2317
|
+ switch (axis) {
|
|
2318
|
+ case X_AXIS: lcd_move_x(); break;
|
|
2319
|
+ case Y_AXIS: lcd_move_y(); break;
|
|
2320
|
+ case Z_AXIS: lcd_move_z();
|
|
2321
|
+ }
|
2345
|
2322
|
}
|
|
2323
|
+ static void reprapworld_keypad_move_z_up() { _reprapworld_keypad_move(Z_AXIS, 1); }
|
|
2324
|
+ static void reprapworld_keypad_move_z_down() { _reprapworld_keypad_move(Z_AXIS, -1); }
|
|
2325
|
+ static void reprapworld_keypad_move_x_left() { _reprapworld_keypad_move(X_AXIS, -1); }
|
|
2326
|
+ static void reprapworld_keypad_move_x_right() { _reprapworld_keypad_move(X_AXIS, 1); }
|
|
2327
|
+ static void reprapworld_keypad_move_y_up() { _reprapworld_keypad_move(Y_AXIS, -1); }
|
|
2328
|
+ static void reprapworld_keypad_move_y_down() { _reprapworld_keypad_move(Y_AXIS, 1); }
|
|
2329
|
+ static void reprapworld_keypad_move_home() { enqueue_and_echo_commands_P(PSTR("G28")); } // move all axes home and wait
|
|
2330
|
+ static void reprapworld_keypad_move_menu() { lcd_goto_screen(lcd_move_menu); }
|
2346
|
2331
|
#endif // REPRAPWORLD_KEYPAD
|
2347
|
2332
|
|
2348
|
|
-
|
2349
|
2333
|
/**
|
2350
|
2334
|
*
|
2351
|
2335
|
* Audio feedback for controller clicks
|
|
@@ -2602,22 +2586,35 @@ void lcd_update() {
|
2602
|
2586
|
|
2603
|
2587
|
#if ENABLED(REPRAPWORLD_KEYPAD)
|
2604
|
2588
|
|
2605
|
|
- #if ENABLED(DELTA) || ENABLED(SCARA)
|
2606
|
|
- #define _KEYPAD_MOVE_ALLOWED (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS])
|
2607
|
|
- #else
|
2608
|
|
- #define _KEYPAD_MOVE_ALLOWED true
|
2609
|
|
- #endif
|
|
2589
|
+ static uint8_t keypad_debounce = 0;
|
2610
|
2590
|
|
2611
|
|
- if (REPRAPWORLD_KEYPAD_MOVE_HOME) reprapworld_keypad_move_home();
|
2612
|
|
- if (_KEYPAD_MOVE_ALLOWED) {
|
2613
|
|
- if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up();
|
2614
|
|
- if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) reprapworld_keypad_move_z_down();
|
2615
|
|
- if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) reprapworld_keypad_move_x_left();
|
2616
|
|
- if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) reprapworld_keypad_move_x_right();
|
2617
|
|
- if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) reprapworld_keypad_move_y_down();
|
2618
|
|
- if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) reprapworld_keypad_move_y_up();
|
|
2591
|
+ if (!REPRAPWORLD_KEYPAD_PRESSED) {
|
|
2592
|
+ if (keypad_debounce > 0) keypad_debounce--;
|
2619
|
2593
|
}
|
2620
|
|
- #endif
|
|
2594
|
+ else if (!keypad_debounce) {
|
|
2595
|
+ keypad_debounce = 2;
|
|
2596
|
+
|
|
2597
|
+ if (REPRAPWORLD_KEYPAD_MOVE_MENU) reprapworld_keypad_move_menu();
|
|
2598
|
+
|
|
2599
|
+ #if DISABLED(DELTA) && Z_HOME_DIR == -1
|
|
2600
|
+ if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up();
|
|
2601
|
+ #endif
|
|
2602
|
+
|
|
2603
|
+ if (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS]) {
|
|
2604
|
+ #if ENABLED(DELTA) || Z_HOME_DIR != -1
|
|
2605
|
+ if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up();
|
|
2606
|
+ #endif
|
|
2607
|
+ if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) reprapworld_keypad_move_z_down();
|
|
2608
|
+ if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) reprapworld_keypad_move_x_left();
|
|
2609
|
+ if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) reprapworld_keypad_move_x_right();
|
|
2610
|
+ if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) reprapworld_keypad_move_y_down();
|
|
2611
|
+ if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) reprapworld_keypad_move_y_up();
|
|
2612
|
+ }
|
|
2613
|
+ else {
|
|
2614
|
+ if (REPRAPWORLD_KEYPAD_MOVE_HOME) reprapworld_keypad_move_home();
|
|
2615
|
+ }
|
|
2616
|
+ }
|
|
2617
|
+ #endif // REPRAPWORLD_KEYPAD
|
2621
|
2618
|
|
2622
|
2619
|
bool encoderPastThreshold = (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP);
|
2623
|
2620
|
if (encoderPastThreshold || LCD_CLICKED) {
|
|
@@ -2657,7 +2654,7 @@ void lcd_update() {
|
2657
|
2654
|
return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS;
|
2658
|
2655
|
lcdDrawUpdate = LCDVIEW_REDRAW_NOW;
|
2659
|
2656
|
}
|
2660
|
|
- #endif //ULTIPANEL
|
|
2657
|
+ #endif // ULTIPANEL
|
2661
|
2658
|
|
2662
|
2659
|
// We arrive here every ~100ms when idling often enough.
|
2663
|
2660
|
// Instead of tracking the changes simply redraw the Info Screen ~1 time a second.
|