From 99c201dba2f0c7614cbb25fa3ac45506d49b5bc8 Mon Sep 17 00:00:00 2001 From: PavelSindler <sindlerpa@gmail.com> Date: Wed, 1 Mar 2017 15:34:41 +0100 Subject: [PATCH] farm mode disable from menu added, farm number value remains after activating farm mode, wider farm numbers range --- Firmware/Configuration.h | 8 +++---- Firmware/Marlin_main.cpp | 35 +++++++++++---------------- Firmware/ultralcd.cpp | 52 ++++++++++++++++++++++++++++++---------- Firmware/ultralcd.h | 5 ++-- 4 files changed, 60 insertions(+), 40 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 39cda708..d92a37b4 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.10-2" +#define FW_version "3.0.10-3" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 @@ -31,13 +31,13 @@ // Offsets of the Z heiths of the calibration points from the first point. // The offsets are saved as 16bit signed int, scaled to tenths of microns. #define EEPROM_BED_CALIBRATION_Z_JITTER (EEPROM_BED_CALIBRATION_VEC_Y-2*8) - -#define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-4) +#define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-1) +#define EEPROM_FARM_NUMBER (EEPROM_FARM_MODE-3) // Correction of the bed leveling, in micrometers. // Maximum 50 micrometers allowed. // Bed correction is valid if set to 1. If set to zero or 255, the successive 4 bytes are invalid. -#define EEPROM_BED_CORRECTION_VALID (EEPROM_FARM_MODE-1) +#define EEPROM_BED_CORRECTION_VALID (EEPROM_FARM_NUMBER-1) #define EEPROM_BED_CORRECTION_LEFT (EEPROM_BED_CORRECTION_VALID-1) #define EEPROM_BED_CORRECTION_RIGHT (EEPROM_BED_CORRECTION_LEFT-1) #define EEPROM_BED_CORRECTION_FRONT (EEPROM_BED_CORRECTION_RIGHT-1) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 32e2b1f1..b22e629a 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -264,6 +264,7 @@ unsigned int usb_printing_counter; int lcd_change_fil_state = 0; int feedmultiplyBckp = 100; unsigned char lang_selected = 0; +int8_t FarmMode = 0; bool prusa_sd_card_upload = false; @@ -920,9 +921,10 @@ void factory_reset(char level, bool quiet) // Force the "Follow calibration flow" message at the next boot up. calibration_status_store(CALIBRATION_STATUS_Z_CALIBRATION); farm_no = 0; - EEPROM_save_B(EEPROM_FARM_MODE, &farm_no); - farm_mode = false; - + farm_mode == false; + eeprom_update_byte((uint8_t*)EEPROM_FARM_MODE, farm_mode); + EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); + WRITE(BEEPER, HIGH); _delay_ms(100); WRITE(BEEPER, LOW); @@ -1118,19 +1120,12 @@ void setup() #if defined(Z_AXIS_ALWAYS_ON) enable_z(); #endif - - EEPROM_read_B(EEPROM_FARM_MODE, &farm_no); - if (farm_no > 0) + farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE); + EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no); + if (farm_mode) { - farm_mode = true; - farm_no = farm_no; prusa_statistics(8); } - else - { - farm_mode = false; - farm_no = 0; - } // Enable Toshiba FlashAir SD card / WiFi enahanced card. card.ToshibaFlashAir_enable(eeprom_read_byte((unsigned char*)EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY) == 1); @@ -3107,16 +3102,14 @@ void process_commands() } break; - case 98: - farm_no = 21; - EEPROM_save_B(EEPROM_FARM_MODE, &farm_no); - farm_mode = true; + case 98: //activate farm mode + farm_mode = 1; + eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode); break; - case 99: - farm_no = 0; - EEPROM_save_B(EEPROM_FARM_MODE, &farm_no); - farm_mode = false; + case 99: //deactivate farm mode + farm_mode = 0; + eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode); break; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index a380f461..9e2f8416 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -99,7 +99,7 @@ int8_t SilentModeMenu = 0; int lcd_commands_type=LCD_COMMAND_IDLE; int lcd_commands_step=0; bool isPrintPaused = false; -bool farm_mode = false; +uint8_t farm_mode = 0; int farm_no = 0; int farm_timer = 30; int farm_status = 0; @@ -2380,6 +2380,7 @@ static void lcd_settings_menu() if (farm_mode) { MENU_ITEM(submenu, PSTR("Farm number"), lcd_farm_no); + MENU_ITEM(function, PSTR("Disable farm mode"), lcd_disable_farm_mode); } END_MENU(); @@ -2679,6 +2680,13 @@ char reset_menu() { } +static void lcd_disable_farm_mode() { + farm_mode = 0; + eeprom_update_byte((unsigned char *)EEPROM_FARM_MODE, farm_mode); + lcd_return_to_status(); +} + + #ifdef SNMM static void extr_mov(float shift, float feed_rate) { //move extruder no matter what the current heater temperature is @@ -2896,6 +2904,7 @@ static void extr_unload_3() { extr_unload(); } + static void fil_load_menu() { START_MENU(); @@ -2936,6 +2945,7 @@ static void change_extr_menu(){ static void lcd_farm_no() { + char step = 0; int enc_dif = 0; int _farmno = farm_no; int _ret = 0; @@ -2949,32 +2959,50 @@ static void lcd_farm_no() if (abs((enc_dif - encoderDiff)) > 2) { if (enc_dif > encoderDiff) { - _farmno--; + switch (step) { + case(0): if (_farmno >= 100) _farmno -= 100; break; + case(1): if (_farmno % 100 >= 10) _farmno -= 10; break; + case(2): if (_farmno % 10 >= 1) _farmno--; break; + default: break; + } } if (enc_dif < encoderDiff) { - _farmno++; + switch (step) { + case(0): if (_farmno < 900) _farmno += 100; break; + case(1): if (_farmno % 100 < 90) _farmno += 10; break; + case(2): if (_farmno % 10 <= 8)_farmno++; break; + default: break; + } } enc_dif = 0; encoderDiff = 0; } - if (_farmno > 254) { _farmno = 1; } - if (_farmno < 1) { _farmno = 254; } - - lcd.setCursor(0, 2); + if (_farmno < 100) lcd.print("0"); + if (_farmno < 10) lcd.print("0"); lcd.print(_farmno); lcd.print(" "); + lcd.setCursor(0, 3); + lcd.print(" "); + + + lcd.setCursor(step, 3); + lcd.print("^"); delay(100); if (lcd_clicked()) { - _ret = 1; - farm_no = _farmno; - EEPROM_save_B(EEPROM_FARM_MODE, &farm_no); - prusa_statistics(20); - lcd_return_to_status(); + delay(200); + step++; + if(step == 3) { + _ret = 1; + farm_no = _farmno; + EEPROM_save_B(EEPROM_FARM_NUMBER, &farm_no); + prusa_statistics(20); + lcd_return_to_status(); + } } manage_heater(); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index c49b54f6..9b65b1e8 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -95,7 +95,7 @@ void lcd_mylang(); extern unsigned long lcd_timeoutToStatus; extern int lcd_commands_type; - extern bool farm_mode; + extern uint8_t farm_mode; extern int farm_no; extern int farm_timer; extern int farm_status; @@ -212,8 +212,7 @@ static void extr_unload_0(); static void extr_unload_1(); static void extr_unload_2(); static void extr_unload_3(); -static void stack_test(); -static int test(); +static void lcd_disable_farm_mode(); void stack_error();