Переглянути джерело

Move RRW keypad code to a common method (#12429)

Scott Lahteine 6 роки тому
джерело
коміт
f4c128ecaa
Аккаунт користувача з таким Email не знайдено

+ 79
- 76
Marlin/src/lcd/ultralcd.cpp Переглянути файл

@@ -235,38 +235,10 @@ bool MarlinUI::get_blink() {
235 235
 ////////////////////////////////////////////
236 236
 
237 237
 #if ENABLED(REPRAPWORLD_KEYPAD)
238
-  volatile uint8_t buttons_reprapworld_keypad;
239
-#endif
240 238
 
241
-#if ENABLED(ADC_KEYPAD)
239
+  volatile uint8_t MarlinUI::buttons_reprapworld_keypad;
242 240
 
243
-  inline bool handle_adc_keypad() {
244
-    #define ADC_MIN_KEY_DELAY 100
245
-    if (buttons_reprapworld_keypad) {
246
-      #if HAS_ENCODER_ACTION
247
-        ui.refresh(LCDVIEW_REDRAW_NOW);
248
-        if (encoderDirection == -1) { // side effect which signals we are inside a menu
249
-          #if HAS_LCD_MENU
250
-            if      (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))   encoderPosition -= ENCODER_STEPS_PER_MENU_ITEM;
251
-            else if (RRK(EN_REPRAPWORLD_KEYPAD_UP))     encoderPosition += ENCODER_STEPS_PER_MENU_ITEM;
252
-            else if (RRK(EN_REPRAPWORLD_KEYPAD_LEFT))   { menu_item_back::action(); ui.quick_feedback(); }
253
-            else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))  { ui.return_to_status(); ui.quick_feedback(); }
254
-          #endif
255
-        }
256
-        else if (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))     encoderPosition += ENCODER_PULSES_PER_STEP;
257
-        else if (RRK(EN_REPRAPWORLD_KEYPAD_UP))       encoderPosition -= ENCODER_PULSES_PER_STEP;
258
-        else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))    encoderPosition = 0;
259
-      #endif
260
-      next_button_update_ms = millis() + ADC_MIN_KEY_DELAY;
261
-      return true;
262
-    }
263
-
264
-    return false;
265
-  }
266
-
267
-#elif ENABLED(REPRAPWORLD_KEYPAD)
268
-
269
-  #if HAS_LCD_MENU
241
+  #if DISABLED(ADC_KEYPAD) && HAS_LCD_MENU
270 242
 
271 243
     void lcd_move_x();
272 244
     void lcd_move_y();
@@ -285,45 +257,74 @@ bool MarlinUI::get_blink() {
285 257
 
286 258
   #endif
287 259
 
288
-  inline void handle_reprapworld_keypad() {
260
+  bool MarlinUI::handle_keypad() {
289 261
 
290
-    static uint8_t keypad_debounce = 0;
262
+    #if ENABLED(ADC_KEYPAD)
291 263
 
292
-    if (!RRK( EN_REPRAPWORLD_KEYPAD_F1    | EN_REPRAPWORLD_KEYPAD_F2
293
-            | EN_REPRAPWORLD_KEYPAD_F3    | EN_REPRAPWORLD_KEYPAD_DOWN
294
-            | EN_REPRAPWORLD_KEYPAD_RIGHT | EN_REPRAPWORLD_KEYPAD_MIDDLE
295
-            | EN_REPRAPWORLD_KEYPAD_UP    | EN_REPRAPWORLD_KEYPAD_LEFT )
296
-    ) {
297
-      if (keypad_debounce > 0) keypad_debounce--;
298
-    }
299
-    else if (!keypad_debounce) {
300
-      keypad_debounce = 2;
264
+      #define ADC_MIN_KEY_DELAY 100
265
+      if (buttons_reprapworld_keypad) {
266
+        #if HAS_ENCODER_ACTION
267
+          refresh(LCDVIEW_REDRAW_NOW);
268
+          if (encoderDirection == -1) { // side effect which signals we are inside a menu
269
+            #if HAS_LCD_MENU
270
+              if      (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))   encoderPosition -= ENCODER_STEPS_PER_MENU_ITEM;
271
+              else if (RRK(EN_REPRAPWORLD_KEYPAD_UP))     encoderPosition += ENCODER_STEPS_PER_MENU_ITEM;
272
+              else if (RRK(EN_REPRAPWORLD_KEYPAD_LEFT))   { menu_item_back::action(); quick_feedback(); }
273
+              else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))  { return_to_status(); quick_feedback(); }
274
+            #endif
275
+          }
276
+          else if (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))     encoderPosition += ENCODER_PULSES_PER_STEP;
277
+          else if (RRK(EN_REPRAPWORLD_KEYPAD_UP))       encoderPosition -= ENCODER_PULSES_PER_STEP;
278
+          else if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT))    encoderPosition = 0;
279
+        #endif
280
+        next_button_update_ms = millis() + ADC_MIN_KEY_DELAY;
281
+        return true;
282
+      }
301 283
 
302
-      const bool homed = all_axes_homed();
284
+    #else // !ADC_KEYPAD
303 285
 
304
-      #if HAS_LCD_MENU
286
+      static uint8_t keypad_debounce = 0;
305 287
 
306
-        if (RRK(EN_REPRAPWORLD_KEYPAD_MIDDLE))  ui.goto_screen(menu_move);
288
+      if (!RRK( EN_REPRAPWORLD_KEYPAD_F1    | EN_REPRAPWORLD_KEYPAD_F2
289
+              | EN_REPRAPWORLD_KEYPAD_F3    | EN_REPRAPWORLD_KEYPAD_DOWN
290
+              | EN_REPRAPWORLD_KEYPAD_RIGHT | EN_REPRAPWORLD_KEYPAD_MIDDLE
291
+              | EN_REPRAPWORLD_KEYPAD_UP    | EN_REPRAPWORLD_KEYPAD_LEFT )
292
+      ) {
293
+        if (keypad_debounce > 0) keypad_debounce--;
294
+      }
295
+      else if (!keypad_debounce) {
296
+        keypad_debounce = 2;
307 297
 
308
-        #if DISABLED(DELTA) && Z_HOME_DIR == -1
309
-          if (RRK(EN_REPRAPWORLD_KEYPAD_F2))    _reprapworld_keypad_move(Z_AXIS,  1);
310
-        #endif
298
+        const bool homed = all_axes_homed();
299
+
300
+        #if HAS_LCD_MENU
311 301
 
312
-        if (homed) {
313
-          #if ENABLED(DELTA) || Z_HOME_DIR != -1
314
-            if (RRK(EN_REPRAPWORLD_KEYPAD_F2))  _reprapworld_keypad_move(Z_AXIS,  1);
302
+          if (RRK(EN_REPRAPWORLD_KEYPAD_MIDDLE))  goto_screen(menu_move);
303
+
304
+          #if DISABLED(DELTA) && Z_HOME_DIR == -1
305
+            if (RRK(EN_REPRAPWORLD_KEYPAD_F2))    _reprapworld_keypad_move(Z_AXIS,  1);
315 306
           #endif
316
-          if (RRK(EN_REPRAPWORLD_KEYPAD_F3))    _reprapworld_keypad_move(Z_AXIS, -1);
317
-          if (RRK(EN_REPRAPWORLD_KEYPAD_LEFT))  _reprapworld_keypad_move(X_AXIS, -1);
318
-          if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT)) _reprapworld_keypad_move(X_AXIS,  1);
319
-          if (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))  _reprapworld_keypad_move(Y_AXIS,  1);
320
-          if (RRK(EN_REPRAPWORLD_KEYPAD_UP))    _reprapworld_keypad_move(Y_AXIS, -1);
321
-        }
322 307
 
323
-      #endif // HAS_LCD_MENU
308
+          if (homed) {
309
+            #if ENABLED(DELTA) || Z_HOME_DIR != -1
310
+              if (RRK(EN_REPRAPWORLD_KEYPAD_F2))  _reprapworld_keypad_move(Z_AXIS,  1);
311
+            #endif
312
+            if (RRK(EN_REPRAPWORLD_KEYPAD_F3))    _reprapworld_keypad_move(Z_AXIS, -1);
313
+            if (RRK(EN_REPRAPWORLD_KEYPAD_LEFT))  _reprapworld_keypad_move(X_AXIS, -1);
314
+            if (RRK(EN_REPRAPWORLD_KEYPAD_RIGHT)) _reprapworld_keypad_move(X_AXIS,  1);
315
+            if (RRK(EN_REPRAPWORLD_KEYPAD_DOWN))  _reprapworld_keypad_move(Y_AXIS,  1);
316
+            if (RRK(EN_REPRAPWORLD_KEYPAD_UP))    _reprapworld_keypad_move(Y_AXIS, -1);
317
+          }
324 318
 
325
-      if (!homed && RRK(EN_REPRAPWORLD_KEYPAD_F1)) enqueue_and_echo_commands_P(PSTR("G28"));
326
-    }
319
+        #endif // HAS_LCD_MENU
320
+
321
+        if (!homed && RRK(EN_REPRAPWORLD_KEYPAD_F1)) enqueue_and_echo_commands_P(PSTR("G28"));
322
+        return true;
323
+      }
324
+
325
+    #endif // !ADC_KEYPAD
326
+
327
+    return false;
327 328
   }
328 329
 
329 330
 #endif // REPRAPWORLD_KEYPAD
@@ -684,18 +685,19 @@ void MarlinUI::update() {
684 685
         slow_buttons = read_slow_buttons(); // Buttons that take too long to read in interrupt context
685 686
       #endif
686 687
 
687
-      #if ENABLED(ADC_KEYPAD)
688
+      #if ENABLED(REPRAPWORLD_KEYPAD)
688 689
 
689
-        if (handle_adc_keypad()) {
690
+        if (
691
+          #if ENABLED(ADC_KEYPAD)
692
+            handle_keypad()
693
+          #else
694
+            handle_keypad()
695
+          #endif
696
+        ) {
690 697
           #if HAS_LCD_MENU && LCD_TIMEOUT_TO_STATUS
691 698
             return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS;
692 699
           #endif
693 700
         }
694
-
695
-      #elif ENABLED(REPRAPWORLD_KEYPAD)
696
-
697
-        handle_reprapworld_keypad();
698
-
699 701
       #endif
700 702
 
701 703
       const float abs_diff = ABS(encoderDiff);
@@ -990,25 +992,26 @@ void MarlinUI::update() {
990 992
 
991 993
         #endif // LCD_HAS_DIRECTIONAL_BUTTONS
992 994
 
993
-        buttons = newbutton
994
-          #if ENABLED(LCD_HAS_SLOW_BUTTONS)
995
-            | slow_buttons
996
-          #endif
997
-        ;
998
-
999 995
         #if ENABLED(ADC_KEYPAD)
1000 996
 
1001
-          uint8_t newbutton_reprapworld_keypad = 0;
1002 997
           buttons = 0;
1003 998
           if (buttons_reprapworld_keypad == 0) {
1004
-            newbutton_reprapworld_keypad = get_ADC_keyValue();
999
+            uint8_t newbutton_reprapworld_keypad = get_ADC_keyValue();
1005 1000
             if (WITHIN(newbutton_reprapworld_keypad, 1, 8))
1006 1001
               buttons_reprapworld_keypad = _BV(newbutton_reprapworld_keypad - 1);
1007 1002
           }
1008 1003
 
1009
-        #elif ENABLED(REPRAPWORLD_KEYPAD)
1004
+        #else
1010 1005
 
1011
-          GET_SHIFT_BUTTON_STATES(buttons_reprapworld_keypad);
1006
+          buttons = newbutton
1007
+            #if ENABLED(LCD_HAS_SLOW_BUTTONS)
1008
+              | slow_buttons
1009
+            #endif
1010
+          ;
1011
+
1012
+          #if ENABLED(REPRAPWORLD_KEYPAD)
1013
+            GET_SHIFT_BUTTON_STATES(buttons_reprapworld_keypad);
1014
+          #endif
1012 1015
 
1013 1016
         #endif
1014 1017
 

+ 7
- 2
Marlin/src/lcd/ultralcd.h Переглянути файл

@@ -63,8 +63,6 @@
63 63
   #endif
64 64
 
65 65
   #define LCD_UPDATE_INTERVAL 100
66
-  #define BUTTON_EXISTS(BN) (defined(BTN_## BN) && BTN_## BN >= 0)
67
-  #define BUTTON_PRESSED(BN) !READ(BTN_## BN)
68 66
 
69 67
   #if HAS_LCD_MENU
70 68
 
@@ -99,6 +97,9 @@
99 97
   #define EN_A _BV(BLEN_A)
100 98
   #define EN_B _BV(BLEN_B)
101 99
 
100
+  #define BUTTON_EXISTS(BN) (defined(BTN_## BN) && BTN_## BN >= 0)
101
+  #define BUTTON_PRESSED(BN) !READ(BTN_## BN)
102
+
102 103
   #if BUTTON_EXISTS(ENC)
103 104
     #define BLEN_C 2
104 105
     #define EN_C _BV(BLEN_C)
@@ -466,6 +467,10 @@ public:
466 467
   #if HAS_ENCODER_ACTION
467 468
 
468 469
     static volatile uint8_t buttons;
470
+    #if ENABLED(REPRAPWORLD_KEYPAD)
471
+      static volatile uint8_t buttons_reprapworld_keypad;
472
+      static bool handle_keypad();
473
+    #endif
469 474
     #if ENABLED(LCD_HAS_SLOW_BUTTONS)
470 475
       static volatile uint8_t slow_buttons;
471 476
       static uint8_t read_slow_buttons();

+ 9
- 0
Marlin/src/pins/pins_TEENSY35_36.h Переглянути файл

@@ -146,7 +146,16 @@ D8    HEATER_BED_PIN      CS1     RX4  A12 31 |   46 * * 47   | 34 A15 PWM
146 146
   #define LCD_PINS_D5      43
147 147
   #define LCD_PINS_D6      44
148 148
   #define LCD_PINS_D7      45
149
+#endif
150
+
151
+#if ENABLED(NEWPANEL)
149 152
   #define BTN_EN1          46
150 153
   #define BTN_EN2          47
151 154
   #define BTN_ENC          48
152 155
 #endif
156
+
157
+#if ENABLED(REPRAPWORLD_KEYPAD)
158
+  #define SHIFT_OUT        40
159
+  #define SHIFT_CLK        44
160
+  #define SHIFT_LD         42
161
+#endif

+ 3
- 2
buildroot/share/tests/megaatmega2560_tests Переглянути файл

@@ -74,11 +74,11 @@ exec_test $1 $2 "... Sled Z Probe, Skew, UBL Cartesian moves, Japanese, and Z pr
74 74
 # ...with AUTO_BED_LEVELING_3POINT, DEBUG_LEVELING_FEATURE, EEPROM_SETTINGS, EEPROM_CHITCHAT, EXTENDED_CAPABILITIES_REPORT, and AUTO_REPORT_TEMPERATURES
75 75
 #
76 76
 restore_configs
77
-opt_enable Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \
77
+opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE \
78 78
            AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT
79 79
 opt_set NUM_SERVOS 1
80 80
 opt_enable_adv NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET
81
-exec_test $1 $2 "RAMPS with Servo Probe, 3-Point ABL, DEBUG_LEVELING_FEATURE, EEPROM, G38, and more"
81
+exec_test $1 $2 "RAMPS with ZONESTAR_LCD, Servo Probe, 3-Point ABL, DEBUG_LEVELING_FEATURE, EEPROM, G38, and more"
82 82
 
83 83
 #
84 84
 # Test MESH_BED_LEVELING feature, with LCD
@@ -313,6 +313,7 @@ opt_set Y_DRIVER_TYPE TMC2208
313 313
 opt_set Z_DRIVER_TYPE TMC2208
314 314
 opt_set E0_DRIVER_TYPE TMC2208
315 315
 opt_disable Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
316
+opt_enable REPRAPWORLD_KEYPAD
316 317
 opt_enable_adv MONITOR_DRIVER_STATUS STEALTHCHOP HYBRID_THRESHOLD TMC_DEBUG
317 318
 exec_test $1 $2 "TMC2208 Config"
318 319
 #

Завантаження…
Відмінити
Зберегти