void lcd_material_set_material(uint8_t nr, uint8_t e) { material[e].temperature = eeprom_read_word(EEPROM_MATERIAL_TEMPERATURE_OFFSET(nr)); #if TEMP_SENSOR_BED != 0 material[e].bed_temperature = eeprom_read_word(EEPROM_MATERIAL_BED_TEMPERATURE_OFFSET(nr)); #endif material[e].flow = eeprom_read_word(EEPROM_MATERIAL_FLOW_OFFSET(nr)); material[e].fan_speed = eeprom_read_byte(EEPROM_MATERIAL_FAN_SPEED_OFFSET(nr)); material[e].diameter = eeprom_read_float(EEPROM_MATERIAL_DIAMETER_OFFSET(nr)); eeprom_read_block(card.longFilename, EEPROM_MATERIAL_NAME_OFFSET(nr), 8); card.longFilename[8] = '\0'; if (material[e].temperature > HEATER_0_MAXTEMP - 15) material[e].temperature = HEATER_0_MAXTEMP - 15; #if TEMP_SENSOR_BED != 0 if (material[e].bed_temperature > BED_MAXTEMP - 15) material[e].bed_temperature = BED_MAXTEMP - 15; #endif material[e].change_temperature = eeprom_read_word(EEPROM_MATERIAL_CHANGE_TEMPERATURE(nr)); material[e].change_preheat_wait_time = eeprom_read_byte(EEPROM_MATERIAL_CHANGE_WAIT_TIME(nr)); if (material[e].change_temperature < 10) material[e].change_temperature = material[e].temperature; lcd_material_store_current_material(); }
void lcd_material_reset_defaults() { //Fill in the defaults SERIAL_ECHO_START; SERIAL_ECHOLNPGM("Materials reset"); char buffer[MATERIAL_NAME_LENGTH]; for (int a= 0; a< MATERIAL_PRESETS; a++) { strncpy_P(buffer, (char PROGMEM *) presets[a].name,MATERIAL_NAME_LENGTH); // this will pad out the whole length with 0 as needed. eeprom_write_block(buffer , EEPROM_MATERIAL_NAME_OFFSET(a), MATERIAL_NAME_LENGTH); material_preset temp; memcpy_P((void*) &temp,&presets[a],sizeof (material_preset)); eeprom_write_word(EEPROM_MATERIAL_TEMPERATURE_OFFSET(a) ,temp.temperature); eeprom_write_word(EEPROM_MATERIAL_BED_TEMPERATURE_OFFSET(a),temp.bed); eeprom_write_byte(EEPROM_MATERIAL_FAN_SPEED_OFFSET(a) ,temp.fan_speed); eeprom_write_word(EEPROM_MATERIAL_FLOW_OFFSET(a) ,temp.flow); eeprom_write_float(EEPROM_MATERIAL_DIAMETER_OFFSET(a) ,temp.diameter); } uint8_t e; for(e=0; e<EXTRUDERS; e++) { makeCustomName(e); strcpy(material_name[e],material_name_buf); lcd_material_store_current_material(); } eeprom_write_byte(EEPROM_MATERIAL_COUNT_OFFSET(), MATERIAL_PRESETS); lcd_lib_beep_ext(500,150); lcd_lib_beep_ext(750,100); }
static void lcd_menu_material_settings() { lcd_scroll_menu(PSTR("MATERIAL"), 7, lcd_material_settings_callback, lcd_material_settings_details_callback); if (lcd_lib_button_pressed) { if (IS_SELECTED_SCROLL(0)) { lcd_change_to_menu(lcd_menu_material_main); lcd_material_store_current_material(); } else if (IS_SELECTED_SCROLL(1)) LCD_EDIT_SETTING(material[active_extruder].temperature, "Temperature", "C", 0, HEATER_0_MAXTEMP - 15); else if (IS_SELECTED_SCROLL(2)) LCD_EDIT_SETTING(material[active_extruder].bed_temperature, "Buildplate Temp.", "C", 0, BED_MAXTEMP - 15); else if (IS_SELECTED_SCROLL(3)) LCD_EDIT_SETTING_FLOAT001(material[active_extruder].diameter, "Material Diameter", "mm", 0, 100); else if (IS_SELECTED_SCROLL(4)) LCD_EDIT_SETTING(material[active_extruder].fan_speed, "Fan speed", "%", 0, 100); else if (IS_SELECTED_SCROLL(5)) LCD_EDIT_SETTING(material[active_extruder].flow, "Material flow", "%", 1, 1000); else if (IS_SELECTED_SCROLL(6)) lcd_change_to_menu(lcd_menu_material_settings_store); } }
void lcd_material_set_material(uint8_t nr, uint8_t e) { material[e].temperature = eeprom_read_word(EEPROM_MATERIAL_TEMPERATURE_OFFSET(nr)); material[e].bed_temperature = eeprom_read_word(EEPROM_MATERIAL_BED_TEMPERATURE_OFFSET(nr)); material[e].flow = eeprom_read_word(EEPROM_MATERIAL_FLOW_OFFSET(nr)); material[e].fan_speed = eeprom_read_byte(EEPROM_MATERIAL_FAN_SPEED_OFFSET(nr)); material[e].diameter = eeprom_read_float(EEPROM_MATERIAL_DIAMETER_OFFSET(nr)); eeprom_read_block(card.longFilename, EEPROM_MATERIAL_NAME_OFFSET(nr), 8); card.longFilename[8] = '\0'; if (material[e].temperature > HEATER_0_MAXTEMP - 15) material[e].temperature = HEATER_0_MAXTEMP - 15; if (material[e].bed_temperature > BED_MAXTEMP - 15) material[e].bed_temperature = BED_MAXTEMP - 15; lcd_material_store_current_material(); }
static void lcd_menu_material_settings() { #ifdef USE_CHANGE_TEMPERATURE lcd_scroll_menu(PSTR("MATERIAL"), 8 + BED_MENU_OFFSET, lcd_material_settings_callback, lcd_material_settings_details_callback); #else lcd_scroll_menu(PSTR("MATERIAL"), 6 + BED_MENU_OFFSET, lcd_material_settings_callback, lcd_material_settings_details_callback); #endif if (lcd_lib_button_pressed) { if (IS_SELECTED_SCROLL(0)) { lcd_change_to_menu(lcd_menu_material_main); lcd_material_store_current_material(); }else if (IS_SELECTED_SCROLL(1)) LCD_EDIT_SETTING(material[active_extruder].temperature, "Temperature", "C", 0, HEATER_0_MAXTEMP - 15); #if TEMP_SENSOR_BED != 0 else if (IS_SELECTED_SCROLL(2)) LCD_EDIT_SETTING(material[active_extruder].bed_temperature, "Buildplate Temp.", "C", 0, BED_MAXTEMP - 15); #endif else if (IS_SELECTED_SCROLL(2 + BED_MENU_OFFSET)) LCD_EDIT_SETTING_FLOAT001(material[active_extruder].diameter, "Material Diameter", "mm", 0, 100); else if (IS_SELECTED_SCROLL(3 + BED_MENU_OFFSET)) LCD_EDIT_SETTING(material[active_extruder].fan_speed, "Fan speed", "%", 0, 100); else if (IS_SELECTED_SCROLL(4 + BED_MENU_OFFSET)) LCD_EDIT_SETTING(material[active_extruder].flow, "Material flow", "%", 1, 1000); #ifdef USE_CHANGE_TEMPERATURE else if (IS_SELECTED_SCROLL(5 + BED_MENU_OFFSET)) LCD_EDIT_SETTING(material[active_extruder].change_temperature, "Change temperature", "C", 0, HEATER_0_MAXTEMP - 15); else if (IS_SELECTED_SCROLL(6 + BED_MENU_OFFSET)) LCD_EDIT_SETTING(material[active_extruder].change_preheat_wait_time, "Change wait time", "sec", 0, 180); else if (IS_SELECTED_SCROLL(7 + BED_MENU_OFFSET)) lcd_change_to_menu(lcd_menu_material_settings_store); #else else if (IS_SELECTED_SCROLL(5 + BED_MENU_OFFSET)) lcd_change_to_menu(lcd_menu_material_settings_store); #endif } }