![]() |
Repetier-Firmware
0.91
|
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 %Fs : Fan speed 00085 %PN : Printer name 00086 %Sx : Steps per mm x direction 00087 %Sy : Steps per mm y direction 00088 %Sz : Steps per mm z direction 00089 %Se : Steps per mm current extruder 00090 %Ut : Shows printing time 00091 %Uf : Shows total filament usage 00092 %is : Stepper inactive time in seconds 00093 %ip : Max. inactive time in seconds 00094 %X0..9 : Extruder selected marker 00095 %Xi : PID I gain 00096 %Xp : PID P gain 00097 %Xd : PID D gain 00098 %Xm : PID drive min 00099 %XM : PID drive max 00100 %XD : PID max 00101 %Xw : Extruder watch period in seconds 00102 %Xh : Extruder heat manager (BangBang/PID) 00103 %Xa : Advance K value 00104 %Xl : Advance L value 00105 %Xx : x offset in steps 00106 %Xy : y offset in steps 00107 %Xf : Extruder max. start feedrate 00108 %XF : Extruder max. feedrate 00109 %XA : Extruder max. acceleration 00110 */ 00111 00112 00113 // Define precision for temperatures. With small displays only integer values fit. 00114 #ifndef UI_TEMP_PRECISION 00115 #if UI_COLS>16 00116 #define UI_TEMP_PRECISION 1 00117 #else 00118 #define UI_TEMP_PRECISION 0 00119 #endif 00120 #endif 00121 00122 /* ============= PAGES DEFINITION ============= 00123 00124 If you are not iside a menu, the firmware displays pages with information. 00125 Especially if you have only a small display it is convenient to have 00126 more then one information page. 00127 */ 00128 00129 /* Define your pages using dynamic strings. To define a page use 00130 UI_PAGE4(name,row1,row2,row3,row4); 00131 for 4 row displays and 00132 UI_PAGE2(name,row1,row2); 00133 for 2 row displays. You can add additional pages or change the default pages like you want. 00134 */ 00135 00136 #if UI_ROWS>=6 && UI_DISPLAY_TYPE==5 00137 00138 //graphic main status 00139 00140 UI_PAGE6(ui_page1,"\xa %e0/%E0\xb0 X:%x0", 00141 #if NUM_EXTRUDER>1 00142 "\xa %e1/%E1\xb0 Y:%x1", 00143 #else 00144 "\xa -----/---\xb0 Y:%x1", 00145 #endif 00146 #if HAVE_HEATED_BED==true 00147 "\xe %eb/%Eb\xb0 Z:%x2", 00148 #else 00149 "\xb -----/---\xb0 Z:%x2", 00150 #endif 00151 "Mul:%om", "Buf:%oB", "%os"); 00152 00153 #if EEPROM_MODE!=0 00154 UI_PAGE4(ui_page2,UI_TEXT_PRINT_TIME,"%Ut",UI_TEXT_PRINT_FILAMENT,"%Uf m"); 00155 #define UI_PRINTTIME_PAGES ,&ui_page2 00156 #define UI_PRINTTIME_COUNT 1 00157 #else 00158 #define UI_PRINTTIME_PAGES 00159 #define UI_PRINTTIME_COUNT 0 00160 #endif 00161 /* 00162 Merge pages together. Use the following pattern: 00163 #define UI_PAGES {&name1,&name2,&name3} 00164 */ 00165 #define UI_PAGES {&ui_page1 UI_PRINTTIME_PAGES} 00166 // How many pages do you want to have. Minimum is 1. 00167 #define UI_NUM_PAGES 1+UI_PRINTTIME_COUNT 00168 00169 #elif UI_ROWS>=4 00170 #if HAVE_HEATED_BED==true 00171 UI_PAGE4(ui_page1,"\005%ec/%Ec\002B%eB/%Eb\002","Z:%x2","Mul:%om Buf:%oB","%os"); 00172 //UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED,UI_TEXT_PAGE_BUFFER,"%os"); 00173 #else 00174 UI_PAGE4(ui_page1,UI_TEXT_PAGE_EXTRUDER,"Z:%x2 mm",UI_TEXT_PAGE_BUFFER,"%os"); 00175 #endif 00176 UI_PAGE4(ui_page2,"X:%x0 mm","Y:%x1 mm","Z:%x2 mm","%os"); 00177 //UI_PAGE4(ui_page2,"dX:%y0 mm %sX","dY:%y1 mm %sY","dZ:%y2 mm %sZ","%os"); 00178 UI_PAGE4(ui_page3,UI_TEXT_PAGE_EXTRUDER1, 00179 #if NUM_EXTRUDER>1 00180 UI_TEXT_PAGE_EXTRUDER2 00181 #else 00182 "" 00183 #endif 00184 #if HAVE_HEATED_BED==true 00185 ,UI_TEXT_PAGE_BED 00186 #else 00187 ,"" 00188 #endif 00189 ,"%os"); 00190 #if EEPROM_MODE!=0 00191 UI_PAGE4(ui_page4,UI_TEXT_PRINT_TIME,"%Ut",UI_TEXT_PRINT_FILAMENT,"%Uf m"); 00192 #define UI_PRINTTIME_PAGES ,&ui_page4 00193 #define UI_PRINTTIME_COUNT 1 00194 #else 00195 #define UI_PRINTTIME_PAGES 00196 #define UI_PRINTTIME_COUNT 0 00197 #endif 00198 /* 00199 Merge pages together. Use the following pattern: 00200 #define UI_PAGES {&name1,&name2,&name3} 00201 */ 00202 #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3 UI_PRINTTIME_PAGES} 00203 // How many pages do you want to have. Minimum is 1. 00204 #define UI_NUM_PAGES 3+UI_PRINTTIME_COUNT 00205 #else 00206 #if HAVE_HEATED_BED==true 00207 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,UI_TEXT_PAGE_BED); 00208 #else 00209 UI_PAGE2(ui_page1,UI_TEXT_PAGE_EXTRUDER,"%os"); 00210 #endif 00211 UI_PAGE2(ui_page2,"X:%x0 Y:%x1","%os"); 00212 UI_PAGE2(ui_page3,"Z:%x2 mm","%os"); 00213 /* 00214 Merge pages together. Use the following pattern: 00215 #define UI_PAGES {&name1,&name2,&name3} 00216 */ 00217 #define UI_PAGES {&ui_page1,&ui_page2,&ui_page3} 00218 // How many pages do you want to have. Minimum is 1. 00219 #define UI_NUM_PAGES 3 00220 #endif 00221 /* ============ MENU definition ================ 00222 00223 The menu works the same as pages. In addion you need to define what the lines do 00224 or where to jump to. For that reason, the menu structure needs to be entered in 00225 reverse order. Starting from the leaves, the menu structure is defined. 00226 */ 00227 00228 /* 00229 At first define all actions available in the menu. The actions define, what the 00230 next/previous button will do. All menu actions work the same: 00231 next/previous changes the value 00232 ok sets the value if not already done and goes back to previous menu. 00233 */ 00234 00235 // Error menu 00236 00237 UI_MENU_ACTION2(ui_menu_error,UI_ACTION_DUMMY,UI_TEXT_ERROR,"%oe"); 00238 00239 // **** Positions submenus 00240 00241 #if UI_ROWS>=4 00242 UI_MENU_ACTION4C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION4); 00243 UI_MENU_ACTION4C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION4); 00244 UI_MENU_ACTION4C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION4); 00245 UI_MENU_ACTION4C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST4); 00246 UI_MENU_ACTION4C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST4); 00247 UI_MENU_ACTION4C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST4); 00248 #else 00249 UI_MENU_ACTION2C(ui_menu_xpos,UI_ACTION_XPOSITION,UI_TEXT_ACTION_XPOSITION2); 00250 UI_MENU_ACTION2C(ui_menu_ypos,UI_ACTION_YPOSITION,UI_TEXT_ACTION_YPOSITION2); 00251 UI_MENU_ACTION2C(ui_menu_zpos,UI_ACTION_ZPOSITION,UI_TEXT_ACTION_ZPOSITION2); 00252 UI_MENU_ACTION2C(ui_menu_xpos_fast,UI_ACTION_XPOSITION_FAST,UI_TEXT_ACTION_XPOSITION_FAST2); 00253 UI_MENU_ACTION2C(ui_menu_ypos_fast,UI_ACTION_YPOSITION_FAST,UI_TEXT_ACTION_YPOSITION_FAST2); 00254 UI_MENU_ACTION2C(ui_menu_zpos_fast,UI_ACTION_ZPOSITION_FAST,UI_TEXT_ACTION_ZPOSITION_FAST2); 00255 #endif 00256 UI_MENU_ACTION2C(ui_menu_epos,UI_ACTION_EPOSITION,UI_TEXT_ACTION_EPOSITION_FAST2); 00257 00258 /* 00259 Next step is to define submenus leading to the action. 00260 */ 00261 00262 // **** Positionening menu 00263 UI_MENU_ACTIONCOMMAND(ui_menu_back,UI_TEXT_BACK,UI_ACTION_BACK); 00264 #if UI_HAS_BACK_KEY==0 00265 #define UI_MENU_ADDCONDBACK &ui_menu_back, 00266 #define UI_MENU_BACKCNT 1 00267 #else 00268 #define UI_MENU_ADDCONDBACK 00269 #define UI_MENU_BACKCNT 0 00270 #endif 00271 UI_MENU_ACTIONCOMMAND(ui_menu_home_all,UI_TEXT_HOME_ALL,UI_ACTION_HOME_ALL); 00272 UI_MENU_ACTIONCOMMAND(ui_menu_home_x,UI_TEXT_HOME_X,UI_ACTION_HOME_X); 00273 UI_MENU_ACTIONCOMMAND(ui_menu_home_y,UI_TEXT_HOME_Y,UI_ACTION_HOME_Y); 00274 UI_MENU_ACTIONCOMMAND(ui_menu_home_z,UI_TEXT_HOME_Z,UI_ACTION_HOME_Z); 00275 UI_MENU_ACTIONSELECTOR(ui_menu_go_xpos,UI_TEXT_X_POSITION,ui_menu_xpos); 00276 UI_MENU_ACTIONSELECTOR(ui_menu_go_ypos,UI_TEXT_Y_POSITION,ui_menu_ypos); 00277 UI_MENU_ACTIONSELECTOR(ui_menu_go_zpos,UI_TEXT_Z_POSITION,ui_menu_zpos); 00278 UI_MENU_ACTIONSELECTOR(ui_menu_go_epos,UI_TEXT_E_POSITION,ui_menu_epos); 00279 #if !UI_SPEEDDEPENDENT_POSITIONING 00280 UI_MENU_ACTIONSELECTOR(ui_menu_go_xfast,UI_TEXT_X_POS_FAST,ui_menu_xpos_fast); 00281 UI_MENU_ACTIONSELECTOR(ui_menu_go_yfast,UI_TEXT_Y_POS_FAST,ui_menu_ypos_fast); 00282 UI_MENU_ACTIONSELECTOR(ui_menu_go_zfast,UI_TEXT_Z_POS_FAST,ui_menu_zpos_fast); 00283 #define UI_SPEED 2 00284 #define UI_SPEED_X ,&ui_menu_go_xfast,&ui_menu_go_xpos 00285 #define UI_SPEED_Y ,&ui_menu_go_yfast,&ui_menu_go_ypos 00286 #define UI_SPEED_Z ,&ui_menu_go_zfast,&ui_menu_go_zpos 00287 #else 00288 #define UI_SPEED 1 00289 #define UI_SPEED_X ,&ui_menu_go_xpos 00290 #define UI_SPEED_Y ,&ui_menu_go_ypos 00291 #define UI_SPEED_Z ,&ui_menu_go_zpos 00292 #endif 00293 00294 #if DRIVE_SYSTEM!=3 //Positioning menu for non-delta 00295 #define UI_MENU_POSITIONS {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_home_x,&ui_menu_home_y,&ui_menu_home_z UI_SPEED_X UI_SPEED_Y UI_SPEED_Z ,&ui_menu_go_epos} 00296 UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,5+3*UI_SPEED+UI_MENU_BACKCNT); 00297 #else //Positioning menu for delta (removes individual x,y,z homing) 00298 #define UI_MENU_POSITIONS {UI_MENU_ADDCONDBACK &ui_menu_home_all UI_SPEED_X UI_SPEED_Y UI_SPEED_Z ,&ui_menu_go_epos} 00299 UI_MENU(ui_menu_positions,UI_MENU_POSITIONS,2+3*UI_SPEED+UI_MENU_BACKCNT); 00300 #endif 00301 00302 // **** Delta calibration menu 00303 #ifdef Z_HOME_DIR < 0 00304 UI_MENU_ACTIONCOMMAND(ui_menu_set_measured_origin,UI_TEXT_SET_MEASURED_ORIGIN,UI_ACTION_SET_MEASURED_ORIGIN); 00305 #define UI_MENU_DELTA {UI_MENU_ADDCONDBACK &ui_menu_home_all UI_SPEED_Z,&ui_menu_set_measured_origin} 00306 UI_MENU(ui_menu_delta,UI_MENU_DELTA,2+UI_SPEED+UI_MENU_BACKCNT); 00307 #endif 00308 00309 // **** Bed leveling menu 00310 #ifdef SOFTWARE_LEVELING 00311 UI_MENU_ACTIONCOMMAND(ui_menu_set_p1,UI_TEXT_SET_P1,UI_ACTION_SET_P1); 00312 UI_MENU_ACTIONCOMMAND(ui_menu_set_p2,UI_TEXT_SET_P2,UI_ACTION_SET_P2); 00313 UI_MENU_ACTIONCOMMAND(ui_menu_set_p3,UI_TEXT_SET_P3,UI_ACTION_SET_P3); 00314 UI_MENU_ACTIONCOMMAND(ui_menu_calculate_leveling,UI_TEXT_CALCULATE_LEVELING,UI_ACTION_CALC_LEVEL); 00315 #define UI_MENU_LEVEL {UI_MENU_ADDCONDBACK &ui_menu_set_p1,&ui_menu_set_p2,&ui_menu_set_p3,&ui_menu_calculate_leveling UI_SPEED_X UI_SPEED_Y UI_SPEED_Z} 00316 UI_MENU(ui_menu_level,UI_MENU_LEVEL,4+3*UI_SPEED+UI_MENU_BACKCNT); 00317 #endif 00318 00319 // **** Extruder menu 00320 00321 UI_MENU_CHANGEACTION(ui_menu_ext_temp0,UI_TEXT_EXTR0_TEMP,UI_ACTION_EXTRUDER0_TEMP); 00322 UI_MENU_CHANGEACTION(ui_menu_ext_temp1,UI_TEXT_EXTR1_TEMP,UI_ACTION_EXTRUDER1_TEMP); 00323 UI_MENU_CHANGEACTION(ui_menu_bed_temp, UI_TEXT_BED_TEMP,UI_ACTION_HEATED_BED_TEMP); 00324 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel0,UI_TEXT_EXTR0_SELECT,UI_ACTION_SELECT_EXTRUDER0); 00325 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel1,UI_TEXT_EXTR1_SELECT,UI_ACTION_SELECT_EXTRUDER1); 00326 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off0,UI_TEXT_EXTR0_OFF,UI_ACTION_EXTRUDER0_OFF); 00327 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off1,UI_TEXT_EXTR1_OFF,UI_ACTION_EXTRUDER1_OFF); 00328 UI_MENU_ACTIONCOMMAND(ui_menu_ext_origin,UI_TEXT_EXTR_ORIGIN,UI_ACTION_RESET_EXTRUDER); 00329 00330 #if NUM_EXTRUDER==2 00331 #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, 00332 #define UI_MENU_EXTCNT 6 00333 #elif NUM_EXTRUDER>2 00334 UI_MENU_CHANGEACTION(ui_menu_ext_temp2,UI_TEXT_EXTR2_TEMP,UI_ACTION_EXTRUDER2_TEMP); 00335 UI_MENU_ACTIONCOMMAND(ui_menu_ext_sel2,UI_TEXT_EXTR2_SELECT,UI_ACTION_SELECT_EXTRUDER2); 00336 UI_MENU_ACTIONCOMMAND(ui_menu_ext_off2,UI_TEXT_EXTR2_OFF,UI_ACTION_EXTRUDER2_OFF); 00337 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_temp1,&ui_menu_ext_temp2,&ui_menu_ext_off0,&ui_menu_ext_off1,&ui_menu_ext_off2,&ui_menu_ext_sel0,&ui_menu_ext_sel1,&ui_menu_ext_sel1, 00338 #define UI_MENU_EXTCNT 9 00339 #else 00340 #define UI_MENU_EXTCOND &ui_menu_ext_temp0,&ui_menu_ext_off0, 00341 #define UI_MENU_EXTCNT 2 00342 #endif 00343 #if HAVE_HEATED_BED==true 00344 #define UI_MENU_BEDCOND &ui_menu_bed_temp, 00345 #define UI_MENU_BEDCNT 1 00346 #else 00347 #define UI_MENU_BEDCOND 00348 #define UI_MENU_BEDCNT 0 00349 #endif 00350 00351 #define UI_MENU_EXTRUDER {UI_MENU_ADDCONDBACK UI_MENU_BEDCOND UI_MENU_EXTCOND &ui_menu_go_epos,&ui_menu_ext_origin} 00352 UI_MENU(ui_menu_extruder,UI_MENU_EXTRUDER,UI_MENU_BACKCNT+UI_MENU_BEDCNT+UI_MENU_EXTCNT+2); 00353 00354 // **** SD card menu 00355 00356 // **** Quick menu 00357 #if PS_ON_PIN>=0 00358 UI_MENU_ACTIONCOMMAND(ui_menu_quick_power,UI_TEXT_POWER,UI_ACTION_POWER); 00359 #define MENU_PSON_COUNT 1 00360 #define MENU_PSON_ENTRY ,&ui_menu_quick_power 00361 #else 00362 #define MENU_PSON_COUNT 0 00363 #define MENU_PSON_ENTRY 00364 #endif 00365 #if CASE_LIGHTS_PIN > 0 00366 UI_MENU_ACTIONCOMMAND(ui_menu_toggle_light,UI_TEXT_LIGHTS_ONOFF,UI_ACTION_LIGHTS_ONOFF); 00367 #define UI_TOOGLE_LIGHT_ENTRY ,&ui_menu_toggle_light 00368 #define UI_TOGGLE_LIGHT_COUNT 1 00369 #else 00370 #define UI_TOOGLE_LIGHT_ENTRY 00371 #define UI_TOGGLE_LIGHT_COUNT 0 00372 #endif 00373 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_pla,UI_TEXT_PREHEAT_PLA,UI_ACTION_PREHEAT_PLA); 00374 UI_MENU_ACTIONCOMMAND(ui_menu_quick_preheat_abs,UI_TEXT_PREHEAT_ABS,UI_ACTION_PREHEAT_ABS); 00375 UI_MENU_ACTIONCOMMAND(ui_menu_quick_cooldown,UI_TEXT_COOLDOWN,UI_ACTION_COOLDOWN); 00376 UI_MENU_ACTIONCOMMAND(ui_menu_quick_origin,UI_TEXT_SET_TO_ORIGIN,UI_ACTION_SET_ORIGIN); 00377 UI_MENU_ACTIONCOMMAND(ui_menu_quick_stopstepper,UI_TEXT_DISABLE_STEPPER,UI_ACTION_DISABLE_STEPPER); 00378 UI_MENU_CHANGEACTION(ui_menu_quick_speedmultiply,UI_TEXT_SPEED_MULTIPLY,UI_ACTION_FEEDRATE_MULTIPLY); 00379 UI_MENU_CHANGEACTION(ui_menu_quick_flowmultiply,UI_TEXT_FLOW_MULTIPLY,UI_ACTION_FLOWRATE_MULTIPLY); 00380 #ifdef DEBUG_PRINT 00381 UI_MENU_ACTIONCOMMAND(ui_menu_quick_debug,"Write Debug",UI_ACTION_WRITE_DEBUG); 00382 #define DEBUG_PRINT_COUNT 1 00383 #define DEBUG_PRINT_EXTRA ,&ui_menu_quick_debug 00384 #else 00385 #define DEBUG_PRINT_COUNT 0 00386 #define DEBUG_PRINT_EXTRA 00387 #endif 00388 #define UI_MENU_QUICK {UI_MENU_ADDCONDBACK &ui_menu_home_all,&ui_menu_quick_speedmultiply,&ui_menu_quick_flowmultiply UI_TOOGLE_LIGHT_ENTRY ,&ui_menu_quick_preheat_pla,&ui_menu_quick_preheat_abs,&ui_menu_quick_cooldown,&ui_menu_quick_origin,&ui_menu_quick_stopstepper MENU_PSON_ENTRY DEBUG_PRINT_EXTRA} 00389 UI_MENU(ui_menu_quick,UI_MENU_QUICK,8+UI_MENU_BACKCNT+MENU_PSON_COUNT+DEBUG_PRINT_COUNT+UI_TOGGLE_LIGHT_COUNT); 00390 00391 // **** Fan menu 00392 00393 #if FAN_PIN>-1 00394 UI_MENU_CHANGEACTION(ui_menu_fan_fanspeed, UI_TEXT_ACTION_FANSPEED,UI_ACTION_FANSPEED); 00395 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_fan_off,UI_TEXT_FAN_OFF,UI_ACTION_FAN_OFF,MENU_MODE_FAN_RUNNING,0); 00396 UI_MENU_ACTIONCOMMAND(ui_menu_fan_25,UI_TEXT_FAN_25,UI_ACTION_FAN_25); 00397 UI_MENU_ACTIONCOMMAND(ui_menu_fan_50,UI_TEXT_FAN_50,UI_ACTION_FAN_50); 00398 UI_MENU_ACTIONCOMMAND(ui_menu_fan_75,UI_TEXT_FAN_75,UI_ACTION_FAN_75); 00399 UI_MENU_ACTIONCOMMAND(ui_menu_fan_full,UI_TEXT_FAN_FULL,UI_ACTION_FAN_FULL); 00400 #define UI_MENU_FAN {UI_MENU_ADDCONDBACK &ui_menu_fan_fanspeed,&ui_menu_fan_off,&ui_menu_fan_25,&ui_menu_fan_50,&ui_menu_fan_75,&ui_menu_fan_full} 00401 UI_MENU(ui_menu_fan,UI_MENU_FAN,6+UI_MENU_BACKCNT); 00402 UI_MENU_SUBMENU(ui_menu_fan_sub,UI_TEXT_FANSPEED,ui_menu_fan); 00403 #define UI_MENU_FAN_COND &ui_menu_fan_sub, 00404 #define UI_MENU_FAN_CNT 1 00405 #else 00406 #define UI_MENU_FAN_COND 00407 #define UI_MENU_FAN_CNT 0 00408 #endif 00409 00410 // **** SD card menu 00411 00412 #ifdef SDSUPPORT 00413 #define UI_MENU_SD_FILESELECTOR {&ui_menu_back} 00414 UI_MENU_FILESELECT(ui_menu_sd_fileselector,UI_MENU_SD_FILESELECTOR,1); 00415 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_printfile,UI_TEXT_PRINT_FILE,UI_ACTION_SD_PRINT,MENU_MODE_SD_MOUNTED,MENU_MODE_SD_PRINTING); 00416 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_pause,UI_TEXT_PAUSE_PRINT,UI_ACTION_SD_PAUSE,MENU_MODE_SD_PRINTING,MENU_MODE_SD_PAUSED); 00417 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_continue,UI_TEXT_CONTINUE_PRINT,UI_ACTION_SD_CONTINUE,MENU_MODE_SD_PAUSED,0); 00418 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_stop,UI_TEXT_STOP_PRINT,UI_ACTION_SD_STOP,MENU_MODE_SD_PRINTING,0); 00419 #if defined(SDCARDDETECT) && SDCARDDETECT>-1 00420 #define UI_MOUNT_CNT 0 00421 #define UI_MOUNT_CMD 00422 #else 00423 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_unmount,UI_TEXT_UNMOUNT_CARD,UI_ACTION_SD_UNMOUNT,MENU_MODE_SD_MOUNTED,0); 00424 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_mount,UI_TEXT_MOUNT_CARD,UI_ACTION_SD_MOUNT,0,MENU_MODE_SD_MOUNTED); 00425 #define UI_MOUNT_CNT 2 00426 #define UI_MOUNT_CMD ,&ui_menu_sd_unmount,&ui_menu_sd_mount 00427 #endif 00428 UI_MENU_ACTIONCOMMAND_FILTER(ui_menu_sd_delete,UI_TEXT_DELETE_FILE,UI_ACTION_SD_DELETE,MENU_MODE_SD_MOUNTED,MENU_MODE_SD_PRINTING); 00429 #define UI_MENU_SD {UI_MENU_ADDCONDBACK &ui_menu_sd_printfile,&ui_menu_sd_pause,&ui_menu_sd_stop,&ui_menu_sd_continue UI_MOUNT_CMD ,&ui_menu_sd_delete} 00430 UI_MENU(ui_menu_sd,UI_MENU_SD,UI_MENU_BACKCNT+5+UI_MOUNT_CNT); 00431 UI_MENU_SUBMENU(ui_menu_sd_sub,UI_TEXT_SD_CARD,ui_menu_sd); 00432 00433 #define UI_MENU_SD_COND &ui_menu_sd_sub, 00434 #define UI_MENU_SD_CNT 1 00435 #else 00436 #define UI_MENU_SD_COND 00437 #define UI_MENU_SD_CNT 0 00438 #endif 00439 00440 00441 // **** Debugging menu 00442 UI_MENU_ACTIONCOMMAND(ui_menu_debug_echo,UI_TEXT_DBG_ECHO,UI_ACTION_DEBUG_ECHO); 00443 UI_MENU_ACTIONCOMMAND(ui_menu_debug_info,UI_TEXT_DBG_INFO,UI_ACTION_DEBUG_INFO); 00444 UI_MENU_ACTIONCOMMAND(ui_menu_debug_error,UI_TEXT_DBG_ERROR,UI_ACTION_DEBUG_ERROR); 00445 UI_MENU_ACTIONCOMMAND(ui_menu_debug_dryrun,UI_TEXT_DBG_DRYRUN,UI_ACTION_DEBUG_DRYRUN); 00446 00447 #define UI_MENU_DEBUGGING {UI_MENU_ADDCONDBACK &ui_menu_debug_echo,&ui_menu_debug_info,&ui_menu_debug_error,&ui_menu_debug_dryrun} 00448 UI_MENU(ui_menu_debugging,UI_MENU_DEBUGGING,4+UI_MENU_BACKCNT); 00449 00450 // **** Acceleration settings 00451 #if DRIVE_SYSTEM!=3 00452 UI_MENU_CHANGEACTION(ui_menu_accel_printx,UI_TEXT_PRINT_X,UI_ACTION_PRINT_ACCEL_X); 00453 UI_MENU_CHANGEACTION(ui_menu_accel_printy,UI_TEXT_PRINT_Y,UI_ACTION_PRINT_ACCEL_Y); 00454 UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z,UI_ACTION_PRINT_ACCEL_Z); 00455 UI_MENU_CHANGEACTION(ui_menu_accel_travelx,UI_TEXT_MOVE_X,UI_ACTION_MOVE_ACCEL_X); 00456 UI_MENU_CHANGEACTION(ui_menu_accel_travely,UI_TEXT_MOVE_Y,UI_ACTION_MOVE_ACCEL_Y); 00457 UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z,UI_ACTION_MOVE_ACCEL_Z); 00458 UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK); 00459 UI_MENU_CHANGEACTION(ui_menu_accel_zjerk,UI_TEXT_ZJERK,UI_ACTION_MAX_ZJERK); 00460 #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} 00461 UI_MENU(ui_menu_accel,UI_MENU_ACCEL,8+UI_MENU_BACKCNT); 00462 00463 // **** Feedrates 00464 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxx,UI_TEXT_FEED_MAX_X,UI_ACTION_MAX_FEEDRATE_X); 00465 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxy,UI_TEXT_FEED_MAX_Y,UI_ACTION_MAX_FEEDRATE_Y); 00466 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z,UI_ACTION_MAX_FEEDRATE_Z); 00467 UI_MENU_CHANGEACTION(ui_menu_feedrate_homex,UI_TEXT_FEED_HOME_X,UI_ACTION_HOMING_FEEDRATE_X); 00468 UI_MENU_CHANGEACTION(ui_menu_feedrate_homey,UI_TEXT_FEED_HOME_Y,UI_ACTION_HOMING_FEEDRATE_Y); 00469 UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z,UI_ACTION_HOMING_FEEDRATE_Z); 00470 #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} 00471 UI_MENU(ui_menu_feedrate,UI_MENU_FEEDRATE,6+UI_MENU_BACKCNT); 00472 #else 00473 UI_MENU_CHANGEACTION(ui_menu_accel_printz,UI_TEXT_PRINT_Z_DELTA,UI_ACTION_PRINT_ACCEL_Z); 00474 UI_MENU_CHANGEACTION(ui_menu_accel_travelz,UI_TEXT_MOVE_Z_DELTA,UI_ACTION_MOVE_ACCEL_Z); 00475 UI_MENU_CHANGEACTION(ui_menu_accel_jerk,UI_TEXT_JERK,UI_ACTION_MAX_JERK); 00476 #define UI_MENU_ACCEL {UI_MENU_ADDCONDBACK &ui_menu_accel_printz,&ui_menu_accel_travelz,&ui_menu_accel_jerk} 00477 UI_MENU(ui_menu_accel,UI_MENU_ACCEL,3+UI_MENU_BACKCNT); 00478 00479 // **** Feedrates 00480 UI_MENU_CHANGEACTION(ui_menu_feedrate_maxz,UI_TEXT_FEED_MAX_Z_DELTA,UI_ACTION_MAX_FEEDRATE_Z); 00481 UI_MENU_CHANGEACTION(ui_menu_feedrate_homez,UI_TEXT_FEED_HOME_Z_DELTA,UI_ACTION_HOMING_FEEDRATE_Z); 00482 #define UI_MENU_FEEDRATE {UI_MENU_ADDCONDBACK &ui_menu_feedrate_maxz,&ui_menu_feedrate_homez} 00483 UI_MENU(ui_menu_feedrate,UI_MENU_FEEDRATE,2+UI_MENU_BACKCNT); 00484 #endif 00485 00486 // **** General configuration settings 00487 00488 UI_MENU_ACTION2C(ui_menu_stepper2,UI_ACTION_STEPPER_INACTIVE,UI_TEXT_STEPPER_INACTIVE2); 00489 UI_MENU_ACTION2C(ui_menu_maxinactive2,UI_ACTION_MAX_INACTIVE,UI_TEXT_POWER_INACTIVE2); 00490 UI_MENU_CHANGEACTION(ui_menu_general_baud,UI_TEXT_BAUDRATE,UI_ACTION_BAUDRATE); 00491 UI_MENU_ACTIONSELECTOR(ui_menu_general_stepper_inactive,UI_TEXT_STEPPER_INACTIVE,ui_menu_stepper2); 00492 UI_MENU_ACTIONSELECTOR(ui_menu_general_max_inactive,UI_TEXT_POWER_INACTIVE,ui_menu_maxinactive2); 00493 #define UI_MENU_GENERAL {UI_MENU_ADDCONDBACK &ui_menu_general_baud,&ui_menu_general_stepper_inactive,&ui_menu_general_max_inactive} 00494 UI_MENU(ui_menu_general,UI_MENU_GENERAL,3+UI_MENU_BACKCNT); 00495 00496 // **** Extruder configuration 00497 00498 UI_MENU_CHANGEACTION(ui_menu_cext_steps,UI_TEXT_EXTR_STEPS,UI_ACTION_EXTR_STEPS); 00499 UI_MENU_CHANGEACTION(ui_menu_cext_start_feedrate,UI_TEXT_EXTR_START_FEED,UI_ACTION_EXTR_START_FEEDRATE); 00500 UI_MENU_CHANGEACTION(ui_menu_cext_max_feedrate,UI_TEXT_EXTR_MAX_FEED,UI_ACTION_EXTR_MAX_FEEDRATE); 00501 UI_MENU_CHANGEACTION(ui_menu_cext_acceleration,UI_TEXT_EXTR_ACCEL,UI_ACTION_EXTR_ACCELERATION); 00502 UI_MENU_CHANGEACTION(ui_menu_cext_watch_period,UI_TEXT_EXTR_WATCH,UI_ACTION_EXTR_WATCH_PERIOD); 00503 UI_MENU_CHANGEACTION(ui_menu_ext_wait_temp,UI_TEXT_EXTR_WAIT_RETRACT_TEMP,UI_ACTION_EXTR_WAIT_RETRACT_TEMP); 00504 UI_MENU_CHANGEACTION(ui_menu_ext_wait_units,UI_TEXT_EXTR_WAIT_RETRACT_UNITS,UI_ACTION_EXTR_WAIT_RETRACT_UNITS); 00505 #define UI_MENU_ADV_CNT 0 00506 #define UI_MENU_ADVANCE 00507 #ifdef USE_ADVANCE 00508 #define UI_MENU_ADV_CNT 1 00509 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel 00510 #ifdef ENABLE_QUADRATIC_ADVANCE 00511 #define UI_MENU_ADV_CNT 2 00512 #define UI_MENU_ADVANCE ,&ui_menu_cext_advancel,&ui_menu_cext_advancek 00513 UI_MENU_CHANGEACTION(ui_menu_cext_advancek,UI_TEXT_EXTR_ADVANCE_K,UI_ACTION_ADVANCE_K); 00514 #endif 00515 UI_MENU_CHANGEACTION(ui_menu_cext_advancel,UI_TEXT_EXTR_ADVANCE_L,UI_ACTION_ADVANCE_L); 00516 #endif 00517 #ifdef TEMP_PID 00518 UI_MENU_CHANGEACTION(ui_menu_cext_manager,UI_TEXT_EXTR_MANAGER,UI_ACTION_EXTR_HEATMANAGER); 00519 UI_MENU_CHANGEACTION(ui_menu_cext_pgain,UI_TEXT_EXTR_PGAIN,UI_ACTION_PID_PGAIN); 00520 UI_MENU_CHANGEACTION(ui_menu_cext_igain,UI_TEXT_EXTR_IGAIN,UI_ACTION_PID_IGAIN); 00521 UI_MENU_CHANGEACTION(ui_menu_cext_dgain,UI_TEXT_EXTR_DGAIN,UI_ACTION_PID_DGAIN); 00522 UI_MENU_CHANGEACTION(ui_menu_cext_dmin,UI_TEXT_EXTR_DMIN,UI_ACTION_DRIVE_MIN); 00523 UI_MENU_CHANGEACTION(ui_menu_cext_dmax,UI_TEXT_EXTR_DMAX,UI_ACTION_DRIVE_MAX); 00524 UI_MENU_CHANGEACTION(ui_menu_cext_pmax,UI_TEXT_EXTR_PMAX,UI_ACTION_PID_MAX); 00525 #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 00526 #define UI_MENU_PIDCNT 7 00527 #else 00528 #define UI_MENU_PIDCOND 00529 #define UI_MENU_PIDCNT 0 00530 #endif 00531 #if NUM_EXTRUDER>1 00532 UI_MENU_CHANGEACTION(ui_menu_cext_xoffset,UI_TEXT_EXTR_XOFF,UI_ACTION_X_OFFSET); 00533 UI_MENU_CHANGEACTION(ui_menu_cext_yoffset,UI_TEXT_EXTR_YOFF,UI_ACTION_Y_OFFSET); 00534 #define UI_MENU_CONFEXTCOND &ui_menu_ext_sel0,&ui_menu_ext_sel1,&ui_menu_cext_xoffset,&ui_menu_cext_yoffset, 00535 #define UI_MENU_CONFEXTCNT 4 00536 #else 00537 #define UI_MENU_CONFEXTCOND 00538 #define UI_MENU_CONFEXTCNT 0 00539 #endif 00540 #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} 00541 UI_MENU(ui_menu_cextr,UI_MENU_CEXTR,7+UI_MENU_BACKCNT+UI_MENU_PIDCNT+UI_MENU_CONFEXTCNT+UI_MENU_ADV_CNT); 00542 00543 // **** Configuration menu 00544 UI_MENU_SUBMENU(ui_menu_conf_general,UI_TEXT_GENERAL,ui_menu_general); 00545 UI_MENU_SUBMENU(ui_menu_conf_accel,UI_TEXT_ACCELERATION,ui_menu_accel); 00546 UI_MENU_SUBMENU(ui_menu_conf_feed,UI_TEXT_FEEDRATE,ui_menu_feedrate); 00547 UI_MENU_SUBMENU(ui_menu_conf_extr,UI_TEXT_EXTRUDER,ui_menu_cextr); 00548 #if EEPROM_MODE!=0 00549 UI_MENU_ACTIONCOMMAND(ui_menu_conf_to_eeprom,UI_TEXT_STORE_TO_EEPROM,UI_ACTION_STORE_EEPROM); 00550 UI_MENU_ACTIONCOMMAND(ui_menu_conf_from_eeprom,UI_TEXT_LOAD_EEPROM,UI_ACTION_LOAD_EEPROM); 00551 #define UI_MENU_EEPROM_COND ,&ui_menu_conf_to_eeprom,&ui_menu_conf_from_eeprom 00552 #define UI_MENU_EEPROM_CNT 2 00553 UI_MENU_ACTION2C(ui_menu_eeprom_saved,UI_ACTION_DUMMY,UI_TEXT_EEPROM_STORED); 00554 UI_MENU_ACTION2C(ui_menu_eeprom_loaded,UI_ACTION_DUMMY,UI_TEXT_EEPROM_LOADED); 00555 #else 00556 #define UI_MENU_EEPROM_COND 00557 #define UI_MENU_EEPROM_CNT 0 00558 #endif 00559 #ifdef SOFTWARE_LEVELING 00560 #define UI_MENU_SL_COND ,&ui_menu_conf_level 00561 #define UI_MENU_SL_CNT 1 00562 UI_MENU_SUBMENU(ui_menu_conf_level, UI_TEXT_LEVEL, ui_menu_level); 00563 #else 00564 #define UI_MENU_SL_COND 00565 #define UI_MENU_SL_CNT 0 00566 #endif 00567 #ifdef Z_HOME_DIR<0 00568 #define UI_MENU_DELTA_COND ,&ui_menu_conf_delta 00569 #define UI_MENU_DELTA_CNT 1 00570 UI_MENU_SUBMENU(ui_menu_conf_delta, UI_TEXT_ZCALIB, ui_menu_delta); 00571 #else 00572 #define UI_MENU_DELTA_COND 00573 #define UI_MENU_DELTA_CNT 0 00574 #endif 00575 #define UI_MENU_CONFIGURATION {UI_MENU_ADDCONDBACK &ui_menu_conf_general,&ui_menu_conf_accel,&ui_menu_conf_feed,&ui_menu_conf_extr UI_MENU_EEPROM_COND UI_MENU_DELTA_COND UI_MENU_SL_COND} 00576 UI_MENU(ui_menu_configuration,UI_MENU_CONFIGURATION,UI_MENU_BACKCNT+UI_MENU_EEPROM_CNT+UI_MENU_DELTA_CNT+UI_MENU_SL_CNT+4); 00577 // Main menu 00578 UI_MENU_SUBMENU(ui_menu_main1,UI_TEXT_QUICK_SETTINGS,ui_menu_quick); 00579 UI_MENU_SUBMENU(ui_menu_main2, UI_TEXT_POSITION,ui_menu_positions); 00580 UI_MENU_SUBMENU(ui_menu_main3,UI_TEXT_EXTRUDER,ui_menu_extruder); 00581 UI_MENU_SUBMENU(ui_menu_main4,UI_TEXT_DEBUGGING,ui_menu_debugging); 00582 UI_MENU_SUBMENU(ui_menu_main5,UI_TEXT_CONFIGURATION,ui_menu_configuration); 00583 #define UI_MENU_MAIN {UI_MENU_ADDCONDBACK &ui_menu_main1,&ui_menu_sd_printfile,&ui_menu_main2,&ui_menu_main3,UI_MENU_FAN_COND UI_MENU_SD_COND &ui_menu_main4,&ui_menu_main5} 00584 UI_MENU(ui_menu_main,UI_MENU_MAIN,6+UI_MENU_BACKCNT+UI_MENU_SD_CNT+UI_MENU_FAN_CNT); 00585 00586 /* Define menus accessible by action commands 00587 00588 You can create up to 10 user menus which are accessible by the action commands UI_ACTION_SHOW_USERMENU1 until UI_ACTION_SHOW_USERMENU10 00589 You this the same way as with the menus above or you use one of the above menus. Then add a define like 00590 00591 #define UI_USERMENU1 ui_menu_conf_feed 00592 00593 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. 00594 00595 When do you need this? You might want a fast button to change the temperature. In the default menu you have no menu 00596 to change the temperature and view it the same time. So you need to make an action menu for this like: 00597 UI_MENU_ACTION4C(ui_menu_extrtemp,UI_ACTION_EXTRUDER0_TEMP,"Temp. 0 :%E0\002C","","",""); 00598 Then you assign this menu to a usermenu: 00599 #define UI_USERMENU2 ui_menu_extrtemp 00600 00601 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 00602 the change of temperature with the next/previous buttons. 00603 00604 */ 00605 00606 #endif // __UI_MENU_H