|
@@ -495,14 +495,19 @@ static void lcd_tune_menu() {
|
495
|
495
|
|
496
|
496
|
//
|
497
|
497
|
// Nozzle:
|
|
498
|
+ // Nozzle 1:
|
498
|
499
|
// Nozzle 2:
|
499
|
500
|
// Nozzle 3:
|
500
|
501
|
// Nozzle 4:
|
501
|
502
|
//
|
502
|
|
- #if TEMP_SENSOR_0 != 0
|
503
|
|
- MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
504
|
|
- #endif
|
505
|
|
- #if EXTRUDERS > 1
|
|
503
|
+ #if EXTRUDERS == 1
|
|
504
|
+ #if TEMP_SENSOR_0 != 0
|
|
505
|
+ MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
|
506
|
+ #endif
|
|
507
|
+ #else //EXTRUDERS > 1
|
|
508
|
+ #if TEMP_SENSOR_0 != 0
|
|
509
|
+ MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N1, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
|
510
|
+ #endif
|
506
|
511
|
#if TEMP_SENSOR_1 != 0
|
507
|
512
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
|
508
|
513
|
#endif
|
|
@@ -536,18 +541,21 @@ static void lcd_tune_menu() {
|
536
|
541
|
MENU_ITEM_EDIT(int3, MSG_FLOW, &extruder_multiplier[active_extruder], 10, 999);
|
537
|
542
|
|
538
|
543
|
//
|
539
|
|
- // Flow 0:
|
|
544
|
+ // Flow:
|
540
|
545
|
// Flow 1:
|
541
|
546
|
// Flow 2:
|
542
|
547
|
// Flow 3:
|
|
548
|
+ // Flow 4:
|
543
|
549
|
//
|
544
|
|
- MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N0, &extruder_multiplier[0], 10, 999);
|
545
|
|
- #if EXTRUDERS > 1
|
546
|
|
- MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &extruder_multiplier[1], 10, 999);
|
|
550
|
+ #if EXTRUDERS == 1
|
|
551
|
+ MENU_ITEM_EDIT(int3, MSG_FLOW, &extruder_multiplier[0], 10, 999);
|
|
552
|
+ #else // EXTRUDERS > 1
|
|
553
|
+ MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N1, &extruder_multiplier[0], 10, 999);
|
|
554
|
+ MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &extruder_multiplier[1], 10, 999);
|
547
|
555
|
#if EXTRUDERS > 2
|
548
|
|
- MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N2, &extruder_multiplier[2], 10, 999);
|
|
556
|
+ MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N3, &extruder_multiplier[2], 10, 999);
|
549
|
557
|
#if EXTRUDERS > 3
|
550
|
|
- MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N3, &extruder_multiplier[3], 10, 999);
|
|
558
|
+ MENU_ITEM_EDIT(int3, MSG_FLOW MSG_N4, &extruder_multiplier[3], 10, 999);
|
551
|
559
|
#endif //EXTRUDERS > 3
|
552
|
560
|
#endif //EXTRUDERS > 2
|
553
|
561
|
#endif //EXTRUDERS > 1
|
|
@@ -829,12 +837,12 @@ static void lcd_move_e(
|
829
|
837
|
pos_label = PSTR(MSG_MOVE_E);
|
830
|
838
|
#else
|
831
|
839
|
switch (e) {
|
832
|
|
- case 0: pos_label = PSTR(MSG_MOVE_E0); break;
|
833
|
|
- case 1: pos_label = PSTR(MSG_MOVE_E1); break;
|
|
840
|
+ case 0: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E1); break;
|
|
841
|
+ case 1: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E2); break;
|
834
|
842
|
#if EXTRUDERS > 2
|
835
|
|
- case 2: pos_label = PSTR(MSG_MOVE_E2); break;
|
|
843
|
+ case 2: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E3); break;
|
836
|
844
|
#if EXTRUDERS > 3
|
837
|
|
- case 3: pos_label = PSTR(MSG_MOVE_E3); break;
|
|
845
|
+ case 3: pos_label = PSTR(MSG_MOVE_E MSG_MOVE_E4); break;
|
838
|
846
|
#endif //EXTRUDERS > 3
|
839
|
847
|
#endif //EXTRUDERS > 2
|
840
|
848
|
}
|
|
@@ -874,12 +882,12 @@ static void lcd_move_menu_axis() {
|
874
|
882
|
#if EXTRUDERS == 1
|
875
|
883
|
MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e);
|
876
|
884
|
#else
|
877
|
|
- MENU_ITEM(submenu, MSG_MOVE_E0, lcd_move_e0);
|
878
|
|
- MENU_ITEM(submenu, MSG_MOVE_E1, lcd_move_e1);
|
|
885
|
+ MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E1, lcd_move_e0);
|
|
886
|
+ MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E2, lcd_move_e1);
|
879
|
887
|
#if EXTRUDERS > 2
|
880
|
|
- MENU_ITEM(submenu, MSG_MOVE_E2, lcd_move_e2);
|
|
888
|
+ MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E3, lcd_move_e2);
|
881
|
889
|
#if EXTRUDERS > 3
|
882
|
|
- MENU_ITEM(submenu, MSG_MOVE_E3, lcd_move_e3);
|
|
890
|
+ MENU_ITEM(submenu, MSG_MOVE_E MSG_MOVE_E4, lcd_move_e3);
|
883
|
891
|
#endif
|
884
|
892
|
#endif
|
885
|
893
|
#endif // EXTRUDERS > 1
|
|
@@ -962,18 +970,18 @@ static void lcd_control_menu() {
|
962
|
970
|
PID_PARAM(Kd, e) = scalePID_d(raw_Kd);
|
963
|
971
|
updatePID();
|
964
|
972
|
}
|
965
|
|
- void copy_and_scalePID_i_E1() { copy_and_scalePID_i(0); }
|
966
|
|
- void copy_and_scalePID_d_E1() { copy_and_scalePID_d(0); }
|
|
973
|
+ #define COPY_AND_SCALE(eindex) \
|
|
974
|
+ void copy_and_scalePID_i_E ## eindex() { copy_and_scalePID_i(eindex); } \
|
|
975
|
+ void copy_and_scalePID_d_E ## eindex() { copy_and_scalePID_d(eindex); }
|
|
976
|
+
|
|
977
|
+ COPY_AND_SCALE(0);
|
967
|
978
|
#if ENABLED(PID_PARAMS_PER_EXTRUDER)
|
968
|
979
|
#if EXTRUDERS > 1
|
969
|
|
- void copy_and_scalePID_i_E2() { copy_and_scalePID_i(1); }
|
970
|
|
- void copy_and_scalePID_d_E2() { copy_and_scalePID_d(1); }
|
|
980
|
+ COPY_AND_SCALE(1);
|
971
|
981
|
#if EXTRUDERS > 2
|
972
|
|
- void copy_and_scalePID_i_E3() { copy_and_scalePID_i(2); }
|
973
|
|
- void copy_and_scalePID_d_E3() { copy_and_scalePID_d(2); }
|
|
982
|
+ COPY_AND_SCALE(2);
|
974
|
983
|
#if EXTRUDERS > 3
|
975
|
|
- void copy_and_scalePID_i_E4() { copy_and_scalePID_i(3); }
|
976
|
|
- void copy_and_scalePID_d_E4() { copy_and_scalePID_d(3); }
|
|
984
|
+ COPY_AND_SCALE(3);
|
977
|
985
|
#endif //EXTRUDERS > 3
|
978
|
986
|
#endif //EXTRUDERS > 2
|
979
|
987
|
#endif //EXTRUDERS > 1
|
|
@@ -995,12 +1003,17 @@ static void lcd_control_temperature_menu() {
|
995
|
1003
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
996
|
1004
|
|
997
|
1005
|
//
|
998
|
|
- // Nozzle, Nozzle 2, Nozzle 3, Nozzle 4
|
|
1006
|
+ // Nozzle
|
|
1007
|
+ // Nozzle 1, Nozzle 2, Nozzle 3, Nozzle 4
|
999
|
1008
|
//
|
1000
|
|
- #if TEMP_SENSOR_0 != 0
|
1001
|
|
- MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
1002
|
|
- #endif
|
1003
|
|
- #if EXTRUDERS > 1
|
|
1009
|
+ #if EXTRUDERS == 1
|
|
1010
|
+ #if TEMP_SENSOR_0 != 0
|
|
1011
|
+ MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
|
1012
|
+ #endif
|
|
1013
|
+ #else //EXTRUDERS > 1
|
|
1014
|
+ #if TEMP_SENSOR_0 != 0
|
|
1015
|
+ MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N1, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15);
|
|
1016
|
+ #endif
|
1004
|
1017
|
#if TEMP_SENSOR_1 != 0
|
1005
|
1018
|
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_NOZZLE MSG_N2, &target_temperature[1], 0, HEATER_1_MAXTEMP - 15);
|
1006
|
1019
|
#endif
|
|
@@ -1040,59 +1053,42 @@ static void lcd_control_temperature_menu() {
|
1040
|
1053
|
|
1041
|
1054
|
//
|
1042
|
1055
|
// PID-P, PID-I, PID-D, PID-C
|
|
1056
|
+ // PID-P E1, PID-I E1, PID-D E1, PID-C E1
|
|
1057
|
+ // PID-P E2, PID-I E2, PID-D E2, PID-C E2
|
|
1058
|
+ // PID-P E3, PID-I E3, PID-D E3, PID-C E3
|
|
1059
|
+ // PID-P E4, PID-I E4, PID-D E4, PID-C E4
|
1043
|
1060
|
//
|
1044
|
1061
|
#if ENABLED(PIDTEMP)
|
1045
|
|
- // set up temp variables - undo the default scaling
|
1046
|
|
- raw_Ki = unscalePID_i(PID_PARAM(Ki,0));
|
1047
|
|
- raw_Kd = unscalePID_d(PID_PARAM(Kd,0));
|
1048
|
|
- MENU_ITEM_EDIT(float52, MSG_PID_P, &PID_PARAM(Kp,0), 1, 9990);
|
1049
|
|
- // i is typically a small value so allows values below 1
|
1050
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E1);
|
1051
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D, &raw_Kd, 1, 9990, copy_and_scalePID_d_E1);
|
|
1062
|
+
|
|
1063
|
+ #define _PID_MENU_ITEMS(ELABEL, eindex) \
|
|
1064
|
+ raw_Ki = unscalePID_i(PID_PARAM(Ki, eindex)); \
|
|
1065
|
+ raw_Kd = unscalePID_d(PID_PARAM(Kd, eindex)); \
|
|
1066
|
+ MENU_ITEM_EDIT(float52, MSG_PID_P ELABEL, &PID_PARAM(Kp, eindex), 1, 9990); \
|
|
1067
|
+ MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I ELABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E ## eindex); \
|
|
1068
|
+ MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D ELABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_E ## eindex)
|
|
1069
|
+
|
1052
|
1070
|
#if ENABLED(PID_ADD_EXTRUSION_RATE)
|
1053
|
|
- MENU_ITEM_EDIT(float3, MSG_PID_C, &PID_PARAM(Kc,0), 1, 9990);
|
1054
|
|
- #endif//PID_ADD_EXTRUSION_RATE
|
1055
|
|
- #if ENABLED(PID_PARAMS_PER_EXTRUDER)
|
1056
|
|
- #if EXTRUDERS > 1
|
1057
|
|
- // set up temp variables - undo the default scaling
|
1058
|
|
- raw_Ki = unscalePID_i(PID_PARAM(Ki,1));
|
1059
|
|
- raw_Kd = unscalePID_d(PID_PARAM(Kd,1));
|
1060
|
|
- MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E2, &PID_PARAM(Kp,1), 1, 9990);
|
1061
|
|
- // i is typically a small value so allows values below 1
|
1062
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E2, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E2);
|
1063
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E2, &raw_Kd, 1, 9990, copy_and_scalePID_d_E2);
|
1064
|
|
- #if ENABLED(PID_ADD_EXTRUSION_RATE)
|
1065
|
|
- MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E2, &PID_PARAM(Kc,1), 1, 9990);
|
1066
|
|
- #endif//PID_ADD_EXTRUSION_RATE
|
|
1071
|
+ #define PID_MENU_ITEMS(ELABEL, eindex) \
|
|
1072
|
+ _PID_MENU_ITEMS(ELABEL, eindex); \
|
|
1073
|
+ MENU_ITEM_EDIT(float3, MSG_PID_C ELABEL, &PID_PARAM(Kc, eindex), 1, 9990)
|
|
1074
|
+ #else
|
|
1075
|
+ #define PID_MENU_ITEMS(ELABEL, eindex) _PID_MENU_ITEMS(ELABEL, eindex)
|
|
1076
|
+ #endif
|
1067
|
1077
|
|
1068
|
|
- #if EXTRUDERS > 2
|
1069
|
|
- // set up temp variables - undo the default scaling
|
1070
|
|
- raw_Ki = unscalePID_i(PID_PARAM(Ki,2));
|
1071
|
|
- raw_Kd = unscalePID_d(PID_PARAM(Kd,2));
|
1072
|
|
- MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E3, &PID_PARAM(Kp,2), 1, 9990);
|
1073
|
|
- // i is typically a small value so allows values below 1
|
1074
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E3, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E3);
|
1075
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E3, &raw_Kd, 1, 9990, copy_and_scalePID_d_E3);
|
1076
|
|
- #if ENABLED(PID_ADD_EXTRUSION_RATE)
|
1077
|
|
- MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E3, &PID_PARAM(Kc,2), 1, 9990);
|
1078
|
|
- #endif//PID_ADD_EXTRUSION_RATE
|
|
1078
|
+ #if ENABLED(PID_PARAMS_PER_EXTRUDER) && EXTRUDERS > 1
|
|
1079
|
+ PID_MENU_ITEMS(MSG_E1, 0);
|
|
1080
|
+ PID_MENU_ITEMS(MSG_E2, 1);
|
|
1081
|
+ #if EXTRUDERS > 2
|
|
1082
|
+ PID_MENU_ITEMS(MSG_E3, 2);
|
|
1083
|
+ #if EXTRUDERS > 3
|
|
1084
|
+ PID_MENU_ITEMS(MSG_E4, 3);
|
|
1085
|
+ #endif //EXTRUDERS > 3
|
|
1086
|
+ #endif //EXTRUDERS > 2
|
|
1087
|
+ #else //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
|
|
1088
|
+ PID_MENU_ITEMS("", 0);
|
|
1089
|
+ #endif //!PID_PARAMS_PER_EXTRUDER || EXTRUDERS == 1
|
1079
|
1090
|
|
1080
|
|
- #if EXTRUDERS > 3
|
1081
|
|
- // set up temp variables - undo the default scaling
|
1082
|
|
- raw_Ki = unscalePID_i(PID_PARAM(Ki,3));
|
1083
|
|
- raw_Kd = unscalePID_d(PID_PARAM(Kd,3));
|
1084
|
|
- MENU_ITEM_EDIT(float52, MSG_PID_P MSG_E4, &PID_PARAM(Kp,3), 1, 9990);
|
1085
|
|
- // i is typically a small value so allows values below 1
|
1086
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I MSG_E4, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_E4);
|
1087
|
|
- MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D MSG_E4, &raw_Kd, 1, 9990, copy_and_scalePID_d_E4);
|
1088
|
|
- #if ENABLED(PID_ADD_EXTRUSION_RATE)
|
1089
|
|
- MENU_ITEM_EDIT(float3, MSG_PID_C MSG_E4, &PID_PARAM(Kc,3), 1, 9990);
|
1090
|
|
- #endif//PID_ADD_EXTRUSION_RATE
|
1091
|
|
- #endif//EXTRUDERS > 3
|
1092
|
|
- #endif//EXTRUDERS > 2
|
1093
|
|
- #endif//EXTRUDERS > 1
|
1094
|
|
- #endif //PID_PARAMS_PER_EXTRUDER
|
1095
|
|
- #endif//PIDTEMP
|
|
1091
|
+ #endif //PIDTEMP
|
1096
|
1092
|
|
1097
|
1093
|
//
|
1098
|
1094
|
// Preheat PLA conf
|
|
@@ -1201,13 +1197,15 @@ static void lcd_control_volumetric_menu() {
|
1201
|
1197
|
MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers);
|
1202
|
1198
|
|
1203
|
1199
|
if (volumetric_enabled) {
|
1204
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_0, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
|
1205
|
|
- #if EXTRUDERS > 1
|
1206
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_1, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers);
|
|
1200
|
+ #if EXTRUDERS == 1
|
|
1201
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
|
|
1202
|
+ #else //EXTRUDERS > 1
|
|
1203
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E1, &filament_size[0], 1.5, 3.25, calculate_volumetric_multipliers);
|
|
1204
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E2, &filament_size[1], 1.5, 3.25, calculate_volumetric_multipliers);
|
1207
|
1205
|
#if EXTRUDERS > 2
|
1208
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_2, &filament_size[2], 1.5, 3.25, calculate_volumetric_multipliers);
|
|
1206
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E3, &filament_size[2], 1.5, 3.25, calculate_volumetric_multipliers);
|
1209
|
1207
|
#if EXTRUDERS > 3
|
1210
|
|
- MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER_3, &filament_size[3], 1.5, 3.25, calculate_volumetric_multipliers);
|
|
1208
|
+ MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_DIAM MSG_DIAM_E4, &filament_size[3], 1.5, 3.25, calculate_volumetric_multipliers);
|
1211
|
1209
|
#endif //EXTRUDERS > 3
|
1212
|
1210
|
#endif //EXTRUDERS > 2
|
1213
|
1211
|
#endif //EXTRUDERS > 1
|