Level Bed in Prepare submenu
- Add “Level Bed” menu item for auto bed leveling - Hide the option if homing has not been done yet - Arrange the Prepare submenu more logically (?) - Add documentation comments, some white-space - Apply some coding standards here and there - Move old encoder multiplier debug option to `ultralcd.cpp`
This commit is contained in:
parent
01bedd17c9
commit
5b248757c7
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -172,6 +172,7 @@ char lcd_printPGM(const char* str) {
|
|||||||
|
|
||||||
static bool show_splashscreen = true;
|
static bool show_splashscreen = true;
|
||||||
|
|
||||||
|
/* Warning: This function is called from interrupt context */
|
||||||
static void lcd_implementation_init() {
|
static void lcd_implementation_init() {
|
||||||
|
|
||||||
#ifdef LCD_PIN_BL // Enable LCD backlight
|
#ifdef LCD_PIN_BL // Enable LCD backlight
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -259,7 +259,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -258,7 +258,6 @@
|
|||||||
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
#define ENCODER_RATE_MULTIPLIER // If defined, certain menu edit operations automatically multiply the steps when the encoder is moved quickly
|
||||||
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
#define ENCODER_10X_STEPS_PER_SEC 75 // If the encoder steps per sec exceeds this value, multiply steps moved x10 to quickly advance the value
|
||||||
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
#define ENCODER_100X_STEPS_PER_SEC 160 // If the encoder steps per sec exceeds this value, multiply steps moved x100 to really quickly advance the value
|
||||||
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
|
||||||
|
|
||||||
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
//#define CHDK 4 //Pin for triggering CHDK to take a picture see how to use it here http://captain-slow.dk/2014/03/09/3d-printing-timelapses/
|
||||||
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
#define CHDK_DELAY 50 //How long in ms the pin should stay HIGH before going LOW again
|
||||||
|
@ -173,6 +173,9 @@ static void lcd_status_screen();
|
|||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
#ifdef ENCODER_RATE_MULTIPLIER
|
#ifdef ENCODER_RATE_MULTIPLIER
|
||||||
|
|
||||||
|
//#define ENCODER_RATE_MULTIPLIER_DEBUG // If defined, output the encoder steps per second value
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MENU_MULTIPLIER_ITEM generates drawing and handling code for a multiplier menu item
|
* MENU_MULTIPLIER_ITEM generates drawing and handling code for a multiplier menu item
|
||||||
*/
|
*/
|
||||||
@ -246,6 +249,9 @@ menuFunc_t callbackFunc;
|
|||||||
// place-holders for Ki and Kd edits
|
// place-holders for Ki and Kd edits
|
||||||
float raw_Ki, raw_Kd;
|
float raw_Ki, raw_Kd;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* General function to go directly to a menu
|
||||||
|
*/
|
||||||
static void lcd_goto_menu(menuFunc_t menu, const bool feedback=false, const uint32_t encoder=0) {
|
static void lcd_goto_menu(menuFunc_t menu, const bool feedback=false, const uint32_t encoder=0) {
|
||||||
if (currentMenu != menu) {
|
if (currentMenu != menu) {
|
||||||
currentMenu = menu;
|
currentMenu = menu;
|
||||||
@ -260,7 +266,13 @@ static void lcd_goto_menu(menuFunc_t menu, const bool feedback=false, const uint
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependent */
|
/**
|
||||||
|
*
|
||||||
|
* "Info Screen"
|
||||||
|
*
|
||||||
|
* This is very display-dependent, so the lcd implementation draws this.
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_status_screen() {
|
static void lcd_status_screen() {
|
||||||
encoderRateMultiplierEnabled = false;
|
encoderRateMultiplierEnabled = false;
|
||||||
|
|
||||||
@ -371,7 +383,12 @@ static void lcd_sdcard_stop() {
|
|||||||
lcd_setstatus(MSG_PRINT_ABORTED, true);
|
lcd_setstatus(MSG_PRINT_ABORTED, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Menu implementation */
|
/**
|
||||||
|
*
|
||||||
|
* "Main" menu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_main_menu() {
|
static void lcd_main_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_WATCH, lcd_status_screen);
|
MENU_ITEM(back, MSG_WATCH, lcd_status_screen);
|
||||||
@ -453,6 +470,12 @@ void lcd_set_home_offsets() {
|
|||||||
|
|
||||||
#endif //BABYSTEPPING
|
#endif //BABYSTEPPING
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Tune" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_tune_menu() {
|
static void lcd_tune_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||||
@ -594,17 +617,55 @@ void lcd_cooldown() {
|
|||||||
lcd_return_to_status();
|
lcd_return_to_status();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Prepare" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_prepare_menu() {
|
static void lcd_prepare_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
|
|
||||||
|
//
|
||||||
|
// ^ Main
|
||||||
|
//
|
||||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||||
#if defined( SDSUPPORT ) && defined( MENU_ADDAUTOSTART )
|
|
||||||
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd);
|
//
|
||||||
#endif
|
// Auto Home
|
||||||
MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84"));
|
//
|
||||||
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
|
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set Home Offsets
|
||||||
|
//
|
||||||
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets);
|
MENU_ITEM(function, MSG_SET_HOME_OFFSETS, lcd_set_home_offsets);
|
||||||
//MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
|
//MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
|
||||||
|
|
||||||
|
//
|
||||||
|
// Level Bed
|
||||||
|
//
|
||||||
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
||||||
|
if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS])
|
||||||
|
MENU_ITEM(gcode, MSG_LEVEL_BED, PSTR("G29"));
|
||||||
|
#elif defined(MANUAL_BED_LEVELING)
|
||||||
|
MENU_ITEM(submenu, MSG_LEVEL_BED, lcd_level_bed);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Move Axis
|
||||||
|
//
|
||||||
|
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disable Steppers
|
||||||
|
//
|
||||||
|
MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84"));
|
||||||
|
|
||||||
|
//
|
||||||
|
// Preheat PLA
|
||||||
|
// Preheat ABS
|
||||||
|
//
|
||||||
#if TEMP_SENSOR_0 != 0
|
#if TEMP_SENSOR_0 != 0
|
||||||
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0
|
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0
|
||||||
MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu);
|
MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu);
|
||||||
@ -615,8 +676,14 @@ static void lcd_prepare_menu() {
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Cooldown
|
||||||
|
//
|
||||||
MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
|
MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Switch power on/off
|
||||||
|
//
|
||||||
#if HAS_POWER_SWITCH
|
#if HAS_POWER_SWITCH
|
||||||
if (powersupply)
|
if (powersupply)
|
||||||
MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81"));
|
MENU_ITEM(gcode, MSG_SWITCH_PS_OFF, PSTR("M81"));
|
||||||
@ -624,12 +691,13 @@ static void lcd_prepare_menu() {
|
|||||||
MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80"));
|
MENU_ITEM(gcode, MSG_SWITCH_PS_ON, PSTR("M80"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
|
//
|
||||||
|
// Autostart
|
||||||
#if defined(MANUAL_BED_LEVELING)
|
//
|
||||||
MENU_ITEM(submenu, MSG_LEVEL_BED, lcd_level_bed);
|
#if defined(SDSUPPORT) && defined(MENU_ADDAUTOSTART)
|
||||||
|
MENU_ITEM(function, MSG_AUTOSTART, lcd_autostart_sd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -657,6 +725,12 @@ inline void line_to_current(AxisEnum axis) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Prepare" > "Move Axis" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
float move_menu_scale;
|
float move_menu_scale;
|
||||||
static void lcd_move_menu_axis();
|
static void lcd_move_menu_axis();
|
||||||
|
|
||||||
@ -687,6 +761,12 @@ static void lcd_move_e() {
|
|||||||
if (LCD_CLICKED) lcd_goto_menu(lcd_move_menu_axis);
|
if (LCD_CLICKED) lcd_goto_menu(lcd_move_menu_axis);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Prepare" > "Move Xmm" > "Move XYZ" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_move_menu_axis() {
|
static void lcd_move_menu_axis() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_MOVE_AXIS, lcd_move_menu);
|
MENU_ITEM(back, MSG_MOVE_AXIS, lcd_move_menu);
|
||||||
@ -712,6 +792,12 @@ static void lcd_move_menu_01mm() {
|
|||||||
lcd_move_menu_axis();
|
lcd_move_menu_axis();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Prepare" > "Move Axis" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_move_menu() {
|
static void lcd_move_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
||||||
@ -722,6 +808,12 @@ static void lcd_move_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Control" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_control_menu() {
|
static void lcd_control_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||||
@ -744,6 +836,12 @@ static void lcd_control_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Temperature" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifdef PIDTEMP
|
#ifdef PIDTEMP
|
||||||
|
|
||||||
// Helpers for editing PID Ki & Kd values
|
// Helpers for editing PID Ki & Kd values
|
||||||
@ -775,6 +873,12 @@ static void lcd_control_menu() {
|
|||||||
|
|
||||||
#endif //PIDTEMP
|
#endif //PIDTEMP
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Control" > "Temperature" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_control_temperature_menu() {
|
static void lcd_control_temperature_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
@ -863,6 +967,12 @@ static void lcd_control_temperature_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Temperature" > "Preheat PLA conf" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_control_temperature_preheat_pla_settings_menu() {
|
static void lcd_control_temperature_preheat_pla_settings_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||||
@ -879,6 +989,12 @@ static void lcd_control_temperature_preheat_pla_settings_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Temperature" > "Preheat ABS conf" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_control_temperature_preheat_abs_settings_menu() {
|
static void lcd_control_temperature_preheat_abs_settings_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||||
@ -895,6 +1011,12 @@ static void lcd_control_temperature_preheat_abs_settings_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Control" > "Motion" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_control_motion_menu() {
|
static void lcd_control_motion_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
@ -931,6 +1053,12 @@ static void lcd_control_motion_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Control" > "Filament" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static void lcd_control_volumetric_menu() {
|
static void lcd_control_volumetric_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||||
@ -953,6 +1081,12 @@ static void lcd_control_volumetric_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Control" > "Contrast" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifdef HAS_LCD_CONTRAST
|
#ifdef HAS_LCD_CONTRAST
|
||||||
static void lcd_set_contrast() {
|
static void lcd_set_contrast() {
|
||||||
if (encoderPosition != 0) {
|
if (encoderPosition != 0) {
|
||||||
@ -967,6 +1101,12 @@ static void lcd_control_volumetric_menu() {
|
|||||||
}
|
}
|
||||||
#endif // HAS_LCD_CONTRAST
|
#endif // HAS_LCD_CONTRAST
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Control" > "Retract" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
#ifdef FWRETRACT
|
#ifdef FWRETRACT
|
||||||
static void lcd_control_retract_menu() {
|
static void lcd_control_retract_menu() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
@ -999,6 +1139,12 @@ static void lcd_sd_updir() {
|
|||||||
currentMenuViewOffset = 0;
|
currentMenuViewOffset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* "Print from SD" submenu
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
void lcd_sdcard_menu() {
|
void lcd_sdcard_menu() {
|
||||||
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
|
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
|
||||||
uint16_t fileCnt = card.getnrfilenames();
|
uint16_t fileCnt = card.getnrfilenames();
|
||||||
@ -1034,6 +1180,11 @@ void lcd_sdcard_menu() {
|
|||||||
END_MENU();
|
END_MENU();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Functions for editing single values
|
||||||
|
*
|
||||||
|
*/
|
||||||
#define menu_edit_type(_type, _name, _strFunc, scale) \
|
#define menu_edit_type(_type, _name, _strFunc, scale) \
|
||||||
bool _menu_edit_ ## _name () { \
|
bool _menu_edit_ ## _name () { \
|
||||||
bool isClicked = LCD_CLICKED; \
|
bool isClicked = LCD_CLICKED; \
|
||||||
@ -1080,6 +1231,11 @@ menu_edit_type(float, float51, ftostr51, 10)
|
|||||||
menu_edit_type(float, float52, ftostr52, 100)
|
menu_edit_type(float, float52, ftostr52, 100)
|
||||||
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Handlers for RepRap World Keypad input
|
||||||
|
*
|
||||||
|
*/
|
||||||
#ifdef REPRAPWORLD_KEYPAD
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
static void reprapworld_keypad_move_z_up() {
|
static void reprapworld_keypad_move_z_up() {
|
||||||
encoderPosition = 1;
|
encoderPosition = 1;
|
||||||
@ -1114,10 +1270,14 @@ menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
|||||||
static void reprapworld_keypad_move_home() {
|
static void reprapworld_keypad_move_home() {
|
||||||
enqueuecommands_P((PSTR("G28"))); // move all axis home
|
enqueuecommands_P((PSTR("G28"))); // move all axis home
|
||||||
}
|
}
|
||||||
#endif //REPRAPWORLD_KEYPAD
|
#endif // REPRAPWORLD_KEYPAD
|
||||||
|
|
||||||
/** End of menus **/
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Audio feedback for controller clicks
|
||||||
|
*
|
||||||
|
*/
|
||||||
void lcd_quick_feedback() {
|
void lcd_quick_feedback() {
|
||||||
lcdDrawUpdate = 2;
|
lcdDrawUpdate = 2;
|
||||||
next_button_update_ms = millis() + 500;
|
next_button_update_ms = millis() + 500;
|
||||||
@ -1146,11 +1306,15 @@ void lcd_quick_feedback() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Menu action functions **/
|
/**
|
||||||
static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); }
|
*
|
||||||
static void menu_action_submenu(menuFunc_t data) { lcd_goto_menu(data); }
|
* Menu actions
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
static void menu_action_back(menuFunc_t func) { lcd_goto_menu(func); }
|
||||||
|
static void menu_action_submenu(menuFunc_t func) { lcd_goto_menu(func); }
|
||||||
static void menu_action_gcode(const char* pgcode) { enqueuecommands_P(pgcode); }
|
static void menu_action_gcode(const char* pgcode) { enqueuecommands_P(pgcode); }
|
||||||
static void menu_action_function(menuFunc_t data) { (*data)(); }
|
static void menu_action_function(menuFunc_t func) { (*func)(); }
|
||||||
static void menu_action_sdfile(const char* filename, char* longFilename) {
|
static void menu_action_sdfile(const char* filename, char* longFilename) {
|
||||||
char cmd[30];
|
char cmd[30];
|
||||||
char* c;
|
char* c;
|
||||||
@ -1243,6 +1407,19 @@ int lcd_strlen_P(const char *s) {
|
|||||||
return j;
|
return j;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update the LCD, read encoder buttons, etc.
|
||||||
|
* - Read button states
|
||||||
|
* - Check the SD Card slot state
|
||||||
|
* - Act on RepRap World keypad input
|
||||||
|
* - Update the encoder position
|
||||||
|
* - Apply acceleration to the encoder position
|
||||||
|
* - Reset the Info Screen timeout if there's any input
|
||||||
|
* - Update status indicators, if any
|
||||||
|
* - Clear the LCD if lcdDrawUpdate == 2
|
||||||
|
*
|
||||||
|
* Warning: This function is called from interrupt context!
|
||||||
|
*/
|
||||||
void lcd_update() {
|
void lcd_update() {
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
static millis_t return_to_status_ms = 0;
|
static millis_t return_to_status_ms = 0;
|
||||||
@ -1381,7 +1558,7 @@ void lcd_update() {
|
|||||||
|
|
||||||
if (lcdDrawUpdate == 2) lcd_implementation_clear();
|
if (lcdDrawUpdate == 2) lcd_implementation_clear();
|
||||||
if (lcdDrawUpdate) lcdDrawUpdate--;
|
if (lcdDrawUpdate) lcdDrawUpdate--;
|
||||||
next_lcd_update_ms = millis() + LCD_UPDATE_INTERVAL;
|
next_lcd_update_ms = ms + LCD_UPDATE_INTERVAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1454,112 +1631,116 @@ void lcd_reset_alert_level() { lcd_status_message_level = 0; }
|
|||||||
|
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
|
|
||||||
////////////////////////
|
/**
|
||||||
// Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement)
|
* Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement)
|
||||||
// These values are independent of which pins are used for EN_A and EN_B indications
|
* These values are independent of which pins are used for EN_A and EN_B indications
|
||||||
// The rotary encoder part is also independent to the chipset used for the LCD
|
* The rotary encoder part is also independent to the chipset used for the LCD
|
||||||
#if defined(EN_A) && defined(EN_B)
|
*/
|
||||||
#define encrot0 0
|
#if defined(EN_A) && defined(EN_B)
|
||||||
#define encrot1 2
|
#define encrot0 0
|
||||||
#define encrot2 3
|
#define encrot1 2
|
||||||
#define encrot3 1
|
#define encrot2 3
|
||||||
#endif
|
#define encrot3 1
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Warning: This function is called from interrupt context */
|
/**
|
||||||
void lcd_buttons_update() {
|
* Read encoder buttons from the hardware registers
|
||||||
#ifdef NEWPANEL
|
* Warning: This function is called from interrupt context!
|
||||||
uint8_t newbutton = 0;
|
*/
|
||||||
if (READ(BTN_EN1) == 0) newbutton |= EN_A;
|
void lcd_buttons_update() {
|
||||||
if (READ(BTN_EN2) == 0) newbutton |= EN_B;
|
#ifdef NEWPANEL
|
||||||
#if BTN_ENC > 0
|
uint8_t newbutton = 0;
|
||||||
if (millis() > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C;
|
if (READ(BTN_EN1) == 0) newbutton |= EN_A;
|
||||||
#endif
|
if (READ(BTN_EN2) == 0) newbutton |= EN_B;
|
||||||
buttons = newbutton;
|
#if BTN_ENC > 0
|
||||||
#ifdef LCD_HAS_SLOW_BUTTONS
|
if (millis() > next_button_update_ms && READ(BTN_ENC) == 0) newbutton |= EN_C;
|
||||||
buttons |= slow_buttons;
|
#endif
|
||||||
#endif
|
buttons = newbutton;
|
||||||
#ifdef REPRAPWORLD_KEYPAD
|
#ifdef LCD_HAS_SLOW_BUTTONS
|
||||||
// for the reprapworld_keypad
|
buttons |= slow_buttons;
|
||||||
uint8_t newbutton_reprapworld_keypad=0;
|
#endif
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
// for the reprapworld_keypad
|
||||||
|
uint8_t newbutton_reprapworld_keypad=0;
|
||||||
|
WRITE(SHIFT_LD, LOW);
|
||||||
|
WRITE(SHIFT_LD, HIGH);
|
||||||
|
for(int8_t i = 0; i < 8; i++) {
|
||||||
|
newbutton_reprapworld_keypad >>= 1;
|
||||||
|
if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= BIT(7);
|
||||||
|
WRITE(SHIFT_CLK, HIGH);
|
||||||
|
WRITE(SHIFT_CLK, LOW);
|
||||||
|
}
|
||||||
|
buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
|
||||||
|
#endif
|
||||||
|
#else //read it from the shift register
|
||||||
|
uint8_t newbutton = 0;
|
||||||
WRITE(SHIFT_LD, LOW);
|
WRITE(SHIFT_LD, LOW);
|
||||||
WRITE(SHIFT_LD, HIGH);
|
WRITE(SHIFT_LD, HIGH);
|
||||||
for(int8_t i = 0; i < 8; i++) {
|
unsigned char tmp_buttons = 0;
|
||||||
newbutton_reprapworld_keypad >>= 1;
|
for(int8_t i=0; i<8; i++) {
|
||||||
if (READ(SHIFT_OUT)) newbutton_reprapworld_keypad |= BIT(7);
|
newbutton >>= 1;
|
||||||
|
if (READ(SHIFT_OUT)) newbutton |= BIT(7);
|
||||||
WRITE(SHIFT_CLK, HIGH);
|
WRITE(SHIFT_CLK, HIGH);
|
||||||
WRITE(SHIFT_CLK, LOW);
|
WRITE(SHIFT_CLK, LOW);
|
||||||
}
|
}
|
||||||
buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
|
buttons = ~newbutton; //invert it, because a pressed switch produces a logical 0
|
||||||
#endif
|
#endif //!NEWPANEL
|
||||||
#else //read it from the shift register
|
|
||||||
uint8_t newbutton = 0;
|
|
||||||
WRITE(SHIFT_LD, LOW);
|
|
||||||
WRITE(SHIFT_LD, HIGH);
|
|
||||||
unsigned char tmp_buttons = 0;
|
|
||||||
for(int8_t i=0; i<8; i++) {
|
|
||||||
newbutton >>= 1;
|
|
||||||
if (READ(SHIFT_OUT)) newbutton |= BIT(7);
|
|
||||||
WRITE(SHIFT_CLK, HIGH);
|
|
||||||
WRITE(SHIFT_CLK, LOW);
|
|
||||||
}
|
|
||||||
buttons = ~newbutton; //invert it, because a pressed switch produces a logical 0
|
|
||||||
#endif //!NEWPANEL
|
|
||||||
|
|
||||||
//manage encoder rotation
|
//manage encoder rotation
|
||||||
uint8_t enc=0;
|
uint8_t enc=0;
|
||||||
if (buttons & EN_A) enc |= B01;
|
if (buttons & EN_A) enc |= B01;
|
||||||
if (buttons & EN_B) enc |= B10;
|
if (buttons & EN_B) enc |= B10;
|
||||||
if (enc != lastEncoderBits) {
|
if (enc != lastEncoderBits) {
|
||||||
switch(enc) {
|
switch(enc) {
|
||||||
case encrot0:
|
case encrot0:
|
||||||
if (lastEncoderBits==encrot3) encoderDiff++;
|
if (lastEncoderBits==encrot3) encoderDiff++;
|
||||||
else if (lastEncoderBits==encrot1) encoderDiff--;
|
else if (lastEncoderBits==encrot1) encoderDiff--;
|
||||||
break;
|
break;
|
||||||
case encrot1:
|
case encrot1:
|
||||||
if (lastEncoderBits==encrot0) encoderDiff++;
|
if (lastEncoderBits==encrot0) encoderDiff++;
|
||||||
else if (lastEncoderBits==encrot2) encoderDiff--;
|
else if (lastEncoderBits==encrot2) encoderDiff--;
|
||||||
break;
|
break;
|
||||||
case encrot2:
|
case encrot2:
|
||||||
if (lastEncoderBits==encrot1) encoderDiff++;
|
if (lastEncoderBits==encrot1) encoderDiff++;
|
||||||
else if (lastEncoderBits==encrot3) encoderDiff--;
|
else if (lastEncoderBits==encrot3) encoderDiff--;
|
||||||
break;
|
break;
|
||||||
case encrot3:
|
case encrot3:
|
||||||
if (lastEncoderBits==encrot2) encoderDiff++;
|
if (lastEncoderBits==encrot2) encoderDiff++;
|
||||||
else if (lastEncoderBits==encrot0) encoderDiff--;
|
else if (lastEncoderBits==encrot0) encoderDiff--;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
lastEncoderBits = enc;
|
||||||
}
|
}
|
||||||
lastEncoderBits = enc;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool lcd_detected(void) {
|
bool lcd_detected(void) {
|
||||||
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
|
#if (defined(LCD_I2C_TYPE_MCP23017) || defined(LCD_I2C_TYPE_MCP23008)) && defined(DETECT_DEVICE)
|
||||||
return lcd.LcdDetected() == 1;
|
return lcd.LcdDetected() == 1;
|
||||||
#else
|
|
||||||
return true;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void lcd_buzz(long duration, uint16_t freq) {
|
|
||||||
if (freq > 0) {
|
|
||||||
#if BEEPER > 0
|
|
||||||
SET_OUTPUT(BEEPER);
|
|
||||||
tone(BEEPER, freq, duration);
|
|
||||||
delay(duration);
|
|
||||||
#elif defined(LCD_USE_I2C_BUZZER)
|
|
||||||
lcd.buzz(duration, freq);
|
|
||||||
#else
|
#else
|
||||||
delay(duration);
|
return true;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
delay(duration);
|
void lcd_buzz(long duration, uint16_t freq) {
|
||||||
|
if (freq > 0) {
|
||||||
|
#if BEEPER > 0
|
||||||
|
SET_OUTPUT(BEEPER);
|
||||||
|
tone(BEEPER, freq, duration);
|
||||||
|
delay(duration);
|
||||||
|
#elif defined(LCD_USE_I2C_BUZZER)
|
||||||
|
lcd.buzz(duration, freq);
|
||||||
|
#else
|
||||||
|
delay(duration);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
delay(duration);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
bool lcd_clicked() { return LCD_CLICKED; }
|
bool lcd_clicked() { return LCD_CLICKED; }
|
||||||
|
|
||||||
#endif //ULTIPANEL
|
#endif // ULTIPANEL
|
||||||
|
|
||||||
/*********************************/
|
/*********************************/
|
||||||
/** Number to string conversion **/
|
/** Number to string conversion **/
|
||||||
@ -1621,8 +1802,7 @@ char *ftostr32(const float &x) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Convert float to string with 1.234 format
|
// Convert float to string with 1.234 format
|
||||||
char *ftostr43(const float &x)
|
char *ftostr43(const float &x) {
|
||||||
{
|
|
||||||
long xx = x * 1000;
|
long xx = x * 1000;
|
||||||
if (xx >= 0)
|
if (xx >= 0)
|
||||||
conv[0] = (xx / 1000) % 10 + '0';
|
conv[0] = (xx / 1000) % 10 + '0';
|
||||||
@ -1638,8 +1818,7 @@ char *ftostr43(const float &x)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Convert float to string with 1.23 format
|
// Convert float to string with 1.23 format
|
||||||
char *ftostr12ns(const float &x)
|
char *ftostr12ns(const float &x) {
|
||||||
{
|
|
||||||
long xx=x*100;
|
long xx=x*100;
|
||||||
|
|
||||||
xx=abs(xx);
|
xx=abs(xx);
|
||||||
@ -1799,6 +1978,12 @@ char *ftostr52(const float &x) {
|
|||||||
#ifdef MANUAL_BED_LEVELING
|
#ifdef MANUAL_BED_LEVELING
|
||||||
|
|
||||||
static int _lcd_level_bed_position;
|
static int _lcd_level_bed_position;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MBL Wait for controller movement and clicks:
|
||||||
|
* - Movement adjusts the Z axis
|
||||||
|
* - Click saves the Z and goes to the next mesh point
|
||||||
|
*/
|
||||||
static void _lcd_level_bed() {
|
static void _lcd_level_bed() {
|
||||||
if (encoderPosition != 0) {
|
if (encoderPosition != 0) {
|
||||||
refresh_cmd_timeout();
|
refresh_cmd_timeout();
|
||||||
@ -1844,6 +2029,9 @@ char *ftostr52(const float &x) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MBL Move to mesh starting point
|
||||||
|
*/
|
||||||
static void _lcd_level_bed_homing() {
|
static void _lcd_level_bed_homing() {
|
||||||
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("XYZ"), "Homing");
|
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR("XYZ"), "Homing");
|
||||||
if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]) {
|
if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]) {
|
||||||
@ -1858,6 +2046,9 @@ char *ftostr52(const float &x) {
|
|||||||
lcdDrawUpdate = 2;
|
lcdDrawUpdate = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MBL entry-point
|
||||||
|
*/
|
||||||
static void lcd_level_bed() {
|
static void lcd_level_bed() {
|
||||||
axis_known_position[X_AXIS] = axis_known_position[Y_AXIS] = axis_known_position[Z_AXIS] = false;
|
axis_known_position[X_AXIS] = axis_known_position[Y_AXIS] = axis_known_position[Z_AXIS] = false;
|
||||||
mbl.reset();
|
mbl.reset();
|
||||||
|
Loading…
Reference in New Issue
Block a user