static void lcd_menu_first_run_print_card_detect() { if (!IS_SD_INSERTED) { lcd_info_screen(lcd_menu_main); DRAW_PROGRESS_NR(21); lcd_lib_draw_string_centerP(20, PSTR("Please insert SD-card")); lcd_lib_draw_string_centerP(30, PSTR("that came with")); lcd_lib_draw_string_centerP(40, PSTR("your Ultimaker2...")); lcd_lib_update_screen(); card.release(); return; } if (!card.isOk()) { lcd_info_screen(lcd_menu_main); DRAW_PROGRESS_NR(21); lcd_lib_draw_string_centerP(30, PSTR("Reading card...")); lcd_lib_update_screen(); card.initsd(); return; } SELECT_MAIN_MENU_ITEM(0); lcd_info_screen(lcd_menu_print_select, setFirstRunDone, PSTR("LET'S PRINT")); DRAW_PROGRESS_NR(21); lcd_lib_draw_string_centerP(10, PSTR("Select a print file")); lcd_lib_draw_string_centerP(20, PSTR("on the SD-card")); lcd_lib_draw_string_centerP(30, PSTR("and press the button")); lcd_lib_draw_string_centerP(40, PSTR("to print it!")); lcd_lib_update_screen(); }
static void lcd_menu_first_run_bed_level_center_adjust() { LED_GLOW(); if (lcd_lib_encoder_pos == ENCODER_NO_SELECTION) lcd_lib_encoder_pos = 0; if (printing_state == PRINT_STATE_NORMAL && lcd_lib_encoder_pos != 0 && movesplanned() < 4) { current_position[Z_AXIS] -= float(lcd_lib_encoder_pos) * 0.05; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 60, 0); } lcd_lib_encoder_pos = 0; if (movesplanned() > 0) lcd_info_screen(NULL, NULL, PSTR("POKRACOVAT")); else lcd_info_screen(lcd_menu_first_run_bed_level_left_adjust, parkHeadForLeftAdjustment, PSTR("POKRACOVAT")); DRAW_PROGRESS_NR_IF_NOT_DONE(4); lcd_lib_draw_string_centerP(10, PSTR("Otacejte tlacitkem")); lcd_lib_draw_string_centerP(20, PSTR("dokud nebude tryska")); lcd_lib_draw_string_centerP(30, PSTR("priblizne milimetr")); lcd_lib_draw_string_centerP(40, PSTR("od tiskove podlozky.")); lcd_lib_update_screen(); }
static void lcd_menu_first_run_bed_level_paper_center() { LED_GLOW(); if (lcd_lib_encoder_pos == ENCODER_NO_SELECTION) lcd_lib_encoder_pos = 0; if (printing_state == PRINT_STATE_NORMAL && lcd_lib_encoder_pos != 0 && movesplanned() < 4) { current_position[Z_AXIS] -= float(lcd_lib_encoder_pos) * 0.05; lcd_lib_encoder_pos = 0; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 60, 0); } if (movesplanned() > 0) lcd_info_screen(NULL, NULL, PSTR("POKRACOVAT")); else lcd_info_screen(lcd_menu_first_run_bed_level_paper_left, parkHeadForLeftAdjustment, PSTR("POKRACOVAT")); DRAW_PROGRESS_NR_IF_NOT_DONE(8); lcd_lib_draw_string_centerP(10, PSTR("Zasunte papir mezi")); lcd_lib_draw_string_centerP(20, PSTR("trysku a podlozku,")); lcd_lib_draw_string_centerP(30, PSTR("otacejte dokud")); lcd_lib_draw_string_centerP(40, PSTR("papir neklade odpor")); lcd_lib_update_screen(); }
static void lcd_menu_insert_material_preheat() { setTargetHotend(material[active_extruder].temperature, active_extruder); int16_t temp = degHotend(active_extruder) - 20; int16_t target = degTargetHotend(active_extruder) - 20 - 10; if (temp < 0) temp = 0; if (temp > target && !is_command_queued()) { set_extrude_min_temp(0); for(uint8_t e=0; e<EXTRUDERS; e++) volume_to_filament_length[e] = 1.0;//Set the extrusion to 1mm per given value, so we can move the filament a set distance. currentMenu = lcd_menu_change_material_insert_wait_user; temp = target; } uint8_t progress = uint8_t(temp * 125 / target); if (progress < minProgress) progress = minProgress; else minProgress = progress; lcd_info_screen(lcd_menu_material_main, cancelMaterialInsert); lcd_lib_draw_stringP(3, 10, PSTR("Heating printhead for")); lcd_lib_draw_stringP(3, 20, PSTR("material insertion")); lcd_progressbar(progress); lcd_lib_update_screen(); }
static void lcd_menu_first_run_material_load_heatup() { setTargetHotend(230, 0); int16_t temp = degHotend(0) - 20; int16_t target = degTargetHotend(0) - 10 - 20; if (temp < 0) temp = 0; if (temp > target) { for(uint8_t e=0; e<EXTRUDERS; e++) volume_to_filament_length[e] = 1.0;//Set the extrusion to 1mm per given value, so we can move the filament a set distance. currentMenu = lcd_menu_first_run_material_load_insert; temp = target; } uint8_t progress = uint8_t(temp * 125 / target); if (progress < minProgress) progress = minProgress; else minProgress = progress; lcd_basic_screen(); DRAW_PROGRESS_NR(12); lcd_lib_draw_string_centerP(10, PSTR("Please wait,")); lcd_lib_draw_string_centerP(20, PSTR("printhead heating for")); lcd_lib_draw_string_centerP(30, PSTR("material loading")); lcd_progressbar(progress); lcd_lib_update_screen(); }
void lcd_menu_material() { #if EXTRUDERS > 1 lcd_tripple_menu(PSTR("PRIMARY|NOZZLE"), PSTR("SECONDARY|NOZZLE"), PSTR("RETURN")); if (lcd_lib_button_pressed) { if (IS_SELECTED_MAIN(0)) { active_extruder = 0; lcd_change_to_menu(lcd_menu_material_main); } else if (IS_SELECTED_MAIN(1)) { active_extruder = 1; lcd_change_to_menu(lcd_menu_material_main); } else if (IS_SELECTED_MAIN(2)) lcd_change_to_menu(lcd_menu_main); } lcd_lib_update_screen(); #else currentMenu = lcd_menu_material_main; #endif }
static void lcd_menu_first_run_bed_level_paper_center() { LED_GLOW(); if (lcd_lib_encoder_pos == ENCODER_NO_SELECTION) lcd_lib_encoder_pos = 0; if (printing_state == PRINT_STATE_NORMAL && lcd_lib_encoder_pos != 0 && movesplanned() < 4) { current_position[Z_AXIS] -= float(lcd_lib_encoder_pos) * 0.05; lcd_lib_encoder_pos = 0; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 60, 0); } if (movesplanned() > 0) lcd_info_screen(NULL, NULL, PSTR("CONTINUE")); else lcd_info_screen(lcd_menu_first_run_bed_level_paper_left, storeHomingZ_parkHeadForLeftAdjustment, PSTR("CONTINUE")); DRAW_PROGRESS_NR(8); lcd_lib_draw_string_centerP(10, PSTR("Slide a paper between")); lcd_lib_draw_string_centerP(20, PSTR("buildplate and nozzle")); lcd_lib_draw_string_centerP(30, PSTR("until you feel a")); lcd_lib_draw_string_centerP(40, PSTR("bit resistance.")); lcd_lib_update_screen(); }
static void lcd_menu_first_run_bed_level_center_adjust() { LED_GLOW(); if (lcd_lib_encoder_pos == ENCODER_NO_SELECTION) lcd_lib_encoder_pos = 0; if (printing_state == PRINT_STATE_NORMAL && lcd_lib_encoder_pos != 0 && movesplanned() < 4) { current_position[Z_AXIS] -= float(lcd_lib_encoder_pos) * 0.05; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 60, 0); } lcd_lib_encoder_pos = 0; if (movesplanned() > 0) lcd_info_screen(NULL, NULL, PSTR("CONTINUE")); else lcd_info_screen(lcd_menu_first_run_bed_level_left_adjust, storeHomingZ_parkHeadForLeftAdjustment, PSTR("CONTINUE")); DRAW_PROGRESS_NR(4); lcd_lib_draw_string_centerP(10, PSTR("Rotate the button")); lcd_lib_draw_string_centerP(20, PSTR("until the nozzle is")); lcd_lib_draw_string_centerP(30, PSTR("a millimeter away")); lcd_lib_draw_string_centerP(40, PSTR("from the buildplate.")); lcd_lib_update_screen(); }
static void lcd_menu_change_material_remove() { run_history = true; lcd_info_screen(lcd_menu_material_main, cancelMaterialInsert); lcd_lib_draw_stringP(3, 20, PSTR("Reversing material")); if (!blocks_queued()) { lcd_lib_beep(); led_glow_dir = led_glow = 0; currentMenu = lcd_menu_change_material_remove_wait_user; SELECT_MAIN_MENU_ITEM(0); //Disable the extruder motor so you can pull out the remaining filament. disable_e0(); disable_e1(); disable_e2(); } long pos = -st_get_position(E_AXIS); long targetPos = lround(FILAMENT_REVERSAL_LENGTH*axis_steps_per_unit[E_AXIS]); uint8_t progress = (pos * 125 / targetPos); lcd_progressbar(progress); lcd_lib_led_color(48,48,255); lcd_lib_update_screen(); }
static void lcd_menu_material_import_done() { lcd_lib_encoder_pos = MAIN_MENU_ITEM_POS(0); lcd_info_screen(lcd_menu_material_select, NULL, PSTR("Ok")); lcd_lib_draw_string_centerP(20, PSTR("Loaded materials")); lcd_lib_draw_string_centerP(30, PSTR("from the SD card")); lcd_lib_update_screen(); }
static void lcd_menu_change_material_remove_wait_user() { LED_GLOW(); lcd_question_screen(NULL, lcd_menu_change_material_remove_wait_user_ready, PSTR("READY"), lcd_menu_main, cancelMaterialInsert, PSTR("CANCEL")); lcd_lib_draw_string_centerP(20, PSTR("Remove material")); lcd_lib_update_screen(); }
static void lcd_menu_change_material_preheat() { run_history = true; setTargetHotend(material[active_extruder].temperature, active_extruder); int16_t temp = degHotend(active_extruder) - 20; int16_t target = degTargetHotend(active_extruder) - 20 - 10; if (temp < 0) temp = 0; if (temp > target && !is_command_queued()) { set_extrude_min_temp(0); for(uint8_t e=0; e<EXTRUDERS; e++) volume_to_filament_length[e] = 1.0;//Set the extrusion to 1mm per given value, so we can move the filament a set distance. plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], 20.0, retract_feedrate/60.0, active_extruder); float old_max_feedrate_e = max_feedrate[E_AXIS]; float old_retract_acceleration = retract_acceleration; max_feedrate[E_AXIS] = FILAMENT_REVERSAL_SPEED; retract_acceleration = FILAMENT_LONG_MOVE_ACCELERATION; current_position[E_AXIS] = 0; plan_set_e_position(current_position[E_AXIS]); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], -1.0, FILAMENT_REVERSAL_SPEED, active_extruder); for(uint8_t n=0; n<6; n++) plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], (n+1)*-FILAMENT_REVERSAL_LENGTH/6, FILAMENT_REVERSAL_SPEED, active_extruder); max_feedrate[E_AXIS] = old_max_feedrate_e; retract_acceleration = old_retract_acceleration; currentMenu = lcd_menu_change_material_remove; temp = target; } uint8_t progress = uint8_t(temp * 125 / target); if (progress < minProgress) progress = minProgress; else minProgress = progress; lcd_info_screen(lcd_menu_material_main, cancelMaterialInsert); lcd_lib_draw_stringP(3, 0, PSTR("Heating printhead")); lcd_lib_draw_stringP(3, 10, PSTR("for material removal")); char buffer[20]; memset (buffer,0,sizeof(buffer)); char* c; c = int_to_string(temp, buffer/*, PSTR( DEGREE_C_SYMBOL )*/); *c++ = TEMPERATURE_SEPARATOR; c = int_to_string(target, c, PSTR( DEGREE_C_SYMBOL )); lcd_lib_draw_string_center(20, buffer); lcd_progressbar(progress); LED_HEAT(); lcd_lib_update_screen(); }
static void lcd_menu_print_printing() { lcd_question_screen(lcd_menu_print_tune, NULL, PSTR("TUNE"), lcd_menu_print_abort, NULL, PSTR("ABORT")); uint8_t progress = card.getFilePos() / ((card.getFileSize() + 123) / 124); char buffer[16]; char* c; switch(printing_state) { default: lcd_lib_draw_string_centerP(20, PSTR("Printing:")); lcd_lib_draw_string_center(30, card.longFilename); break; case PRINT_STATE_HEATING: lcd_lib_draw_string_centerP(20, PSTR("Heating")); c = int_to_string(current_temperature[0], buffer, PSTR("C")); *c++ = '/'; c = int_to_string(target_temperature[0], c, PSTR("C")); lcd_lib_draw_string_center(30, buffer); break; case PRINT_STATE_HEATING_BED: lcd_lib_draw_string_centerP(20, PSTR("Heating buildplate")); c = int_to_string(current_temperature_bed, buffer, PSTR("C")); *c++ = '/'; c = int_to_string(target_temperature_bed, c, PSTR("C")); lcd_lib_draw_string_center(30, buffer); break; } float printTimeMs = (millis() - starttime); float printTimeSec = printTimeMs / 1000L; float totalTimeMs = float(printTimeMs) * float(card.getFileSize()) / float(card.getFilePos()); static float totalTimeSmoothSec; totalTimeSmoothSec = (totalTimeSmoothSec * 999L + totalTimeMs / 1000L) / 1000L; if (isinf(totalTimeSmoothSec)) totalTimeSmoothSec = totalTimeMs; if (LCD_DETAIL_CACHE_TIME() == 0 && printTimeSec < 60) { totalTimeSmoothSec = totalTimeMs / 1000; lcd_lib_draw_stringP(5, 10, PSTR("Time left unknown")); }else{ unsigned long totalTimeSec; if (printTimeSec < LCD_DETAIL_CACHE_TIME() / 2) { float f = float(printTimeSec) / float(LCD_DETAIL_CACHE_TIME() / 2); totalTimeSec = float(totalTimeSmoothSec) * f + float(LCD_DETAIL_CACHE_TIME()) * (1 - f); }else{ totalTimeSec = totalTimeSmoothSec; } unsigned long timeLeftSec = totalTimeSec - printTimeSec; int_to_time_string(timeLeftSec, buffer); lcd_lib_draw_stringP(5, 10, PSTR("Time left")); lcd_lib_draw_string(65, 10, buffer); } lcd_progressbar(progress); lcd_lib_update_screen(); }
static void lcd_menu_change_material_preheat() { #ifdef USE_CHANGE_TEMPERATURE setTargetHotend(material[active_extruder].change_temperature, active_extruder); #else setTargetHotend(material[active_extruder].temperature, active_extruder); #endif int16_t temp = degHotend(active_extruder) - 20; int16_t target = degTargetHotend(active_extruder) - 20; if (temp < 0) temp = 0; if (temp > target - 5 && temp < target + 5) { if ((signed long)(millis() - preheat_end_time) > 0) { set_extrude_min_temp(0); plan_set_e_position(0); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], 20.0 / volume_to_filament_length[active_extruder], retract_feedrate/60.0, active_extruder); float old_max_feedrate_e = max_feedrate[E_AXIS]; float old_retract_acceleration = retract_acceleration; max_feedrate[E_AXIS] = FILAMENT_REVERSAL_SPEED; retract_acceleration = FILAMENT_LONG_MOVE_ACCELERATION; plan_set_e_position(0); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], -1.0 / volume_to_filament_length[active_extruder], FILAMENT_REVERSAL_SPEED, active_extruder); plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], -FILAMENT_REVERSAL_LENGTH / volume_to_filament_length[active_extruder], FILAMENT_REVERSAL_SPEED, active_extruder); max_feedrate[E_AXIS] = old_max_feedrate_e; retract_acceleration = old_retract_acceleration; currentMenu = lcd_menu_change_material_remove; temp = target; } } else { #ifdef USE_CHANGE_TEMPERATURE preheat_end_time = millis() + (unsigned long)material[active_extruder].change_preheat_wait_time * 1000L; #else preheat_end_time = millis(); #endif } uint8_t progress = uint8_t(temp * 125 / target); if (progress < minProgress) progress = minProgress; else minProgress = progress; lcd_info_screen(post_change_material_menu, cancelMaterialInsert); lcd_lib_draw_stringP(3, 10, PSTR("Heating printhead")); lcd_lib_draw_stringP(3, 20, PSTR("for material removal")); lcd_progressbar(progress); lcd_lib_update_screen(); }
//Started bed leveling from the calibration menu void lcd_menu_first_run_start_bed_leveling() { lcd_question_screen(lcd_menu_first_run_bed_level_center_adjust, homeAndParkHeadForCenterAdjustment2, PSTR("CONTINUE"), lcd_menu_main, NULL, PSTR("CANCEL")); lcd_lib_draw_string_centerP(10, PSTR("I will guide you")); lcd_lib_draw_string_centerP(20, PSTR("through the process")); lcd_lib_draw_string_centerP(30, PSTR("of adjusting your")); lcd_lib_draw_string_centerP(40, PSTR("buildplate.")); lcd_lib_update_screen(); }
static void lcd_menu_first_run_print_1() { SELECT_MAIN_MENU_ITEM(0); lcd_info_screen(lcd_menu_first_run_print_card_detect, NULL, PSTR("ARE YOU READY?")); DRAW_PROGRESS_NR(20); lcd_lib_draw_string_centerP(20, PSTR("I'm ready let's")); lcd_lib_draw_string_centerP(30, PSTR("make a 3D Print!")); lcd_lib_update_screen(); }
static void lcd_menu_material_export_done() { lcd_lib_encoder_pos = MAIN_MENU_ITEM_POS(0); lcd_info_screen(lcd_menu_material_select, NULL, PSTR("Ok")); lcd_lib_draw_string_centerP(20, PSTR("Saved materials")); lcd_lib_draw_string_centerP(30, PSTR("to the SD card")); lcd_lib_draw_string_centerP(40, PSTR("in MATERIAL.TXT")); lcd_lib_update_screen(); }
static void lcd_menu_print_abort() { LED_GLOW(); lcd_question_screen(lcd_menu_print_ready, abortPrint, PSTR("YES"), previousMenu, NULL, PSTR("NO")); lcd_lib_draw_string_centerP(20, PSTR("Abort the print?")); lcd_lib_update_screen(); }
//Started bed leveling from the calibration menu void lcd_menu_first_run_start_bed_leveling() { lcd_question_screen(lcd_menu_first_run_bed_level_center_adjust, homeAndParkHeadForCenterAdjustment2, PSTR("POKRACOVAT"), lcd_menu_main, NULL, PSTR("ZRUSIT")); lcd_lib_draw_string_centerP(10, PSTR("Tento pruvodce vas")); lcd_lib_draw_string_centerP(20, PSTR("povedek krok za")); lcd_lib_draw_string_centerP(30, PSTR("krokem pri kalibraci")); lcd_lib_draw_string_centerP(40, PSTR("tiskove podlozky.")); lcd_lib_update_screen(); }
static void lcd_menu_change_material_remove_wait_user() { LED_GLOW(); setTargetHotend(material[active_extruder].temperature, active_extruder); lcd_question_screen(NULL, lcd_menu_change_material_remove_wait_user_ready, PSTR("READY"), post_change_material_menu, cancelMaterialInsert, PSTR("CANCEL")); lcd_lib_draw_string_centerP(20, PSTR("Remove material")); lcd_lib_update_screen(); }
static void lcd_menu_print_heatup() { lcd_question_screen(lcd_menu_print_tune, NULL, PSTR("TUNE"), lcd_menu_print_abort, NULL, PSTR("ABORT")); if (current_temperature_bed > target_temperature_bed - 10) { for(uint8_t e=0; e<EXTRUDERS; e++) { if (LCD_DETAIL_CACHE_MATERIAL(e) < 1 || target_temperature[e] > 0) continue; target_temperature[e] = material[e].temperature; } if (current_temperature_bed >= target_temperature_bed - TEMP_WINDOW * 2 && !is_command_queued()) { bool ready = true; for(uint8_t e=0; e<EXTRUDERS; e++) if (current_temperature[e] < target_temperature[e] - TEMP_WINDOW) ready = false; if (ready) { doStartPrint(); currentMenu = lcd_menu_print_printing; } } } uint8_t progress = 125; for(uint8_t e=0; e<EXTRUDERS; e++) { if (LCD_DETAIL_CACHE_MATERIAL(e) < 1 || target_temperature[e] < 1) continue; if (current_temperature[e] > 20) progress = min(progress, (current_temperature[e] - 20) * 125 / (target_temperature[e] - 20 - TEMP_WINDOW)); else progress = 0; } if (current_temperature_bed > 20) progress = min(progress, (current_temperature_bed - 20) * 125 / (target_temperature_bed - 20 - TEMP_WINDOW)); else progress = 0; if (progress < minProgress) progress = minProgress; else minProgress = progress; lcd_lib_draw_string_centerP(10, PSTR("Heating up...")); lcd_lib_draw_string_centerP(20, PSTR("Preparing to print:")); lcd_lib_draw_string_center(30, card.longFilename); lcd_progressbar(progress); lcd_lib_update_screen(); }
static void lcd_menu_first_run_material_select_confirm_abs() { LED_GLOW(); lcd_question_screen(lcd_menu_first_run_material_select_2, NULL, PSTR("YES"), lcd_menu_first_run_material_select_pla_abs, NULL, PSTR("NO")); DRAW_PROGRESS_NR(18); lcd_lib_draw_string_centerP(20, PSTR("You have chosen")); lcd_lib_draw_string_centerP(30, PSTR("ABS as material,")); lcd_lib_draw_string_centerP(40, PSTR("is this right?")); lcd_lib_update_screen(); }
static void lcd_menu_first_run_material_select_confirm_material() { LED_GLOW(); lcd_question_screen(lcd_menu_first_run_material_select_2, NULL, PSTR("YES"), lcd_menu_first_run_material_select_material, NULL, PSTR("NO")); DRAW_PROGRESS_NR(14); lcd_lib_draw_string_centerP(20, PSTR("You have chosen")); lcd_lib_draw_string_center(30, card.longFilename); lcd_lib_draw_string_centerP(40, PSTR("is this right?")); lcd_lib_update_screen(); }
void lcd_scroll_menu(const char* menuNameP, int8_t entryCount, entryNameCallback_t entryNameCallback, entryDetailsCallback_t entryDetailsCallback) { if (lcd_lib_button_pressed) return;//Selection possibly changed the menu, so do not update it this cycle. if (lcd_lib_encoder_pos == ENCODER_NO_SELECTION) lcd_lib_encoder_pos = 0; static int16_t viewPos = 0; if (lcd_lib_encoder_pos < 0) lcd_lib_encoder_pos += entryCount * ENCODER_TICKS_PER_SCROLL_MENU_ITEM; if (lcd_lib_encoder_pos >= entryCount * ENCODER_TICKS_PER_SCROLL_MENU_ITEM) lcd_lib_encoder_pos -= entryCount * ENCODER_TICKS_PER_SCROLL_MENU_ITEM; uint8_t selIndex = uint16_t(lcd_lib_encoder_pos/ENCODER_TICKS_PER_SCROLL_MENU_ITEM); lcd_lib_clear(); int16_t targetViewPos = selIndex * 8 - 15; int16_t viewDiff = targetViewPos - viewPos; viewPos += viewDiff / 4; if (viewDiff > 0) { viewPos ++; led_glow = led_glow_dir = 0; } if (viewDiff < 0) { viewPos --; led_glow = led_glow_dir = 0; } uint8_t drawOffset = 10 - (uint16_t(viewPos) % 8); uint8_t itemOffset = uint16_t(viewPos) / 8; for(uint8_t n=0; n<6; n++) { uint8_t itemIdx = n + itemOffset; if (itemIdx >= entryCount) continue; char* ptr = entryNameCallback(itemIdx); //ptr[10] = '\0'; ptr[20] = '\0'; if (itemIdx == selIndex) { //lcd_lib_set(3, drawOffset+8*n-1, 62, drawOffset+8*n+7); lcd_lib_set(3, drawOffset+8*n-1, 124, drawOffset+8*n+7); lcd_lib_clear_string(4, drawOffset+8*n, ptr); }else{ lcd_lib_draw_string(4, drawOffset+8*n, ptr); } } lcd_lib_set(3, 0, 124, 8); lcd_lib_clear(3, 47, 124, 63); lcd_lib_clear(3, 9, 124, 9); lcd_lib_draw_hline(3, 124, 48); lcd_lib_clear_string_centerP(1, menuNameP); entryDetailsCallback(selIndex); lcd_lib_update_screen(); }
static void lcd_menu_first_run_material_select_1() { SELECT_MAIN_MENU_ITEM(0); lcd_info_screen(lcd_menu_first_run_material_select_pla_abs, doCooldown, PSTR("READY")); DRAW_PROGRESS_NR(16); lcd_lib_draw_string_centerP(10, PSTR("Next, select the")); lcd_lib_draw_string_centerP(20, PSTR("material you have")); lcd_lib_draw_string_centerP(30, PSTR("inserted in the ")); lcd_lib_draw_string_centerP(40, PSTR("Ultimaker2.")); lcd_lib_update_screen(); }
//Run the first time you start-up the machine or after a factory reset. void lcd_menu_first_run_init() { SELECT_MAIN_MENU_ITEM(0); lcd_info_screen(lcd_menu_first_run_init_2, NULL, PSTR("CONTINUE")); DRAW_PROGRESS_NR(1); lcd_lib_draw_string_centerP(10, PSTR("Welcome to the first")); lcd_lib_draw_string_centerP(20, PSTR("startup of your")); lcd_lib_draw_string_centerP(30, PSTR("Ultimaker! Press the")); lcd_lib_draw_string_centerP(40, PSTR("button to continue")); lcd_lib_update_screen(); }
static void lcd_menu_first_run_material_select_2() { SELECT_MAIN_MENU_ITEM(0); lcd_info_screen(lcd_menu_first_run_print_1, NULL, PSTR("CONTINUE")); DRAW_PROGRESS_NR(19); lcd_lib_draw_string_centerP(10, PSTR("Now your Ultimaker2")); lcd_lib_draw_string_centerP(20, PSTR("knows what kind")); lcd_lib_draw_string_centerP(30, PSTR("of material")); lcd_lib_draw_string_centerP(40, PSTR("it is using.")); lcd_lib_update_screen(); }
//Started bed leveling from the calibration menu void lcd_menu_first_run_start_bed_leveling() { add_homeing[Z_AXIS] = 0; SELECT_MAIN_MENU_ITEM(0); lcd_info_screen(lcd_menu_first_run_bed_level_center_adjust, homeAndParkHeadForCenterAdjustment2, PSTR("CONTINUE")); lcd_lib_draw_string_centerP(10, PSTR("I will guide you")); lcd_lib_draw_string_centerP(20, PSTR("trought the process")); lcd_lib_draw_string_centerP(30, PSTR("of adjusting your")); lcd_lib_draw_string_centerP(40, PSTR("buildplate.")); lcd_lib_update_screen(); }
static void lcd_menu_first_run_init_2() { SELECT_MAIN_MENU_ITEM(0); lcd_info_screen(lcd_menu_first_run_init_3, homeAndRaiseBed, PSTR("CONTINUE")); DRAW_PROGRESS_NR(2); lcd_lib_draw_string_centerP(10, PSTR("Because this is the")); lcd_lib_draw_string_centerP(20, PSTR("first startup I will")); lcd_lib_draw_string_centerP(30, PSTR("walk you through")); lcd_lib_draw_string_centerP(40, PSTR("a first run wizard.")); lcd_lib_update_screen(); }
static void lcd_menu_print_classic_warning() { lcd_question_screen(lcd_menu_print_printing, doStartPrint, PSTR("CONTINUE"), lcd_menu_print_select, NULL, PSTR("CANCEL")); lcd_lib_draw_string_centerP(10, PSTR("This file will")); lcd_lib_draw_string_centerP(20, PSTR("override machine")); lcd_lib_draw_string_centerP(30, PSTR("setting with setting")); lcd_lib_draw_string_centerP(40, PSTR("from the slicer.")); lcd_lib_update_screen(); }