![]() |
Repetier-Firmware
0.80
|
00001 /* 00002 This file is part of Repetier-Firmware. 00003 00004 Repetier-Firmware is free software: you can redistribute it and/or modify 00005 it under the terms of the GNU General Public License as published by 00006 the Free Software Foundation, either version 3 of the License, or 00007 (at your option) any later version. 00008 00009 Repetier-Firmware is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 GNU General Public License for more details. 00013 00014 You should have received a copy of the GNU General Public License 00015 along with Repetier-Firmware. If not, see <http://www.gnu.org/licenses/>. 00016 00017 */ 00018 #if !defined(_UI_MENU_H) && defined(UI_MAIN) 00019 #define _UI_MENU_H 00020 00021 /* 00022 The menu configuration uses dynamic strings. These dynamic strings can contain 00023 a placeholder for special values. During print these placeholder are exchanged 00024 by their current value. Everything else is printed exactly as written. 00025 00026 A placeholder always has 3 chars. It starts with a % followed by 2 characters 00027 defining the value. You can use any placeholder in any position, also it doesn't 00028 always make sense. 00029 00030 List of placeholder: 00031 %ec : Current extruder temperature 00032 %eb : Current heated bed temperature 00033 %e0..9 : Temp. of extruder 0..9 00034 %er : Extruder relative mode 00035 %Ec : Target temperature of current extruder 00036 %Eb : Target temperature of heated bed 00037 %E0-9 : Target temperature of extruder 0..9 00038 %os : Status message 00039 %oe : Error message 00040 %oB : Buffer length 00041 %om : Speed multiplier 00042 %of : flow multiplier 00043 %oc : Connection baudrate 00044 %o0..9 : Output level extruder 0..9 is % including %sign. 00045 %oC : Output level current extruder 00046 %ob : Output level heated bed 00047 %%% : The % char 00048 %x0 : X position 00049 %x1 : Y position 00050 %x2 : Z position 00051 %x3 : Current extruder position 00052 %sx : State of x min endstop. 00053 %sX : State of x max endstop. 00054 %sy : State of y min endstop. 00055 %sY : State of y max endstop. 00056 %sz : State of z min endstop. 00057 %sZ : State of z max endstop. 00058 %do : Debug echo state. 00059 %di : Debug info state. 00060 %de : Debug error state. 00061 %dd : Debug dry run state. 00062 %O0 : OPS mode = 0 00063 %O1 : OPS mode = 1 00064 %O2 : OPS mode = 2 00065 %Or : OPS retract distance 00066 %Ob : OPS backslash distance 00067 %Od : OPS min distance 00068 %Oa : OPS move after 00069 %ax : X acceleration during print moves 00070 %ay : Y acceleration during print moves 00071 %az : Z acceleration during print moves 00072 %aX : X acceleration during travel moves 00073 %aY : Y acceleration during travel moves 00074 %aZ : Z acceleration during travel moves 00075 %aj : Max. jerk 00076 %aJ : Max. Z-jerk 00077 %fx : Max. feedrate x direction 00078 %fy : Max. feedrate y direction 00079 %fz : Max. feedrate z direction 00080 %fe : Max. feedrate current extruder 00081 %fX : Homing feedrate x direction 00082 %fY : Homing feedrate y direction 00083 %fZ : Homing feedrate z direction 00084 %Sx : Steps per mm x direction 00085 %Sy : Steps per mm y direction 00086 %Sz : Steps per mm z direction 00087 %Se : Steps per mm current extruder 00088 %is : Stepper inactive time in seconds 00089 %ip : Max. inactive time in seconds 00090 %X0..9 : Extruder selected marker 00091 %Xi : PID I gain 00092 %Xp : PID P gain 00093 %Xd : PID D gain 00094 %Xm : PID drive min 00095 %XM : PID drive max 00096 %XD : PID max 00097 %Xw : Extruder watch period in seconds 00098 %Xh : Extruder heat manager (BangBang/PID) 00099 %Xa : Advance K value 00100 %Xx : x offset in steps 00101 %Xy : y offset in steps 00102 %Xf : Extruder max. start feedrate 00103 %XF : Extruder max. feedrate 00104 %XA : Extruder max. acceleration 00105 */ 00106 00107 00108 // Define precision for temperatures. With small displays only integer values fit. 00109 #ifndef UI_TEMP_PRECISION 00110 #if UI_COLS>16 00111 #define UI_TEMP_PRECISION 1 00112 #else 00113 #define UI_TEMP_PRECISION 0 00114 #endif 00115 #endif 00116 00117 /* ============= PAGES DEFINITION ============= 00118 00119 If you are not iside a menu, the firmware displays pages with information. 00120 Especially if you have only a small display it is convenient to have 00121 more then one information page. 00122 */ 00123 00124 /* Define your pages using dynamic strings. To define a page use 00125 UI_PAGE4(name,row1,row2,row3,row4); 00126 for 4 row displays and 00127 UI_PAGE2(name,row1,row2); 00128 for 2 row displays. You can add additional pages or change the default pages like you want. 00129 */ 00130 #if UI_ROWS>=4 00131 #if HAVE_HEATED_BED==true 00132 UI_PAGE4(ui_page1,"\005%ec/%Ec\002B%eB/%Eb\002","Z:%x2","Mul:%om Buf:%oB","%os"); 00133 //UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED,UI_TEXT_PAGE_BUFFER,"%os"); 00134 #else 00135 UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,"Z:%x2 mm",UI_TEXT_PAGE_BUFFER,"%os"); 00136 #endif 00137 UI_PAGE4(ui_page2,"X:%x0 mm","Y:%x1 mm","Z:%x2 mm","%os"); 00138 //UI_PAGE4(ui_page2,"dX:%y0 mm %sX","dY:%y1 mm %sY","dZ:%y2 mm %sZ","%os"); 00139 UI_PAGE4(ui_page3,UI_TEXT_PAGE_EXTRUDER1, 00140 #if NUM_EXTRUDER>1 00141 UI_TEXT_PAGE_EXTRUDER2 00142 #else 00143 "" 00144 #endif 00145 ,UI_TEXT_PAGE_BED,"%os"); 00146 00147 /* 00148 Merge pages together. Use the following pattern: 00149 #define UI_PAGES {&name1,&name2,&name3} 00150 */ 00151 #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3} 00152 // How many pages do you want to have. Minimum is 1. 00153 #define UI_NUM_PAGES 3 00154 #else 00155 #if HAVE_HEATED_BED==true 00156 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED); 00157 #else 00158 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,"%os"); 00159 #endif 00160 UI_PAGE2(ui_page2,"X:%x0 Y:%x1","%os"); 00161 UI_PAGE2(ui_page3,"Z:%x2 mm","%os"); 00162 /* 00163 Merge pages together. Use the following pattern: 00164 #define UI_PAGES {&name1,&name2,&name3} 00165 */ 00166 #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3} 00167 // How many pages do you want to have. Minimum is 1. 00168 #define UI_NUM_PAGES 3 00169 #endif 00170 /* ============ MENU definition ================ 00171 00172 The menu works the same as pages. In addion you need to define what the lines do 00173 or where to jump to. For that reason, the menu structure needs to be entered in 00174 reverse order. Starting from the leaves, the menu structure is defined. 00175 */ 00176 00177 /* 00178 At first define all actions available in the menu. The actions define, what the 00179 next/previous button will do. All menu actions work the same: 00180 next/previous changes the value 00181 ok sets the value if not already done and goes back to previous menu. 00182 */ 00183 00184 // Error menu 00185 00186 UI_MENU_ACTION2(ui_menu_error,UI_ACTION_DUMMY,UI_TEXT_ERROR,"%oe"); 00187 00188 // **** Positions submenus 00189 00190 #if UI_ROWS>=4 00191 UI_MENU_ACTION4C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION4); 00192 UI_MENU_ACTION4C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION4); 00193 UI_MENU_ACTION4C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION4); 00194 UI_MENU_ACTION4C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST4); 00195 UI_MENU_ACTION4C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST4); 00196 UI_MENU_ACTION4C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST4); 00197 #else 00198 UI_MENU_ACTION2C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION2); 00199 UI_MENU_ACTION2C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION2); 00200 UI_MENU_ACTION2C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION2); 00201 UI_MENU_ACTION2C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST2); 00202 UI_MENU_ACTION2C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST2); 00203 UI_MENU_ACTION2C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST2); 00204 #endif 00205 UI_MENU_ACTION2C(ui_menu_epos,UI_ACTION_EPOSITION,UI_TEXT_ACTION_EPOSITION_FAST2); 00206 00207 /* 00208 Next step is to define submenus leading to the action. 00209 */ 00210 00211 // **** Positionening menu 00212 UI_MENU_ACTIONCOMMAND(ui_menu_back,UI_TEXT_BACK,UI_ACTION_BACK); 00213 #if UI_HAS_BACK_KEY==0 00214 #define UI_MENU_ADDCONDBACK &ui_menu_back, 00215 #define UI_MENU_BACKCNT 1 00216 #else 00217 #define UI_MENU_ADDCONDBACK 00218 #define UI_MENU_BACKCNT 0 00219 #endif 00220 UI_MENU_ACTIONCOMMAND(ui_menu_home_all,UI_TEXT_HOME_ALL,UI_ACTION_HOME_ALL); 00221 UI_MENU_ACTIONCOMMAND(ui_menu_home_x,UI_TEXT_HOME_X,UI_ACTION_HOME_X); 00222 UI_MENU_ACTIONCOMMAND(ui_menu_home_y,UI_TEXT_HOME_Y,UI_ACTION_HOME_Y); 00223 UI_MENU_ACTIONCOMMAND(ui_menu_home_z,UI_TEXT_HOME_Z,UI_ACTION_HOME_Z); 00224 UI_MENU_ACTIONSELECTOR(ui_menu_go_xpos,UI_TEXT_X_POSITION,ui_menu_xpos); 00225 UI_MENU_ACTIONSELECTOR(ui_menu_go_ypos,UI_TEXT_Y_POSITION,ui_menu_ypos); 00226 UI_MENU_ACTIONSELECTOR(ui_menu_go_zpos,UI_TEXT_Z_POSITION,ui_menu_zpos); 00227 UI_MENU_ACTIONSELECTOR(ui_menu_go_epos,UI_TEXT_E_POSITION,ui_menu_epos); 00228 UI_MENU_ACTIONSELECTOR(ui_menu_go_xfast,UI_TEXT_X_POS_FAST,ui_menu_xpos_fast); 00229 UI_MENU_ACTIONSELECTOR(ui_menu_go_yfast,UI_TEXT_Y_POS_FAST,ui_menu_ypos_fast); 00230 UI_MENU_ACTIONSELECTOR(ui_menu_go_zfast,UI_TEXT_Z_POS_FAST,ui_menu_zpos_fast); 00231 00232 #define UI_MENU_POSITIONS {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_home_x,&ui_menu_home_y,&ui_menu_home_z,&ui_menu_go_xfast,&ui_menu_go_xpos,&ui_menu_go_yfast,&ui_menu_go_ypos,&ui_menu_go_zfast,&ui_menu_go_zpos,&ui_menu_go_epos} 00233 UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,11+UI_MENU_BACKCNT); 00234 00235 // **** Delta calibration menu 00236 #ifdef STEP_COUNTER 00237 UI_MENU_ACTIONCOMMAND(ui_menu_show_measurement,UI_TEXT_SHOW_MEASUREMENT,UI_ACTION_SHOW_MEASUREMENT); 00238 UI_MENU_ACTIONCOMMAND(ui_menu_reset_measurement,UI_TEXT_RESET_MEASUREMENT,UI_ACTION_RESET_MEASUREMENT); 00239 UI_MENU_ACTIONCOMMAND(ui_menu_set_measured_origin,UI_TEXT_SET_MEASURED_ORIGIN,UI_ACTION_SET_MEASURED_ORIGIN); 00240 #define UI_MENU_DELTA {UI_MENU_ADDCONDBACK &ui_menu_show_measurement,&ui_menu_reset_measurement,&ui_menu_set_measured_origin,&ui_menu_home_all,&ui_menu_go_zpos,&ui_menu_go_zfast} 00241 UI_MENU(ui_menu_delta,UI_MENU_DELTA,6+UI_MENU_BACKCNT); 00242 #endif 00243 00244 // **** Bed leveling menu 00245 #ifdef SOFTWARE_LEVELING 00246 UI_MENU_ACTIONCOMMAND(ui_menu_set_p1,UI_TEXT_SET_P1,UI_ACTION_SET_P1); 00247 UI_MENU_ACTIONCOMMAND(ui_menu_set_p2,UI_TEXT_SET_P2,UI_ACTION_SET_P2); 00248 UI_MENU_ACTIONCOMMAND(ui_menu_set_p3,UI_TEXT_SET_P3,UI_ACTION_SET_P3); 00249 UI_MENU_ACTIONCOMMAND(ui_menu_calculate_leveling,UI_TEXT_CALCULATE_LEVELING,UI_ACTION_CALC_LEVEL); 00250 #define UI_MENU_LEVEL {UI_MENU_ADDCONDBACK &ui_menu_set_p1,&ui_menu_set_p2,&ui_menu_set_p3,&ui_menu_calculate_leveling,&ui_menu_go_xpos,&ui_menu_go_xfast,&ui_menu_go_ypos,&ui_menu_go_yfast,&ui_menu_go_zpos,&ui_menu_go_zfast} 00251 UI_MENU(ui_menu_level,UI_MENU_LEVEL,10+UI_MENU_BACKCNT); 00252 #endif 00253 00254 // **** Extruder menu 00255 00256 UI_MENU_CHANGEACTION(ui_menu_ext_temp0,UI_TEXT_EXTR0_TEMP,UI_ACTION_EXTRUDER0_TEMP); 00257 UI_MENU_CHANGEACTION(ui_menu_ext_temp1,UI_TEXT_EXTR1_TEMP,UI_ACTION_EXTRUDER1_TEMP); 00258 UI_MENU_CHANGEACTION(ui_menu_bed_temp, UI_TEXT_BED_TEMP,UI_ACTION_HEATED_BED_TEMP); 00259 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel0,UI_TEXT_EXTR0_SELECT,UI_ACTION_SELECT_EXTRUDER0); 00260 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel1,UI_TEXT_EXTR1_SELECT,UI_ACTION_SELECT_EXTRUDER1); 00261 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off0,UI_TEXT_EXTR0_OFF,UI_ACTION_EXTRUDER0_OFF); 00262 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off1,UI_TEXT_EXTR1_OFF,UI_ACTION_EXTRUDER1_OFF); 00263 UI_MENU_ACTIONCOMMAND(ui_menu_ext_origin,UI_TEXT_EXTR_ORIGIN,UI_ACTION_RESET_EXTRUDER); 00264 00265 #if NUM_EXTRUDER>1 00266 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_temp1,&ui_menu_ext_off0,&ui_menu_ext_off1,&ui_menu_ext_sel0,&ui_menu_ext_sel1, 00267 #define UI_MENU_EXTCNT 6 00268 #else 00269 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_off0, 00270 #define UI_MENU_EXTCNT 2 00271 #endif 00272 #if HAVE_HEATED_BED==true 00273 #define UI_MENU_BEDCOND &ui_menu_bed_temp, 00274 #define UI_MENU_BEDCNT 1 00275 #else 00276 #define UI_MENU_BEDCOND 00277 #define UI_MENU_BEDCNT 0 00278 #endif 00279 00280 #define UI_MENU_EXTRUDER {UI_MENU_ADDCONDBACK UI_MENU_BEDCOND UI_MENU_EXTCOND &ui_menu_go_epos,&ui_menu_ext_origin} 00281 UI_MENU(ui_menu_extruder,UI_MENU_EXTRUDER,UI_MENU_BACKCNT+UI_MENU_BEDCNT+UI_MENU_EXTCNT+2); 00282 00283 // **** SD card menu 00284 00285 // **** Quick menu 00286 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_pla,UI_TEXT_PREHEAT_PLA,UI_ACTION_PREHEAT_PLA); 00287 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_abs,UI_TEXT_PREHEAT_ABS,UI_ACTION_PREHEAT_ABS); 00288 UI_MENU_ACTIONCOMMAND(ui_menu_quick_cooldown,UI_TEXT_COOLDOWN,UI_ACTION_COOLDOWN); 00289 UI_MENU_ACTIONCOMMAND(ui_menu_quick_origin,UI_TEXT_SET_TO_ORIGIN,UI_ACTION_SET_ORIGIN); 00290 UI_MENU_ACTIONCOMMAND(ui_menu_quick_stopstepper,UI_TEXT_DISABLE_STEPPER,UI_ACTION_DISABLE_STEPPER); 00291 UI_MENU_CHANGEACTION(ui_menu_quick_speedmultiply,UI_TEXT_SPEED_MULTIPLY,UI_ACTION_FEEDRATE_MULTIPLY); 00292 UI_MENU_CHANGEACTION(ui_menu_quick_flowmultiply,UI_TEXT_FLOW_MULTIPLY,UI_ACTION_FLOWRATE_MULTIPLY); 00293 #define UI_MENU_QUICK {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_quick_preheat_pla,&ui_menu_quick_preheat_abs,&ui_menu_quick_speedmultiply,&ui_menu_quick_flowmultiply,&ui_menu_quick_cooldown,&ui_menu_quick_origin,&ui_menu_quick_stopstepper} 00294 UI_MENU(ui_menu_quick,UI_MENU_QUICK,8+UI_MENU_BACKCNT); 00295 00296 // **** Fan menu 00297 00298 #if FAN_PIN>-1 00299 UI_MENU_ACTIONCOMMAND(ui_menu_fan_off,UI_TEXT_FAN_OFF,UI_ACTION_FAN_OFF); 00300 UI_MENU_ACTIONCOMMAND(ui_menu_fan_25,UI_TEXT_FAN_25,UI_ACTION_FAN_25); 00301 UI_MENU_ACTIONCOMMAND(ui_menu_fan_50,UI_TEXT_FAN_50,UI_ACTION_FAN_50); 00302 UI_MENU_ACTIONCOMMAND(ui_menu_fan_75,UI_TEXT_FAN_75,UI_ACTION_FAN_75); 00303 UI_MENU_ACTIONCOMMAND(ui_menu_fan_full,UI_TEXT_FAN_FULL,UI_ACTION_FAN_FULL); 00304 #define UI_MENU_FAN {UI_MENU_ADDCONDBACK &ui_menu_fan_off,&ui_menu_fan_25,&ui_menu_fan_50,&ui_menu_fan_75,&ui_menu_fan_full} 00305 UI_MENU(ui_menu_fan,UI_MENU_FAN,5+UI_MENU_BACKCNT); 00306 UI_MENU_SUBMENU(ui_menu_fan_sub,UI_TEXT_FANSPEED,ui_menu_fan); 00307 #define UI_MENU_FAN_COND &ui_menu_fan_sub, 00308 #define UI_MENU_FAN_CNT 1 00309 #else 00310 #define UI_MENU_FAN_COND 00311 #define UI_MENU_FAN_CNT 0 00312 #endif 00313 00314 // **** SD card menu 00315 00316 #ifdef SDSUPPORT 00317 #define UI_MENU_SD_FILESELECTOR {&ui_menu_back} 00318 UI_MENU_FILESELECT(ui_menu_sd_fileselector,UI_MENU_SD_FILESELECTOR,1); 00319 UI_MENU_ACTIONCOMMAND(ui_menu_sd_printfile,UI_TEXT_PRINT_FILE,UI_ACTION_SD_PRINT); 00320 UI_MENU_ACTIONCOMMAND(ui_menu_sd_pause,UI_TEXT_PAUSE_PRINT,UI_ACTION_SD_PAUSE); 00321 UI_MENU_ACTIONCOMMAND(ui_menu_sd_continue,UI_TEXT_CONTINUE_PRINT,UI_ACTION_SD_CONTINUE); 00322 UI_MENU_ACTIONCOMMAND(ui_menu_sd_unmount,UI_TEXT_UNMOUNT_CARD,UI_ACTION_SD_UNMOUNT); 00323 UI_MENU_ACTIONCOMMAND(ui_menu_sd_mount,UI_TEXT_MOUNT_CARD,UI_ACTION_SD_MOUNT); 00324 UI_MENU_ACTIONCOMMAND(ui_menu_sd_delete,UI_TEXT_DELETE_FILE,UI_ACTION_SD_DELETE); 00325 #define UI_MENU_SD {UI_MENU_ADDCONDBACK &ui_menu_sd_printfile,&ui_menu_sd_pause,&ui_menu_sd_continue,&ui_menu_sd_unmount,&ui_menu_sd_mount,&ui_menu_sd_delete} 00326 UI_MENU(ui_menu_sd,UI_MENU_SD,UI_MENU_BACKCNT+6); 00327 UI_MENU_SUBMENU(ui_menu_sd_sub,UI_TEXT_SD_CARD,ui_menu_sd); 00328 00329 #define UI_MENU_SD_COND &ui_menu_sd_sub, 00330 #define UI_MENU_SD_CNT 1 00331 #else 00332 #define UI_MENU_SD_COND 00333 #define UI_MENU_SD_CNT 0 00334 #endif 00335 00336 00337 // **** Debugging menu 00338 UI_MENU_ACTIONCOMMAND(ui_menu_debug_echo,UI_TEXT_DBG_ECHO,UI_ACTION_DEBUG_ECHO); 00339 UI_MENU_ACTIONCOMMAND(ui_menu_debug_info,UI_TEXT_DBG_INFO,UI_ACTION_DEBUG_INFO); 00340 UI_MENU_ACTIONCOMMAND(ui_menu_debug_error,UI_TEXT_DBG_ERROR,UI_ACTION_DEBUG_ERROR); 00341 UI_MENU_ACTIONCOMMAND(ui_menu_debug_dryrun,UI_TEXT_DBG_DRYRUN,UI_ACTION_DEBUG_DRYRUN); 00342 00343 #define UI_MENU_DEBUGGING {UI_MENU_ADDCONDBACK &ui_menu_debug_echo,&ui_menu_debug_info,&ui_menu_debug_error,&ui_menu_debug_dryrun} 00344 UI_MENU(ui_menu_debugging,UI_MENU_DEBUGGING,4+UI_MENU_BACKCNT); 00345 00346 // **** OPS configuration 00347 #if USE_OPS==1 00348 UI_MENU_ACTIONCOMMAND(ui_menu_ops_off,UI_TEXT_OPS_OFF,UI_ACTION_OPS_OFF); 00349 UI_MENU_ACTIONCOMMAND(ui_menu_ops_classic,UI_TEXT_OPS_CLASSIC,UI_ACTION_OPS_CLASSIC); 00350 UI_MENU_ACTIONCOMMAND(ui_menu_ops_fast,UI_TEXT_OPS_FAST,UI_ACTION_OPS_FAST); 00351 UI_MENU_CHANGEACTION(ui_menu_ops_retract,UI_TEXT_OPS_RETRACT,UI_ACTION_OPS_RETRACTDISTANCE); 00352 UI_MENU_CHANGEACTION(ui_menu_ops_backslash,UI_TEXT_OPS_BACKSLASH,UI_ACTION_OPS_BACKLASH); 00353 UI_MENU_CHANGEACTION(ui_menu_ops_mindist,UI_TEXT_OPS_MINDIST,UI_ACTION_OPS_MINDISTANCE); 00354 UI_MENU_CHANGEACTION(ui_menu_ops_moveafter,UI_TEXT_OPS_MOVE_AFTER,UI_ACTION_OPS_MOVE_AFTER); 00355 #define UI_MENU_OPS {UI_MENU_ADDCONDBACK &ui_menu_ops_off,&ui_menu_ops_classic,&ui_menu_ops_fast,&ui_menu_ops_retract,&ui_menu_ops_backslash,&ui_menu_ops_mindist,&ui_menu_ops_moveafter} 00356 UI_MENU(ui_menu_ops,UI_MENU_OPS,7+UI_MENU_BACKCNT); 00357 UI_MENU_SUBMENU(ui_menu_ops_sub,UI_TEXT_ANTI_OOZE,ui_menu_ops); 00358 #define UI_MENU_ADDCONDOPS &ui_menu_ops_sub, 00359 #else 00360 #define UI_MENU_ADDCONDOPS 00361 #endif 00362 00363 // **** Acceleration settings 00364 UI_MENU_CHANGEACTION(ui_menu_accel_printx,UI_TEXT_PRINT_X,UI_ACTION_PRINT_ACCEL_X); 00365 UI_MENU_CHANGEACTION(ui_menu_accel_printy,UI_TEXT_PRINT_Y,UI_ACTION_PRINT_ACCEL_Y); 00366 UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z,UI_ACTION_PRINT_ACCEL_Z); 00367 UI_MENU_CHANGEACTION(ui_menu_accel_travelx,UI_TEXT_MOVE_X,UI_ACTION_MOVE_ACCEL_X); 00368 UI_MENU_CHANGEACTION(ui_menu_accel_travely,UI_TEXT_MOVE_Y,UI_ACTION_MOVE_ACCEL_Y); 00369 UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z,UI_ACTION_MOVE_ACCEL_Z); 00370 UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK); 00371 UI_MENU_CHANGEACTION(ui_menu_accel_zjerk,UI_TEXT_ZJERK,UI_ACTION_MAX_ZJERK); 00372 #define UI_MENU_ACCEL {UI_MENU_ADDCONDBACK &ui_menu_accel_printx,&ui_menu_accel_printy,&ui_menu_accel_printz,&ui_menu_accel_travelx,&ui_menu_accel_travely,&ui_menu_accel_travelz,&ui_menu_accel_jerk,&ui_menu_accel_zjerk} 00373 UI_MENU(ui_menu_accel,UI_MENU_ACCEL,8+UI_MENU_BACKCNT); 00374 00375 // **** Feedrates 00376 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxx,UI_TEXT_FEED_MAX_X,UI_ACTION_MAX_FEEDRATE_X); 00377 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxy,UI_TEXT_FEED_MAX_Y,UI_ACTION_MAX_FEEDRATE_Y); 00378 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z,UI_ACTION_MAX_FEEDRATE_Z); 00379 UI_MENU_CHANGEACTION(ui_menu_feedrate_homex,UI_TEXT_FEED_HOME_X,UI_ACTION_HOMING_FEEDRATE_X); 00380 UI_MENU_CHANGEACTION(ui_menu_feedrate_homey,UI_TEXT_FEED_HOME_Y,UI_ACTION_HOMING_FEEDRATE_Y); 00381 UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z,UI_ACTION_HOMING_FEEDRATE_Z); 00382 #define UI_MENU_FEEDRATE {UI_MENU_ADDCONDBACK &ui_menu_feedrate_maxx,&ui_menu_feedrate_maxy,&ui_menu_feedrate_maxz,&ui_menu_feedrate_homex,&ui_menu_feedrate_homey,&ui_menu_feedrate_homez} 00383 UI_MENU(ui_menu_feedrate,UI_MENU_ACCEL,6+UI_MENU_BACKCNT); 00384 00385 // **** General configuration settings 00386 00387 UI_MENU_ACTION2C(ui_menu_stepper2,UI_ACTION_STEPPER_INACTIVE,UI_TEXT_STEPPER_INACTIVE2); 00388 UI_MENU_ACTION2C(ui_menu_maxinactive2,UI_ACTION_MAX_INACTIVE,UI_TEXT_POWER_INACTIVE2); 00389 UI_MENU_CHANGEACTION(ui_menu_general_baud,UI_TEXT_BAUDRATE,UI_ACTION_BAUDRATE); 00390 UI_MENU_ACTIONSELECTOR(ui_menu_general_stepper_inactive,UI_TEXT_STEPPER_INACTIVE,ui_menu_stepper2); 00391 UI_MENU_ACTIONSELECTOR(ui_menu_general_max_inactive,UI_TEXT_POWER_INACTIVE,ui_menu_maxinactive2); 00392 #define UI_MENU_GENERAL {UI_MENU_ADDCONDBACK &ui_menu_general_baud,&ui_menu_general_stepper_inactive,&ui_menu_general_max_inactive} 00393 UI_MENU(ui_menu_general,UI_MENU_GENERAL,3+UI_MENU_BACKCNT); 00394 00395 // **** Extruder configuration 00396 00397 UI_MENU_CHANGEACTION(ui_menu_cext_steps,UI_TEXT_EXTR_STEPS,UI_ACTION_EXTR_STEPS); 00398 UI_MENU_CHANGEACTION(ui_menu_cext_start_feedrate,UI_TEXT_EXTR_START_FEED,UI_ACTION_EXTR_START_FEEDRATE); 00399 UI_MENU_CHANGEACTION(ui_menu_cext_max_feedrate,UI_TEXT_EXTR_MAX_FEED,UI_ACTION_EXTR_MAX_FEEDRATE); 00400 UI_MENU_CHANGEACTION(ui_menu_cext_acceleration,UI_TEXT_EXTR_ACCEL,UI_ACTION_EXTR_ACCELERATION); 00401 UI_MENU_CHANGEACTION(ui_menu_cext_watch_period,UI_TEXT_EXTR_WATCH,UI_ACTION_EXTR_WATCH_PERIOD); 00402 UI_MENU_CHANGEACTION(ui_menu_ext_wait_temp,UI_TEXT_EXTR_WAIT_RETRACT_TEMP,UI_ACTION_EXTR_WAIT_RETRACT_TEMP); 00403 UI_MENU_CHANGEACTION(ui_menu_ext_wait_units,UI_TEXT_EXTR_WAIT_RETRACT_UNITS,UI_ACTION_EXTR_WAIT_RETRACT_UNITS); 00404 #define UI_MENU_ADV_CNT 0 00405 #define UI_MENU_ADVANCE 00406 #ifdef USE_ADVANCE 00407 #define UI_MENU_ADV_CNT 1 00408 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel 00409 #ifdef ENABLE_QUADRATIC_ADVANCE 00410 #define UI_MENU_ADV_CNT 2 00411 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel,&ui_menu_cext_advancek 00412 UI_MENU_CHANGEACTION(ui_menu_cext_advancek,UI_TEXT_EXTR_ADVANCE_K,UI_ACTION_ADVANCE_K); 00413 #endif 00414 UI_MENU_CHANGEACTION(ui_menu_cext_advancel,UI_TEXT_EXTR_ADVANCE_L,UI_ACTION_ADVANCE_L); 00415 #endif 00416 #ifdef TEMP_PID 00417 UI_MENU_CHANGEACTION(ui_menu_cext_manager,UI_TEXT_EXTR_MANAGER,UI_ACTION_EXTR_HEATMANAGER); 00418 UI_MENU_CHANGEACTION(ui_menu_cext_pgain,UI_TEXT_EXTR_PGAIN,UI_ACTION_PID_PGAIN); 00419 UI_MENU_CHANGEACTION(ui_menu_cext_igain,UI_TEXT_EXTR_IGAIN,UI_ACTION_PID_IGAIN); 00420 UI_MENU_CHANGEACTION(ui_menu_cext_dgain,UI_TEXT_EXTR_DGAIN,UI_ACTION_PID_DGAIN); 00421 UI_MENU_CHANGEACTION(ui_menu_cext_dmin,UI_TEXT_EXTR_DMIN,UI_ACTION_DRIVE_MIN); 00422 UI_MENU_CHANGEACTION(ui_menu_cext_dmax,UI_TEXT_EXTR_DMAX,UI_ACTION_DRIVE_MAX); 00423 UI_MENU_CHANGEACTION(ui_menu_cext_pmax,UI_TEXT_EXTR_PMAX,UI_ACTION_PID_MAX); 00424 #define UI_MENU_PIDCOND ,&ui_menu_cext_manager,&ui_menu_cext_pgain,&ui_menu_cext_igain,&ui_menu_cext_dgain,&ui_menu_cext_dmin,&ui_menu_cext_dmax,&ui_menu_cext_pmax 00425 #define UI_MENU_PIDCNT 7 00426 #else 00427 #define UI_MENU_PIDCOND 00428 #define UI_MENU_PIDCNT 0 00429 #endif 00430 #if NUM_EXTRUDER>1 00431 UI_MENU_CHANGEACTION(ui_menu_cext_xoffset,UI_TEXT_EXTR_XOFF,UI_ACTION_X_OFFSET); 00432 UI_MENU_CHANGEACTION(ui_menu_cext_yoffset,UI_TEXT_EXTR_YOFF,UI_ACTION_Y_OFFSET); 00433 #define UI_MENU_CONFEXTCOND &ui_menu_ext_sel0,&ui_menu_ext_sel1,&ui_menu_cext_xoffset,&ui_menu_cext_yoffset, 00434 #define UI_MENU_CONFEXTCNT 4 00435 #else 00436 #define UI_MENU_CONFEXTCOND 00437 #define UI_MENU_CONFEXTCNT 0 00438 #endif 00439 #define UI_MENU_CEXTR {UI_MENU_ADDCONDBACK UI_MENU_CONFEXTCOND &ui_menu_cext_steps,&ui_menu_cext_start_feedrate,&ui_menu_cext_max_feedrate,&ui_menu_cext_acceleration,&ui_menu_cext_watch_period,&ui_menu_ext_wait_units,&ui_menu_ext_wait_temp UI_MENU_ADVANCE UI_MENU_PIDCOND} 00440 UI_MENU(ui_menu_cextr,UI_MENU_CEXTR,7+UI_MENU_BACKCNT+UI_MENU_PIDCNT+UI_MENU_CONFEXTCNT+UI_MENU_ADV_CNT); 00441 00442 // **** Configuration menu 00443 UI_MENU_SUBMENU(ui_menu_conf_general,UI_TEXT_GENERAL,ui_menu_general); 00444 UI_MENU_SUBMENU(ui_menu_conf_accel,UI_TEXT_ACCELERATION,ui_menu_accel); 00445 UI_MENU_SUBMENU(ui_menu_conf_feed,UI_TEXT_FEEDRATE,ui_menu_feedrate); 00446 UI_MENU_SUBMENU(ui_menu_conf_extr,UI_TEXT_EXTRUDER,ui_menu_cextr); 00447 #if EEPROM_MODE!=0 00448 UI_MENU_ACTIONCOMMAND(ui_menu_conf_to_eeprom,UI_TEXT_STORE_TO_EEPROM,UI_ACTION_STORE_EEPROM); 00449 UI_MENU_ACTIONCOMMAND(ui_menu_conf_from_eeprom,UI_TEXT_LOAD_EEPROM,UI_ACTION_LOAD_EEPROM); 00450 #define UI_MENU_EEPROM_COND ,&ui_menu_conf_to_eeprom,&ui_menu_conf_from_eeprom 00451 #define UI_MENU_EEPROM_CNT 2 00452 UI_MENU_ACTION2C(ui_menu_eeprom_saved,UI_ACTION_DUMMY,UI_TEXT_EEPROM_STORED); 00453 UI_MENU_ACTION2C(ui_menu_eeprom_loaded,UI_ACTION_DUMMY,UI_TEXT_EEPROM_LOADED); 00454 #else 00455 #define UI_MENU_EEPROM_COND 00456 #define UI_MENU_EEPROM_CNT 0 00457 #endif 00458 #ifdef SOFTWARE_LEVELING 00459 #define UI_MENU_SL_COND ,&ui_menu_conf_level 00460 #define UI_MENU_SL_CNT 1 00461 UI_MENU_SUBMENU(ui_menu_conf_level, UI_TEXT_LEVEL, ui_menu_level); 00462 #else 00463 #define UI_MENU_SL_COND 00464 #define UI_MENU_SL_CNT 0 00465 #endif 00466 #ifdef STEP_COUNTER 00467 #define UI_MENU_DELTA_COND ,&ui_menu_conf_delta 00468 #define UI_MENU_DELTA_CNT 1 00469 UI_MENU_SUBMENU(ui_menu_conf_delta, UI_TEXT_DELTA, ui_menu_delta); 00470 #else 00471 #define UI_MENU_DELTA_COND 00472 #define UI_MENU_DELTA_CNT 0 00473 #endif 00474 #define UI_MENU_CONFIGURATION {UI_MENU_ADDCONDBACK &ui_menu_conf_general,UI_MENU_ADDCONDOPS &ui_menu_conf_accel,&ui_menu_conf_feed,&ui_menu_conf_extr UI_MENU_EEPROM_COND UI_MENU_DELTA_COND UI_MENU_SL_COND} 00475 UI_MENU(ui_menu_configuration,UI_MENU_CONFIGURATION,UI_MENU_BACKCNT+USE_OPS+UI_MENU_EEPROM_CNT+UI_MENU_DELTA_CNT+UI_MENU_SL_CNT+4); 00476 // Main menu 00477 UI_MENU_SUBMENU(ui_menu_main1,UI_TEXT_QUICK_SETTINGS,ui_menu_quick); 00478 UI_MENU_SUBMENU(ui_menu_main2, UI_TEXT_POSITION,ui_menu_positions); 00479 UI_MENU_SUBMENU(ui_menu_main3,UI_TEXT_EXTRUDER,ui_menu_extruder); 00480 UI_MENU_SUBMENU(ui_menu_main4,UI_TEXT_DEBUGGING,ui_menu_debugging); 00481 UI_MENU_SUBMENU(ui_menu_main5,UI_TEXT_CONFIGURATION,ui_menu_configuration); 00482 #define UI_MENU_MAIN {UI_MENU_ADDCONDBACK &ui_menu_main1,&ui_menu_main2,&ui_menu_main3,UI_MENU_FAN_COND UI_MENU_SD_COND &ui_menu_main4,&ui_menu_main5} 00483 UI_MENU(ui_menu_main,UI_MENU_MAIN,5+UI_MENU_BACKCNT+UI_MENU_SD_CNT+UI_MENU_FAN_CNT); 00484 00485 /* Define menus accessible by action commands 00486 00487 You can create up to 10 user menus which are accessible by the action commands UI_ACTION_SHOW_USERMENU1 until UI_ACTION_SHOW_USERMENU10 00488 You this the same way as with the menus above or you use one of the above menus. Then add a define like 00489 00490 #define UI_USERMENU1 ui_menu_conf_feed 00491 00492 which assigns the menu stored in ui_menu_conf_feed to the action UI_ACTION_SHOW_USERMENU1. Make sure only to change the numbers and not the name of the define. 00493 00494 When do you need this? You might want a fast button to change the temperature. In the default menu you have no menu 00495 to change the temperature and view it the same time. So you need to make an action menu for this like: 00496 UI_MENU_ACTION4C(ui_menu_extrtemp,UI_ACTION_EXTRUDER0_TEMP,"Temp. 0 :%E0\002C","","",""); 00497 Then you assign this menu to a usermenu: 00498 #define UI_USERMENU2 ui_menu_extrtemp 00499 00500 Now you can assign the action UI_ACTION_SHOW_USERMENU2+UI_ACTION_TOPMENU to a key and that will now show the temperture screen and allows 00501 the change of temperature with the next/previous buttons. 00502 00503 */ 00504 00505 #endif // __UI_MENU_H