Browse Source

Merge pull request #4357 from thinkyhead/rc_fix_keypad_issues

Fix some Reprapworld Keypad issues
Scott Lahteine 9 years ago
parent
commit
e6e4d4062d

+ 1
- 1
Marlin/Configuration.h View File

@@ -1160,7 +1160,7 @@
1160 1160
 // is pressed, a value of 10.0 means 10mm per click.
1161 1161
 //
1162 1162
 //#define REPRAPWORLD_KEYPAD
1163
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1163
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1164 1164
 
1165 1165
 //
1166 1166
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/Felix/Configuration.h View File

@@ -1143,7 +1143,7 @@
1143 1143
 // is pressed, a value of 10.0 means 10mm per click.
1144 1144
 //
1145 1145
 //#define REPRAPWORLD_KEYPAD
1146
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1146
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1147 1147
 
1148 1148
 //
1149 1149
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/Felix/DUAL/Configuration.h View File

@@ -1141,7 +1141,7 @@
1141 1141
 // is pressed, a value of 10.0 means 10mm per click.
1142 1142
 //
1143 1143
 //#define REPRAPWORLD_KEYPAD
1144
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1144
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1145 1145
 
1146 1146
 //
1147 1147
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/Hephestos/Configuration.h View File

@@ -1152,7 +1152,7 @@
1152 1152
 // is pressed, a value of 10.0 means 10mm per click.
1153 1153
 //
1154 1154
 //#define REPRAPWORLD_KEYPAD
1155
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1155
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1156 1156
 
1157 1157
 //
1158 1158
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/Hephestos_2/Configuration.h View File

@@ -1154,7 +1154,7 @@
1154 1154
 // is pressed, a value of 10.0 means 10mm per click.
1155 1155
 //
1156 1156
 //#define REPRAPWORLD_KEYPAD
1157
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1157
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1158 1158
 
1159 1159
 //
1160 1160
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/K8200/Configuration.h View File

@@ -1177,7 +1177,7 @@
1177 1177
 // is pressed, a value of 10.0 means 10mm per click.
1178 1178
 //
1179 1179
 //#define REPRAPWORLD_KEYPAD
1180
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1180
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1181 1181
 
1182 1182
 //
1183 1183
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/RepRapWorld/Megatronics/Configuration.h View File

@@ -1160,7 +1160,7 @@
1160 1160
 // is pressed, a value of 10.0 means 10mm per click.
1161 1161
 //
1162 1162
 #define REPRAPWORLD_KEYPAD
1163
-#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1163
+#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1164 1164
 
1165 1165
 //
1166 1166
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/RigidBot/Configuration.h View File

@@ -1160,7 +1160,7 @@
1160 1160
 // is pressed, a value of 10.0 means 10mm per click.
1161 1161
 //
1162 1162
 //#define REPRAPWORLD_KEYPAD
1163
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1163
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1164 1164
 
1165 1165
 //
1166 1166
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/SCARA/Configuration.h View File

@@ -1168,7 +1168,7 @@
1168 1168
 // is pressed, a value of 10.0 means 10mm per click.
1169 1169
 //
1170 1170
 //#define REPRAPWORLD_KEYPAD
1171
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1171
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1172 1172
 
1173 1173
 //
1174 1174
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/TAZ4/Configuration.h View File

@@ -1181,7 +1181,7 @@
1181 1181
 // is pressed, a value of 10.0 means 10mm per click.
1182 1182
 //
1183 1183
 //#define REPRAPWORLD_KEYPAD
1184
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1184
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1185 1185
 
1186 1186
 //
1187 1187
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/WITBOX/Configuration.h View File

@@ -1152,7 +1152,7 @@
1152 1152
 // is pressed, a value of 10.0 means 10mm per click.
1153 1153
 //
1154 1154
 //#define REPRAPWORLD_KEYPAD
1155
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1155
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1156 1156
 
1157 1157
 //
1158 1158
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/adafruit/ST7565/Configuration.h View File

@@ -1160,7 +1160,7 @@
1160 1160
 // is pressed, a value of 10.0 means 10mm per click.
1161 1161
 //
1162 1162
 //#define REPRAPWORLD_KEYPAD
1163
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1163
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1164 1164
 
1165 1165
 //
1166 1166
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/delta/biv2.5/Configuration.h View File

@@ -1255,7 +1255,7 @@
1255 1255
 // is pressed, a value of 10.0 means 10mm per click.
1256 1256
 //
1257 1257
 //#define REPRAPWORLD_KEYPAD
1258
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1258
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1259 1259
 
1260 1260
 //
1261 1261
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/delta/generic/Configuration.h View File

@@ -1249,7 +1249,7 @@
1249 1249
 // is pressed, a value of 10.0 means 10mm per click.
1250 1250
 //
1251 1251
 //#define REPRAPWORLD_KEYPAD
1252
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1252
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1253 1253
 
1254 1254
 //
1255 1255
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/delta/kossel_mini/Configuration.h View File

@@ -1252,7 +1252,7 @@
1252 1252
 // is pressed, a value of 10.0 means 10mm per click.
1253 1253
 //
1254 1254
 //#define REPRAPWORLD_KEYPAD
1255
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1255
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1256 1256
 
1257 1257
 //
1258 1258
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/delta/kossel_pro/Configuration.h View File

@@ -1252,7 +1252,7 @@
1252 1252
 // is pressed, a value of 10.0 means 10mm per click.
1253 1253
 //
1254 1254
 //#define REPRAPWORLD_KEYPAD
1255
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1255
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1256 1256
 
1257 1257
 //
1258 1258
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/delta/kossel_xl/Configuration.h View File

@@ -1254,7 +1254,7 @@
1254 1254
 // is pressed, a value of 10.0 means 10mm per click.
1255 1255
 //
1256 1256
 //#define REPRAPWORLD_KEYPAD
1257
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1257
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1258 1258
 
1259 1259
 //
1260 1260
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/makibox/Configuration.h View File

@@ -1163,7 +1163,7 @@
1163 1163
 // is pressed, a value of 10.0 means 10mm per click.
1164 1164
 //
1165 1165
 //#define REPRAPWORLD_KEYPAD
1166
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1166
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1167 1167
 
1168 1168
 //
1169 1169
 // RigidBot Panel V1.0

+ 1
- 1
Marlin/example_configurations/tvrrug/Round2/Configuration.h View File

@@ -1154,7 +1154,7 @@
1154 1154
 // is pressed, a value of 10.0 means 10mm per click.
1155 1155
 //
1156 1156
 //#define REPRAPWORLD_KEYPAD
1157
-//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0
1157
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 1.0
1158 1158
 
1159 1159
 //
1160 1160
 // RigidBot Panel V1.0

+ 44
- 47
Marlin/ultralcd.cpp View File

@@ -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.

+ 12
- 0
Marlin/ultralcd.h View File

@@ -117,12 +117,24 @@
117 117
 
118 118
     #define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN  (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F3)
119 119
     #define REPRAPWORLD_KEYPAD_MOVE_Z_UP    (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F2)
120
+    #define REPRAPWORLD_KEYPAD_MOVE_MENU    (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F1)
120 121
     #define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN  (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_DOWN)
121 122
     #define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_RIGHT)
122 123
     #define REPRAPWORLD_KEYPAD_MOVE_HOME    (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_MIDDLE)
123 124
     #define REPRAPWORLD_KEYPAD_MOVE_Y_UP    (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_UP)
124 125
     #define REPRAPWORLD_KEYPAD_MOVE_X_LEFT  (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_LEFT)
125 126
 
127
+    #define REPRAPWORLD_KEYPAD_PRESSED      (buttons_reprapworld_keypad & ( \
128
+                                              EN_REPRAPWORLD_KEYPAD_F3 | \
129
+                                              EN_REPRAPWORLD_KEYPAD_F2 | \
130
+                                              EN_REPRAPWORLD_KEYPAD_F1 | \
131
+                                              EN_REPRAPWORLD_KEYPAD_DOWN | \
132
+                                              EN_REPRAPWORLD_KEYPAD_RIGHT | \
133
+                                              EN_REPRAPWORLD_KEYPAD_MIDDLE | \
134
+                                              EN_REPRAPWORLD_KEYPAD_UP | \
135
+                                              EN_REPRAPWORLD_KEYPAD_LEFT) \
136
+                                            )
137
+
126 138
   #endif // REPRAPWORLD_KEYPAD
127 139
 
128 140
   #if ENABLED(NEWPANEL)

Loading…
Cancel
Save