瀏覽代碼

Expand encoder value range

Scott Lahteine 5 年之前
父節點
當前提交
f00b48f9a8

+ 4
- 4
Marlin/src/lcd/menu/menu.cpp 查看文件

132
  *
132
  *
133
  *   bool MenuItem_int3::_edit();
133
  *   bool MenuItem_int3::_edit();
134
  *   void MenuItem_int3::edit(); // edit int16_t (interactively)
134
  *   void MenuItem_int3::edit(); // edit int16_t (interactively)
135
- *   void MenuItem_int3::action(PGM_P const pstr, int16_t * const ptr, const int16_t minValue, const int16_t maxValue, const screenFunc_t callback = null, const bool live = false);
135
+ *   void MenuItem_int3::action(PGM_P const pstr, int16_t * const ptr, const int32_t minValue, const int32_t maxValue, const screenFunc_t callback = null, const bool live = false);
136
  *
136
  *
137
  * You can then use one of the menu macros to present the edit interface:
137
  * You can then use one of the menu macros to present the edit interface:
138
  *   EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, 10, 999)
138
  *   EDIT_ITEM(int3, MSG_SPEED, &feedrate_percentage, 10, 999)
148
   #if ENABLED(TOUCH_BUTTONS)
148
   #if ENABLED(TOUCH_BUTTONS)
149
     ui.repeat_delay = BUTTON_DELAY_EDIT;
149
     ui.repeat_delay = BUTTON_DELAY_EDIT;
150
   #endif
150
   #endif
151
-  if (int16_t(ui.encoderPosition) < 0) ui.encoderPosition = 0;
152
-  if (int16_t(ui.encoderPosition) > maxEditValue) ui.encoderPosition = maxEditValue;
151
+  if (int32_t(ui.encoderPosition) < 0) ui.encoderPosition = 0;
152
+  if (int32_t(ui.encoderPosition) > maxEditValue) ui.encoderPosition = maxEditValue;
153
   if (ui.should_draw())
153
   if (ui.should_draw())
154
     draw_edit_screen(editLabel, strfunc(ui.encoderPosition + minEditValue));
154
     draw_edit_screen(editLabel, strfunc(ui.encoderPosition + minEditValue));
155
   if (ui.lcd_clicked || (liveEdit && ui.should_draw())) {
155
   if (ui.lcd_clicked || (liveEdit && ui.should_draw())) {
341
 void scroll_screen(const uint8_t limit, const bool is_menu) {
341
 void scroll_screen(const uint8_t limit, const bool is_menu) {
342
   ui.encoder_direction_menus();
342
   ui.encoder_direction_menus();
343
   ENCODER_RATE_MULTIPLY(false);
343
   ENCODER_RATE_MULTIPLY(false);
344
-  if (ui.encoderPosition > 0x8000) ui.encoderPosition = 0;
344
+  if (int32_t(ui.encoderPosition) < 0) ui.encoderPosition = 0;
345
   if (ui.first_page) {
345
   if (ui.first_page) {
346
     encoderLine = ui.encoderPosition / (ENCODER_STEPS_PER_MENU_ITEM);
346
     encoderLine = ui.encoderPosition / (ENCODER_STEPS_PER_MENU_ITEM);
347
     screen_changed = false;
347
     screen_changed = false;

+ 2
- 2
Marlin/src/lcd/menu/menu_bed_leveling.cpp 查看文件

121
     // Encoder knob or keypad buttons adjust the Z position
121
     // Encoder knob or keypad buttons adjust the Z position
122
     //
122
     //
123
     if (ui.encoderPosition) {
123
     if (ui.encoderPosition) {
124
-      const float z = current_position.z + float(int16_t(ui.encoderPosition)) * (MESH_EDIT_Z_STEP);
124
+      const float z = current_position.z + float(int32_t(ui.encoderPosition)) * (MESH_EDIT_Z_STEP);
125
       line_to_z(constrain(z, -(LCD_PROBE_Z_RANGE) * 0.5f, (LCD_PROBE_Z_RANGE) * 0.5f));
125
       line_to_z(constrain(z, -(LCD_PROBE_Z_RANGE) * 0.5f, (LCD_PROBE_Z_RANGE) * 0.5f));
126
       ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
126
       ui.refresh(LCDVIEW_CALL_REDRAW_NEXT);
127
       ui.encoderPosition = 0;
127
       ui.encoderPosition = 0;
142
   void _lcd_level_bed_moving() {
142
   void _lcd_level_bed_moving() {
143
     if (ui.should_draw()) {
143
     if (ui.should_draw()) {
144
       char msg[10];
144
       char msg[10];
145
-      sprintf_P(msg, PSTR("%i / %u"), (int)(manual_probe_index + 1), total_probe_points);
145
+      sprintf_P(msg, PSTR("%i / %u"), int(manual_probe_index + 1), total_probe_points);
146
       draw_edit_screen(GET_TEXT(MSG_LEVEL_BED_NEXT_POINT), msg);
146
       draw_edit_screen(GET_TEXT(MSG_LEVEL_BED_NEXT_POINT), msg);
147
     }
147
     }
148
     ui.refresh(LCDVIEW_CALL_NO_REDRAW);
148
     ui.refresh(LCDVIEW_CALL_NO_REDRAW);

+ 3
- 3
Marlin/src/lcd/menu/menu_mixer.cpp 查看文件

43
     ui.defer_status_screen();
43
     ui.defer_status_screen();
44
     ENCODER_RATE_MULTIPLY(true);
44
     ENCODER_RATE_MULTIPLY(true);
45
     if (ui.encoderPosition != 0) {
45
     if (ui.encoderPosition != 0) {
46
-      mixer.gradient.start_z += float(int16_t(ui.encoderPosition)) * 0.1;
46
+      mixer.gradient.start_z += float(int32_t(ui.encoderPosition)) * 0.1;
47
       ui.encoderPosition = 0;
47
       ui.encoderPosition = 0;
48
       NOLESS(mixer.gradient.start_z, 0);
48
       NOLESS(mixer.gradient.start_z, 0);
49
       NOMORE(mixer.gradient.start_z, Z_MAX_POS);
49
       NOMORE(mixer.gradient.start_z, Z_MAX_POS);
68
     ui.defer_status_screen();
68
     ui.defer_status_screen();
69
     ENCODER_RATE_MULTIPLY(true);
69
     ENCODER_RATE_MULTIPLY(true);
70
     if (ui.encoderPosition != 0) {
70
     if (ui.encoderPosition != 0) {
71
-      mixer.gradient.end_z += float(int16_t(ui.encoderPosition)) * 0.1;
71
+      mixer.gradient.end_z += float(int32_t(ui.encoderPosition)) * 0.1;
72
       ui.encoderPosition = 0;
72
       ui.encoderPosition = 0;
73
       NOLESS(mixer.gradient.end_z, 0);
73
       NOLESS(mixer.gradient.end_z, 0);
74
       NOMORE(mixer.gradient.end_z, Z_MAX_POS);
74
       NOMORE(mixer.gradient.end_z, Z_MAX_POS);
187
   #elif DUAL_MIXING_EXTRUDER
187
   #elif DUAL_MIXING_EXTRUDER
188
 
188
 
189
     if (ui.encoderPosition != 0) {
189
     if (ui.encoderPosition != 0) {
190
-      mixer.mix[0] += int16_t(ui.encoderPosition);
190
+      mixer.mix[0] += int32_t(ui.encoderPosition);
191
       ui.encoderPosition = 0;
191
       ui.encoderPosition = 0;
192
       if (mixer.mix[0] < 0) mixer.mix[0] += 101;
192
       if (mixer.mix[0] < 0) mixer.mix[0] += 101;
193
       if (mixer.mix[0] > 100) mixer.mix[0] -= 101;
193
       if (mixer.mix[0] > 100) mixer.mix[0] -= 101;

+ 4
- 4
Marlin/src/lcd/menu/menu_motion.cpp 查看文件

127
     #endif
127
     #endif
128
 
128
 
129
     // Get the new position
129
     // Get the new position
130
-    const float diff = float(int16_t(ui.encoderPosition)) * move_menu_scale;
130
+    const float diff = float(int32_t(ui.encoderPosition)) * move_menu_scale;
131
     #if IS_KINEMATIC
131
     #if IS_KINEMATIC
132
       manual_move_offset += diff;
132
       manual_move_offset += diff;
133
-      if (int16_t(ui.encoderPosition) < 0)
133
+      if (int32_t(ui.encoderPosition) < 0)
134
         NOLESS(manual_move_offset, min - current_position[axis]);
134
         NOLESS(manual_move_offset, min - current_position[axis]);
135
       else
135
       else
136
         NOMORE(manual_move_offset, max - current_position[axis]);
136
         NOMORE(manual_move_offset, max - current_position[axis]);
137
     #else
137
     #else
138
       current_position[axis] += diff;
138
       current_position[axis] += diff;
139
-      if (int16_t(ui.encoderPosition) < 0)
139
+      if (int32_t(ui.encoderPosition) < 0)
140
         NOLESS(current_position[axis], min);
140
         NOLESS(current_position[axis], min);
141
       else
141
       else
142
         NOMORE(current_position[axis], max);
142
         NOMORE(current_position[axis], max);
169
     if (ui.use_click()) return ui.goto_previous_screen_no_defer();
169
     if (ui.use_click()) return ui.goto_previous_screen_no_defer();
170
     if (ui.encoderPosition) {
170
     if (ui.encoderPosition) {
171
       if (!ui.processing_manual_move) {
171
       if (!ui.processing_manual_move) {
172
-        const float diff = float(int16_t(ui.encoderPosition)) * move_menu_scale;
172
+        const float diff = float(int32_t(ui.encoderPosition)) * move_menu_scale;
173
         #if IS_KINEMATIC
173
         #if IS_KINEMATIC
174
           manual_move_offset += diff;
174
           manual_move_offset += diff;
175
         #else
175
         #else

+ 1
- 1
Marlin/src/lcd/menu/menu_ubl.cpp 查看文件

462
   if (ui.use_click()) return _lcd_ubl_map_lcd_edit_cmd();
462
   if (ui.use_click()) return _lcd_ubl_map_lcd_edit_cmd();
463
 
463
 
464
   if (ui.encoderPosition) {
464
   if (ui.encoderPosition) {
465
-    step_scaler += int16_t(ui.encoderPosition);
465
+    step_scaler += int32_t(ui.encoderPosition);
466
     x_plot += step_scaler / (ENCODER_STEPS_PER_MENU_ITEM);
466
     x_plot += step_scaler / (ENCODER_STEPS_PER_MENU_ITEM);
467
     ui.encoderPosition = 0;
467
     ui.encoderPosition = 0;
468
     ui.refresh(LCDVIEW_REDRAW_NOW);
468
     ui.refresh(LCDVIEW_REDRAW_NOW);

+ 1
- 1
Marlin/src/lcd/ultralcd.cpp 查看文件

137
 
137
 
138
 // Encoder Handling
138
 // Encoder Handling
139
 #if HAS_ENCODER_ACTION
139
 #if HAS_ENCODER_ACTION
140
-  uint16_t MarlinUI::encoderPosition;
140
+  uint32_t MarlinUI::encoderPosition;
141
   volatile int8_t encoderDiff; // Updated in update_buttons, added to encoderPosition every LCD update
141
   volatile int8_t encoderDiff; // Updated in update_buttons, added to encoderPosition every LCD update
142
 #endif
142
 #endif
143
 
143
 

+ 1
- 1
Marlin/src/lcd/ultralcd.h 查看文件

552
       static void wait_for_release();
552
       static void wait_for_release();
553
     #endif
553
     #endif
554
 
554
 
555
-    static uint16_t encoderPosition;
555
+    static uint32_t encoderPosition;
556
 
556
 
557
     #if ENABLED(REVERSE_ENCODER_DIRECTION)
557
     #if ENABLED(REVERSE_ENCODER_DIRECTION)
558
       #define ENCODERBASE -1
558
       #define ENCODERBASE -1

Loading…
取消
儲存