Merge branch 'RCBugFix' into translations
This commit is contained in:
commit
f3a7a5c99b
112
.travis.yml
112
.travis.yml
|
@ -1,12 +1,13 @@
|
|||
---
|
||||
language: c
|
||||
|
||||
#
|
||||
before_install:
|
||||
# Travis runs a detached head. We need to find the current branch
|
||||
- git checkout `git branch --contains HEAD | grep -v '*'`
|
||||
# Also tags for the root(s) of the minor version(s)
|
||||
- git fetch origin --tags
|
||||
- mkdir ~/bin
|
||||
#
|
||||
install:
|
||||
# Install arduino 1.6.4
|
||||
- wget http://downloads-02.arduino.cc/arduino-1.6.4-linux64.tar.xz
|
||||
|
@ -26,144 +27,215 @@ install:
|
|||
- mv LiquidCrystal_I2C/LiquidCrystal_I2C /usr/local/share/arduino/libraries/LiquidCrystal_I2C
|
||||
- git clone https://github.com/lincomatic/LiquidTWI2.git
|
||||
- mv LiquidTWI2 /usr/local/share/arduino/libraries/LiquidTWI2
|
||||
#
|
||||
before_script:
|
||||
# arduino requires an X server even with command line
|
||||
# https://github.com/arduino/Arduino/issues/1981
|
||||
- Xvfb :1 -screen 0 1024x768x16 &> xvfb.log &
|
||||
# change back to home directory for compiling
|
||||
- cd $TRAVIS_BUILD_DIR
|
||||
#
|
||||
script:
|
||||
# build default config
|
||||
- build_marlin
|
||||
#
|
||||
# Backup Configuration.h, Configuration_adv.h, and pins_RAMPS_14.h
|
||||
#
|
||||
- cp Marlin/Configuration.h Marlin/Configuration.h.backup
|
||||
- cp Marlin/Configuration_adv.h Marlin/Configuration_adv.h.backup
|
||||
- cp Marlin/pins_RAMPS_14.h Marlin/pins_RAMPS_14.h.backup
|
||||
# add sensor for bed
|
||||
#
|
||||
# Build with the default configurations
|
||||
#
|
||||
- build_marlin
|
||||
#
|
||||
# Test heated bed temperature sensor
|
||||
#
|
||||
- opt_set TEMP_SENSOR_BED 1
|
||||
- build_marlin
|
||||
# change extruder numbers from 1 to 2
|
||||
#
|
||||
# Test 2 extruders on basic RAMPS 1.4
|
||||
#
|
||||
- opt_set MOTHERBOARD BOARD_RAMPS_14_EEB
|
||||
- opt_set EXTRUDERS 2
|
||||
- opt_set TEMP_SENSOR_1 1
|
||||
#- cat Marlin/Configuration.h
|
||||
- build_marlin
|
||||
# change extruder numbers from 2 to 3, needs to be a board with 3 extruders defined in pins.h
|
||||
#
|
||||
# Test 3 extruders on RUMBA (can use any board with >=3 extruders defined)
|
||||
#
|
||||
- opt_set MOTHERBOARD BOARD_RUMBA
|
||||
- opt_set EXTRUDERS 3
|
||||
- opt_set TEMP_SENSOR_2 1
|
||||
- build_marlin
|
||||
# enable PIDTEMPBED
|
||||
#
|
||||
# Test PIDTEMPBED
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable PIDTEMPBED
|
||||
- build_marlin
|
||||
# enable AUTO_BED_LEVELING
|
||||
#
|
||||
# Test AUTO_BED_LEVELING & DEBUG_LEVELING_FEATURE
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable ENABLE_AUTO_BED_LEVELING
|
||||
- opt_enable ENABLE_AUTO_BED_LEVELING DEBUG_LEVELING_FEATURE
|
||||
- build_marlin
|
||||
# enable AUTO_BED_LEVELING with servos
|
||||
- restore_configs
|
||||
- opt_enable ENABLE_AUTO_BED_LEVELING NUM_SERVOS Z_ENDSTOP_SERVO_NR SERVO_ENDSTOP_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
#
|
||||
# Test AUTO_BED_LEVELING & DEBUG_LEVELING_FEATURE with Servos
|
||||
#
|
||||
- opt_enable NUM_SERVOS Z_ENDSTOP_SERVO_NR SERVO_ENDSTOP_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE
|
||||
- build_marlin
|
||||
# enable EEPROM_SETTINGS & EEPROM_CHITCHAT
|
||||
#
|
||||
# Test EEPROM_SETTINGS & EEPROM_CHITCHAT
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT
|
||||
- build_marlin
|
||||
#
|
||||
### LCDS ###
|
||||
#
|
||||
#
|
||||
# ULTIMAKERCONTROLLER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable ULTIMAKERCONTROLLER
|
||||
- build_marlin
|
||||
#
|
||||
# MAKRPANEL
|
||||
# Needs to use melzi and sanguino hardware
|
||||
# Needs to use Melzi and Sanguino hardware
|
||||
#
|
||||
#- restore_configs
|
||||
#- opt_enable MAKRPANEL
|
||||
#- build_marlin
|
||||
#
|
||||
# REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT
|
||||
- build_marlin
|
||||
#
|
||||
# G3D_PANEL
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable G3D_PANEL SDSUPPORT
|
||||
- build_marlin
|
||||
#
|
||||
# REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||
- opt_enable REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER SDSUPPORT
|
||||
- build_marlin
|
||||
#
|
||||
# REPRAPWORLD_KEYPAD
|
||||
#
|
||||
# Cant find configuration details to get it to compile
|
||||
#- restore_configs
|
||||
#- opt_enable ULTRA_LCD REPRAPWORLD_KEYPAD REPRAPWORLD_KEYPAD_MOVE_STEP
|
||||
#- build_marlin
|
||||
#
|
||||
# RA_CONTROL_PANEL
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable RA_CONTROL_PANEL
|
||||
- build_marlin
|
||||
#
|
||||
### I2C PANELS ###
|
||||
#
|
||||
# LCD_I2C_SAINSMART_YWROBOT
|
||||
# Failing at the moment needs different library
|
||||
#- restore_configs
|
||||
#- opt_enable LCD_I2C_SAINSMART_YWROBOT
|
||||
#- build_marlin
|
||||
#
|
||||
# LCD_I2C_PANELOLU2
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable LCD_I2C_PANELOLU2
|
||||
- build_marlin
|
||||
#
|
||||
# LCD_I2C_VIKI
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable LCD_I2C_VIKI
|
||||
- build_marlin
|
||||
#
|
||||
# LCM1602
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable LCM1602
|
||||
- build_marlin
|
||||
#
|
||||
# Enable FILAMENTCHANGEENABLE
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable FILAMENTCHANGEENABLE
|
||||
- opt_enable FILAMENTCHANGEENABLE ULTIMAKERCONTROLLER
|
||||
- build_marlin
|
||||
#
|
||||
# Enable filament sensor
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable FILAMENT_WIDTH_SENSOR
|
||||
- build_marlin
|
||||
#
|
||||
# Enable filament sensor with LCD display
|
||||
- restore_configs
|
||||
- opt_enable ULTIMAKERCONTROLLER FILAMENT_WIDTH_SENSOR FILAMENT_LCD_DISPLAY
|
||||
#
|
||||
- opt_enable ULTIMAKERCONTROLLER FILAMENT_LCD_DISPLAY
|
||||
- build_marlin
|
||||
#
|
||||
# Enable COREXY
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable COREXY
|
||||
- build_marlin
|
||||
#
|
||||
# Enable COREXZ
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable COREXZ
|
||||
- build_marlin
|
||||
#
|
||||
# Enable Z_DUAL_STEPPER_DRIVERS, Z_DUAL_ENDSTOPS
|
||||
#
|
||||
- restore_configs
|
||||
- opt_enable_adv Z_DUAL_STEPPER_DRIVERS Z_DUAL_ENDSTOPS
|
||||
- pins_set RAMPS_14 X_MAX_PIN -1
|
||||
- opt_set_adv Z2_MAX_PIN 2
|
||||
- build_marlin
|
||||
- restore_configs
|
||||
#
|
||||
#
|
||||
######## Example Configurations ##############
|
||||
#
|
||||
# Delta Config (generic)
|
||||
- restore_configs
|
||||
- use_example_configs delta/generic
|
||||
- build_marlin
|
||||
#
|
||||
# Delta Config (generic) + ABL + ALLEN_KEY
|
||||
#
|
||||
- use_example_configs delta/generic
|
||||
- opt_disable DISABLE_MIN_ENDSTOPS
|
||||
- opt_enable AUTO_BED_LEVELING_FEATURE Z_PROBE_ALLEN_KEY
|
||||
- build_marlin
|
||||
#
|
||||
# Delta Config (Mini Kossel)
|
||||
#
|
||||
- use_example_configs delta/kossel_mini
|
||||
- build_marlin
|
||||
#
|
||||
# Makibox Config need to check board type for Teensy++ 2.0
|
||||
#
|
||||
#- use_example_configs makibox
|
||||
#- build_marlin
|
||||
#
|
||||
# SCARA Config
|
||||
#
|
||||
- use_example_configs SCARA
|
||||
- build_marlin
|
||||
#
|
||||
# tvrrug Config need to check board type for sanguino atmega644p
|
||||
#
|
||||
#- use_example_configs tvrrug/Round2
|
||||
#- build_marlin
|
||||
#
|
||||
#
|
||||
######## Board Types #############
|
||||
#
|
||||
# To be added in nightly test branch
|
||||
#
|
||||
|
|
|
@ -275,20 +275,28 @@
|
|||
#include "Arduino.h"
|
||||
|
||||
/**
|
||||
* ENDSTOPPULLUPS
|
||||
* Set ENDSTOPPULLUPS for unused endstop switches
|
||||
*/
|
||||
#if ENABLED(ENDSTOPPULLUPS)
|
||||
#if DISABLED(DISABLE_MAX_ENDSTOPS)
|
||||
#if ENABLED(USE_XMAX_PLUG)
|
||||
#define ENDSTOPPULLUP_XMAX
|
||||
#endif
|
||||
#if ENABLED(USE_YMAX_PLUG)
|
||||
#define ENDSTOPPULLUP_YMAX
|
||||
#endif
|
||||
#if ENABLED(USE_ZMAX_PLUG)
|
||||
#define ENDSTOPPULLUP_ZMAX
|
||||
#endif
|
||||
#if DISABLED(DISABLE_MIN_ENDSTOPS)
|
||||
#if ENABLED(USE_XMIN_PLUG)
|
||||
#define ENDSTOPPULLUP_XMIN
|
||||
#endif
|
||||
#if ENABLED(USE_YMIN_PLUG)
|
||||
#define ENDSTOPPULLUP_YMIN
|
||||
#endif
|
||||
#if ENABLED(USE_ZMIN_PLUG)
|
||||
#define ENDSTOPPULLUP_ZMIN
|
||||
#endif
|
||||
#if DISABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)
|
||||
#if ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP)
|
||||
#define ENDSTOPPULLUP_ZMIN_PROBE
|
||||
#endif
|
||||
#endif
|
||||
|
@ -440,7 +448,9 @@
|
|||
#define HEATER_0_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_1 == -1
|
||||
#if TEMP_SENSOR_1 <= -2
|
||||
#error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1
|
||||
#elif TEMP_SENSOR_1 == -1
|
||||
#define HEATER_1_USES_AD595
|
||||
#elif TEMP_SENSOR_1 == 0
|
||||
#undef HEATER_1_MINTEMP
|
||||
|
@ -450,7 +460,9 @@
|
|||
#define HEATER_1_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_2 == -1
|
||||
#if TEMP_SENSOR_2 <= -2
|
||||
#error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2
|
||||
#elif TEMP_SENSOR_2 == -1
|
||||
#define HEATER_2_USES_AD595
|
||||
#elif TEMP_SENSOR_2 == 0
|
||||
#undef HEATER_2_MINTEMP
|
||||
|
@ -460,7 +472,9 @@
|
|||
#define HEATER_2_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_3 == -1
|
||||
#if TEMP_SENSOR_3 <= -2
|
||||
#error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3
|
||||
#elif TEMP_SENSOR_3 == -1
|
||||
#define HEATER_3_USES_AD595
|
||||
#elif TEMP_SENSOR_3 == 0
|
||||
#undef HEATER_3_MINTEMP
|
||||
|
@ -470,7 +484,9 @@
|
|||
#define HEATER_3_USES_THERMISTOR
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_BED == -1
|
||||
#if TEMP_SENSOR_BED <= -2
|
||||
#error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED
|
||||
#elif TEMP_SENSOR_BED == -1
|
||||
#define BED_USES_AD595
|
||||
#elif TEMP_SENSOR_BED == 0
|
||||
#undef BED_MINTEMP
|
||||
|
@ -495,14 +511,55 @@
|
|||
|
||||
#define ARRAY_BY_EXTRUDERS1(v1) ARRAY_BY_EXTRUDERS(v1, v1, v1, v1)
|
||||
|
||||
/**
|
||||
* Z_DUAL_ENDSTOPS endstop reassignment
|
||||
*/
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define _XMIN_ 100
|
||||
#define _YMIN_ 200
|
||||
#define _ZMIN_ 300
|
||||
#define _XMAX_ 101
|
||||
#define _YMAX_ 201
|
||||
#define _ZMAX_ 301
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING =
|
||||
#if Z2_USE_ENDSTOP == _XMAX_
|
||||
X_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN X_MAX_PIN
|
||||
#undef USE_XMAX_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _YMAX_
|
||||
Y_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Y_MAX_PIN
|
||||
#undef USE_YMAX_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _ZMAX_
|
||||
Z_MAX_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Z_MAX_PIN
|
||||
#undef USE_ZMAX_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _XMIN_
|
||||
X_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN X_MIN_PIN
|
||||
#undef USE_XMIN_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _YMIN_
|
||||
Y_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Y_MIN_PIN
|
||||
#undef USE_YMIN_PLUG
|
||||
#elif Z2_USE_ENDSTOP == _ZMIN_
|
||||
Z_MIN_ENDSTOP_INVERTING
|
||||
#define Z2_MAX_PIN Z_MIN_PIN
|
||||
#undef USE_ZMIN_PLUG
|
||||
#else
|
||||
0
|
||||
#endif
|
||||
;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Shorthand for pin tests, used wherever needed
|
||||
*/
|
||||
#define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 != -2)
|
||||
#define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0)
|
||||
#define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0)
|
||||
#define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0)
|
||||
#define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0)
|
||||
#define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2)
|
||||
#define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2)
|
||||
#define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2)
|
||||
#define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2)
|
||||
#define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2)
|
||||
#define HAS_HEATER_0 (PIN_EXISTS(HEATER_0))
|
||||
#define HAS_HEATER_1 (PIN_EXISTS(HEATER_1))
|
||||
#define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
|
||||
|
@ -581,6 +638,8 @@
|
|||
|
||||
#define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
|
||||
|
||||
#define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
|
||||
|
||||
/**
|
||||
* Helper Macros for heaters and extruder fan
|
||||
*/
|
||||
|
|
|
@ -346,8 +346,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -370,8 +384,6 @@ const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -709,9 +721,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -137,8 +137,10 @@ void gcode_M100() {
|
|||
// other vital statistics that define the memory pool.
|
||||
//
|
||||
if (code_seen('F')) {
|
||||
#if 0
|
||||
int max_addr = (int) __brkval;
|
||||
int max_cnt = 0;
|
||||
#endif
|
||||
int block_cnt = 0;
|
||||
ptr = (unsigned char*) __brkval;
|
||||
sp = top_of_stack();
|
||||
|
@ -155,10 +157,12 @@ void gcode_M100() {
|
|||
i += j;
|
||||
block_cnt++;
|
||||
}
|
||||
#if 0
|
||||
if (j > max_cnt) { // We don't do anything with this information yet
|
||||
max_cnt = j; // but we do know where the biggest free memory block is.
|
||||
max_addr = (int) ptr + i;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (block_cnt > 1)
|
||||
|
@ -176,10 +180,10 @@ void gcode_M100() {
|
|||
x = code_value();
|
||||
SERIAL_ECHOLNPGM("Corrupting free memory block.\n");
|
||||
ptr = (unsigned char*) __brkval;
|
||||
SERIAL_ECHOPAIR("\n__brkval : ", (long) ptr);
|
||||
SERIAL_ECHOPAIR("\n__brkval : ", ptr);
|
||||
ptr += 8;
|
||||
sp = top_of_stack();
|
||||
SERIAL_ECHOPAIR("\nStack Pointer : ", (long) sp);
|
||||
SERIAL_ECHOPAIR("\nStack Pointer : ", sp);
|
||||
SERIAL_ECHOLNPGM("\n");
|
||||
n = sp - ptr - 64; // -64 just to keep us from finding interrupt activity that
|
||||
// has altered the stack.
|
||||
|
@ -200,10 +204,10 @@ void gcode_M100() {
|
|||
if (m100_not_initialized || code_seen('I')) { // If no sub-command is specified, the first time
|
||||
SERIAL_ECHOLNPGM("Initializing free memory block.\n"); // this happens, it will Initialize.
|
||||
ptr = (unsigned char*) __brkval; // Repeated M100 with no sub-command will not destroy the
|
||||
SERIAL_ECHOPAIR("\n__brkval : ", (long) ptr); // state of the initialized free memory pool.
|
||||
SERIAL_ECHOPAIR("\n__brkval : ", ptr); // state of the initialized free memory pool.
|
||||
ptr += 8;
|
||||
sp = top_of_stack();
|
||||
SERIAL_ECHOPAIR("\nStack Pointer : ", (long) sp);
|
||||
SERIAL_ECHOPAIR("\nStack Pointer : ", sp);
|
||||
SERIAL_ECHOLNPGM("\n");
|
||||
n = sp - ptr - 64; // -64 just to keep us from finding interrupt activity that
|
||||
// has altered the stack.
|
||||
|
@ -213,7 +217,7 @@ void gcode_M100() {
|
|||
*(ptr + i) = (unsigned char) 0xe5;
|
||||
for (i = 0; i < n; i++) {
|
||||
if (*(ptr + i) != (unsigned char) 0xe5) {
|
||||
SERIAL_ECHOPAIR("? address : ", (unsigned long) ptr + i);
|
||||
SERIAL_ECHOPAIR("? address : ", ptr + i);
|
||||
SERIAL_ECHOPAIR("=", *(ptr + i));
|
||||
SERIAL_ECHOLNPGM("\n");
|
||||
}
|
||||
|
|
|
@ -65,6 +65,8 @@ typedef unsigned long millis_t;
|
|||
|
||||
#include "WString.h"
|
||||
|
||||
#include "stopwatch.h"
|
||||
|
||||
#ifdef USBCON
|
||||
#if ENABLED(BLUETOOTH)
|
||||
#define MYSERIAL bluetoothSerial
|
||||
|
@ -101,13 +103,15 @@ extern const char echomagic[] PROGMEM;
|
|||
#define SERIAL_ECHOLN(x) SERIAL_PROTOCOLLN(x)
|
||||
#define SERIAL_ECHOLNPGM(x) SERIAL_PROTOCOLLNPGM(x)
|
||||
|
||||
#define SERIAL_ECHOPAIR(name,value) do{ serial_echopair_P(PSTR(name),(value)); }while(0)
|
||||
#define SERIAL_ECHOPAIR(name,value) (serial_echopair_P(PSTR(name),(value)))
|
||||
|
||||
void serial_echopair_P(const char* s_P, int v);
|
||||
void serial_echopair_P(const char* s_P, long v);
|
||||
void serial_echopair_P(const char* s_P, float v);
|
||||
void serial_echopair_P(const char* s_P, double v);
|
||||
void serial_echopair_P(const char* s_P, unsigned long v);
|
||||
FORCE_INLINE void serial_echopair_P(const char* s_P, bool v) { serial_echopair_P(s_P, (int)v); }
|
||||
FORCE_INLINE void serial_echopair_P(const char* s_P, void *v) { serial_echopair_P(s_P, (unsigned long)v); }
|
||||
|
||||
// Things to write to serial from Program memory. Saves 400 to 2k of RAM.
|
||||
FORCE_INLINE void serialprintPGM(const char* str) {
|
||||
|
@ -323,6 +327,10 @@ extern bool axis_homed[3]; // axis[n].is_homed
|
|||
extern float zprobe_zoffset;
|
||||
#endif
|
||||
|
||||
#if ENABLED(HOST_KEEPALIVE_FEATURE)
|
||||
extern uint8_t host_keepalive_interval;
|
||||
#endif
|
||||
|
||||
#if ENABLED(PREVENT_DANGEROUS_EXTRUDE)
|
||||
extern float extrude_min_temp;
|
||||
#endif
|
||||
|
@ -341,8 +349,7 @@ extern bool axis_homed[3]; // axis[n].is_homed
|
|||
extern bool filament_sensor; //indicates that filament sensor readings should control extrusion
|
||||
extern float filament_width_meas; //holds the filament diameter as accurately measured
|
||||
extern int8_t measurement_delay[]; //ring buffer to delay measurement
|
||||
extern int delay_index1, delay_index2; //ring buffer index. used by planner, temperature, and main code
|
||||
extern float delay_dist; //delay distance counter
|
||||
extern int filwidth_delay_index1, filwidth_delay_index2; //ring buffer index. used by planner, temperature, and main code
|
||||
extern int meas_delay_cm; //delay distance
|
||||
#endif
|
||||
|
||||
|
@ -357,8 +364,8 @@ extern bool axis_homed[3]; // axis[n].is_homed
|
|||
extern float retract_recover_length, retract_recover_length_swap, retract_recover_feedrate;
|
||||
#endif
|
||||
|
||||
extern millis_t print_job_start_ms;
|
||||
extern millis_t print_job_stop_ms;
|
||||
// Print job timer
|
||||
extern Stopwatch print_job_timer;
|
||||
|
||||
// Handling multiple extruders pins
|
||||
extern uint8_t active_extruder;
|
||||
|
@ -368,15 +375,10 @@ extern uint8_t active_extruder;
|
|||
extern void digipot_i2c_init();
|
||||
#endif
|
||||
|
||||
#if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
|
||||
#if HAS_TEMP_HOTEND || HAS_TEMP_BED
|
||||
void print_heaterstates();
|
||||
#endif
|
||||
|
||||
extern void calculate_volumetric_multipliers();
|
||||
|
||||
// Print job timer related functions
|
||||
millis_t print_job_timer();
|
||||
bool print_job_start(millis_t t = 0);
|
||||
bool print_job_stop(bool force = false);
|
||||
|
||||
#endif //MARLIN_H
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -368,27 +368,29 @@
|
|||
* Test Heater, Temp Sensor, and Extruder Pins; Sensor Type must also be set.
|
||||
*/
|
||||
#if EXTRUDERS > 3
|
||||
#if !HAS_HEATER_3
|
||||
#if TEMP_SENSOR_3 == 0
|
||||
#error TEMP_SENSOR_3 is required with 4 EXTRUDERS.
|
||||
#elif !HAS_HEATER_3
|
||||
#error HEATER_3_PIN not defined for this board.
|
||||
#elif !PIN_EXISTS(TEMP_3)
|
||||
#error TEMP_3_PIN not defined for this board.
|
||||
#elif !PIN_EXISTS(E3_STEP) || !PIN_EXISTS(E3_DIR) || !PIN_EXISTS(E3_ENABLE)
|
||||
#error E3_STEP_PIN, E3_DIR_PIN, or E3_ENABLE_PIN not defined for this board.
|
||||
#elif TEMP_SENSOR_3 == 0
|
||||
#error TEMP_SENSOR_3 is required with 4 EXTRUDERS.
|
||||
#endif
|
||||
#elif EXTRUDERS > 2
|
||||
#if !HAS_HEATER_2
|
||||
#if TEMP_SENSOR_2 == 0
|
||||
#error TEMP_SENSOR_2 is required with 3 or more EXTRUDERS.
|
||||
#elif !HAS_HEATER_2
|
||||
#error HEATER_2_PIN not defined for this board.
|
||||
#elif !PIN_EXISTS(TEMP_2)
|
||||
#error TEMP_2_PIN not defined for this board.
|
||||
#elif !PIN_EXISTS(E2_STEP) || !PIN_EXISTS(E2_DIR) || !PIN_EXISTS(E2_ENABLE)
|
||||
#error E2_STEP_PIN, E2_DIR_PIN, or E2_ENABLE_PIN not defined for this board.
|
||||
#elif TEMP_SENSOR_2 == 0
|
||||
#error TEMP_SENSOR_2 is required with 3 or more EXTRUDERS.
|
||||
#endif
|
||||
#elif EXTRUDERS > 1
|
||||
#if !PIN_EXISTS(TEMP_1)
|
||||
#if TEMP_SENSOR_1 == 0
|
||||
#error TEMP_SENSOR_1 is required with 2 or more EXTRUDERS.
|
||||
#elif !PIN_EXISTS(TEMP_1)
|
||||
#error TEMP_1_PIN not defined for this board.
|
||||
#elif !PIN_EXISTS(E1_STEP) || !PIN_EXISTS(E1_DIR) || !PIN_EXISTS(E1_ENABLE)
|
||||
#error E1_STEP_PIN, E1_DIR_PIN, or E1_ENABLE_PIN not defined for this board.
|
||||
|
@ -401,12 +403,8 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if TEMP_SENSOR_1 == 0
|
||||
#if EXTRUDERS > 1
|
||||
#error TEMP_SENSOR_1 is required with 2 or more EXTRUDERS.
|
||||
#elif ENABLED(TEMP_SENSOR_1_AS_REDUNDANT)
|
||||
#if ENABLED(TEMP_SENSOR_1_AS_REDUNDANT) && TEMP_SENSOR_1 == 0
|
||||
#error TEMP_SENSOR_1 is required with TEMP_SENSOR_1_AS_REDUNDANT.
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if !HAS_HEATER_0
|
||||
|
@ -419,6 +417,19 @@
|
|||
#error TEMP_SENSOR_0 is required.
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Endstops
|
||||
*/
|
||||
#if DISABLED(USE_XMIN_PLUG) && DISABLED(USE_XMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _XMAX_ && Z2_USE_ENDSTOP <= _XMIN_)
|
||||
#error You must enable USE_XMIN_PLUG or USE_XMAX_PLUG
|
||||
#elif DISABLED(USE_YMIN_PLUG) && DISABLED(USE_YMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _YMAX_ && Z2_USE_ENDSTOP <= _YMIN_)
|
||||
#error You must enable USE_YMIN_PLUG or USE_YMAX_PLUG
|
||||
#elif DISABLED(USE_ZMIN_PLUG) && DISABLED(USE_ZMAX_PLUG) && !(ENABLED(Z_DUAL_ENDSTOPS) && Z2_USE_ENDSTOP >= _ZMAX_ && Z2_USE_ENDSTOP <= _ZMIN_)
|
||||
#error You must enable USE_ZMIN_PLUG or USE_ZMAX_PLUG
|
||||
#elif ENABLED(Z_DUAL_ENDSTOPS) && !Z2_USE_ENDSTOP
|
||||
#error You must set Z2_USE_ENDSTOP with Z_DUAL_ENDSTOPS
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Warnings for old configurations
|
||||
*/
|
||||
|
@ -445,17 +456,21 @@
|
|||
#elif defined(CUSTOM_MENDEL_NAME)
|
||||
#error CUSTOM_MENDEL_NAME is now CUSTOM_MACHINE_NAME. Please update your configuration.
|
||||
#elif defined(HAS_AUTOMATIC_VERSIONING)
|
||||
#error HAS_AUTOMATIC_VERSIONING deprecated - use USE_AUTOMATIC_VERSIONING instead
|
||||
#error HAS_AUTOMATIC_VERSIONING is now USE_AUTOMATIC_VERSIONING. Please update your configuration.
|
||||
#elif defined(ENABLE_AUTO_BED_LEVELING)
|
||||
#error ENABLE_AUTO_BED_LEVELING deprecated - use AUTO_BED_LEVELING_FEATURE instead
|
||||
#error ENABLE_AUTO_BED_LEVELING is now AUTO_BED_LEVELING_FEATURE. Please update your configuration.
|
||||
#elif defined(SDSLOW)
|
||||
#error SDSLOW deprecated - set SPI_SPEED to SPI_HALF_SPEED instead
|
||||
#error SDSLOW deprecated. Set SPI_SPEED to SPI_HALF_SPEED instead.
|
||||
#elif defined(SDEXTRASLOW)
|
||||
#error SDEXTRASLOW deprecated - set SPI_SPEED to SPI_QUARTER_SPEED instead
|
||||
#error SDEXTRASLOW deprecated. Set SPI_SPEED to SPI_QUARTER_SPEED instead.
|
||||
#elif defined(Z_RAISE_BEFORE_HOMING)
|
||||
#error Z_RAISE_BEFORE_HOMING is deprecated. Use MIN_Z_HEIGHT_FOR_HOMING instead.
|
||||
#elif defined(FILAMENT_SENSOR)
|
||||
#error FILAMENT_SENSOR is deprecated. Use FILAMENT_WIDTH_SENSOR instead.
|
||||
#elif defined(DISABLE_MAX_ENDSTOPS) || defined(DISABLE_MIN_ENDSTOPS)
|
||||
#error DISABLE_MAX_ENDSTOPS and DISABLE_MIN_ENDSTOPS deprecated. Use individual USE_*_PLUG options instead.
|
||||
#elif ENABLED(Z_DUAL_ENDSTOPS) && !defined(Z2_USE_ENDSTOP)
|
||||
#error Z_DUAL_ENDSTOPS settings are simplified. Just set Z2_USE_ENDSTOP to the endstop you want to repurpose for Z2
|
||||
#endif
|
||||
|
||||
#endif //SANITYCHECK_H
|
||||
|
|
|
@ -365,6 +365,7 @@ bool Sd2Card::init(uint8_t sckRateID, uint8_t chipSelectPin) {
|
|||
#if DISABLED(SOFTWARE_SPI)
|
||||
return setSckRate(sckRateID);
|
||||
#else // SOFTWARE_SPI
|
||||
UNUSED(sckRateID);
|
||||
return true;
|
||||
#endif // SOFTWARE_SPI
|
||||
|
||||
|
|
|
@ -348,11 +348,11 @@ void CardReader::openFile(char* name, bool read, bool push_current/*=false*/) {
|
|||
char *dirname_start, *dirname_end;
|
||||
if (name[0] == '/') {
|
||||
dirname_start = &name[1];
|
||||
while (dirname_start > 0) {
|
||||
while (dirname_start != NULL) {
|
||||
dirname_end = strchr(dirname_start, '/');
|
||||
//SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name));
|
||||
//SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end - name));
|
||||
if (dirname_end > 0 && dirname_end > dirname_start) {
|
||||
if (dirname_end != NULL && dirname_end > dirname_start) {
|
||||
char subdirname[FILENAME_LENGTH];
|
||||
strncpy(subdirname, dirname_start, dirname_end - dirname_start);
|
||||
subdirname[dirname_end - dirname_start] = 0;
|
||||
|
@ -429,11 +429,11 @@ void CardReader::removeFile(char* name) {
|
|||
char *dirname_start, *dirname_end;
|
||||
if (name[0] == '/') {
|
||||
dirname_start = strchr(name, '/') + 1;
|
||||
while (dirname_start > 0) {
|
||||
while (dirname_start != NULL) {
|
||||
dirname_end = strchr(dirname_start, '/');
|
||||
//SERIAL_ECHO("start:");SERIAL_ECHOLN((int)(dirname_start - name));
|
||||
//SERIAL_ECHO("end :");SERIAL_ECHOLN((int)(dirname_end - name));
|
||||
if (dirname_end > 0 && dirname_end > dirname_start) {
|
||||
if (dirname_end != NULL && dirname_end > dirname_start) {
|
||||
char subdirname[FILENAME_LENGTH];
|
||||
strncpy(subdirname, dirname_start, dirname_end - dirname_start);
|
||||
subdirname[dirname_end - dirname_start] = 0;
|
||||
|
|
|
@ -328,7 +328,7 @@ void Config_StoreSettings() {
|
|||
|
||||
// Report storage size
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPAIR("Settings Stored (", (unsigned long)i);
|
||||
SERIAL_ECHOPAIR("Settings Stored (", i);
|
||||
SERIAL_ECHOLNPGM(" bytes)");
|
||||
}
|
||||
|
||||
|
@ -507,7 +507,7 @@ void Config_RetrieveSettings() {
|
|||
// Report settings retrieved and length
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHO(ver);
|
||||
SERIAL_ECHOPAIR(" stored settings retrieved (", (unsigned long)i);
|
||||
SERIAL_ECHOPAIR(" stored settings retrieved (", i);
|
||||
SERIAL_ECHOLNPGM(" bytes)");
|
||||
}
|
||||
|
||||
|
@ -730,9 +730,9 @@ void Config_PrintSettings(bool forReplay) {
|
|||
SERIAL_ECHOLNPGM("Mesh bed leveling:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M420 S", (unsigned long)mbl.active);
|
||||
SERIAL_ECHOPAIR(" X", (unsigned long)MESH_NUM_X_POINTS);
|
||||
SERIAL_ECHOPAIR(" Y", (unsigned long)MESH_NUM_Y_POINTS);
|
||||
SERIAL_ECHOPAIR(" M420 S", mbl.active);
|
||||
SERIAL_ECHOPAIR(" X", MESH_NUM_X_POINTS);
|
||||
SERIAL_ECHOPAIR(" Y", MESH_NUM_Y_POINTS);
|
||||
SERIAL_EOL;
|
||||
for (uint8_t y = 0; y < MESH_NUM_Y_POINTS; y++) {
|
||||
for (uint8_t x = 0; x < MESH_NUM_X_POINTS; x++) {
|
||||
|
@ -783,14 +783,14 @@ void Config_PrintSettings(bool forReplay) {
|
|||
SERIAL_ECHOLNPGM("Material heatup parameters:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M145 S0 H", (unsigned long)plaPreheatHotendTemp);
|
||||
SERIAL_ECHOPAIR(" B", (unsigned long)plaPreheatHPBTemp);
|
||||
SERIAL_ECHOPAIR(" F", (unsigned long)plaPreheatFanSpeed);
|
||||
SERIAL_ECHOPAIR(" M145 S0 H", plaPreheatHotendTemp);
|
||||
SERIAL_ECHOPAIR(" B", plaPreheatHPBTemp);
|
||||
SERIAL_ECHOPAIR(" F", plaPreheatFanSpeed);
|
||||
SERIAL_EOL;
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M145 S1 H", (unsigned long)absPreheatHotendTemp);
|
||||
SERIAL_ECHOPAIR(" B", (unsigned long)absPreheatHPBTemp);
|
||||
SERIAL_ECHOPAIR(" F", (unsigned long)absPreheatFanSpeed);
|
||||
SERIAL_ECHOPAIR(" M145 S1 H", absPreheatHotendTemp);
|
||||
SERIAL_ECHOPAIR(" B", absPreheatHPBTemp);
|
||||
SERIAL_ECHOPAIR(" F", absPreheatFanSpeed);
|
||||
SERIAL_EOL;
|
||||
#endif // ULTIPANEL
|
||||
|
||||
|
@ -805,7 +805,7 @@ void Config_PrintSettings(bool forReplay) {
|
|||
if (forReplay) {
|
||||
for (uint8_t i = 0; i < EXTRUDERS; i++) {
|
||||
CONFIG_ECHO_START;
|
||||
SERIAL_ECHOPAIR(" M301 E", (unsigned long)i);
|
||||
SERIAL_ECHOPAIR(" M301 E", i);
|
||||
SERIAL_ECHOPAIR(" P", PID_PARAM(Kp, i));
|
||||
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, i)));
|
||||
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, i)));
|
||||
|
@ -848,7 +848,7 @@ void Config_PrintSettings(bool forReplay) {
|
|||
SERIAL_ECHOLNPGM("LCD Contrast:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M250 C", (unsigned long)lcd_contrast);
|
||||
SERIAL_ECHOPAIR(" M250 C", lcd_contrast);
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
|
||||
|
@ -882,7 +882,7 @@ void Config_PrintSettings(bool forReplay) {
|
|||
SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M209 S", (unsigned long)(autoretract_enabled ? 1 : 0));
|
||||
SERIAL_ECHOPAIR(" M209 S", (autoretract_enabled ? 1 : 0));
|
||||
SERIAL_EOL;
|
||||
|
||||
#endif // FWRETRACT
|
||||
|
|
|
@ -334,9 +334,8 @@ static void lcd_implementation_status_screen() {
|
|||
}
|
||||
|
||||
u8g.setPrintPos(80,48);
|
||||
if (print_job_start_ms != 0) {
|
||||
uint16_t time = (((print_job_stop_ms > print_job_start_ms)
|
||||
? print_job_stop_ms : millis()) - print_job_start_ms) / 60000;
|
||||
uint16_t time = print_job_timer.duration() / 60;
|
||||
if (time != 0) {
|
||||
lcd_print(itostr2(time/60));
|
||||
lcd_print(':');
|
||||
lcd_print(itostr2(time%60));
|
||||
|
@ -599,7 +598,7 @@ void lcd_implementation_drawedit(const char* pstr, const char* value) {
|
|||
|
||||
#endif //SDSUPPORT
|
||||
|
||||
#define lcd_implementation_drawmenu_back(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
|
||||
#define lcd_implementation_drawmenu_back(sel, row, pstr) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
|
||||
#define lcd_implementation_drawmenu_submenu(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', LCD_STR_ARROW_RIGHT[0])
|
||||
#define lcd_implementation_drawmenu_gcode(sel, row, pstr, gcode) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
|
||||
#define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
|
||||
|
|
|
@ -328,8 +328,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -352,8 +366,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -692,9 +704,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -325,8 +325,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -349,8 +363,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -689,9 +701,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -338,8 +338,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -362,8 +376,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -701,9 +713,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -340,8 +340,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -364,8 +378,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic o
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -703,9 +715,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -363,8 +363,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -387,8 +401,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -726,9 +738,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -207,9 +207,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -661,6 +659,38 @@ const unsigned int dropsegments = 2; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -346,8 +346,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -370,8 +384,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -709,9 +721,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -340,8 +340,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -364,8 +378,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -704,9 +716,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -354,8 +354,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
//#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
//#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -378,8 +392,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -717,9 +729,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -367,8 +367,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -391,8 +405,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -730,9 +742,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -209,9 +209,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -663,6 +661,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -338,8 +338,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -362,8 +376,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -701,9 +713,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -346,8 +346,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -370,8 +384,6 @@ const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -709,9 +721,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -381,8 +381,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
//#define USE_XMIN_PLUG
|
||||
//#define USE_YMIN_PLUG
|
||||
//#define USE_ZMIN_PLUG
|
||||
#define USE_XMAX_PLUG
|
||||
#define USE_YMAX_PLUG
|
||||
#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -405,8 +419,6 @@ const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing.
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -831,9 +843,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -657,6 +655,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -381,8 +381,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
//#define USE_XMIN_PLUG
|
||||
//#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG // a Z probe
|
||||
#define USE_XMAX_PLUG
|
||||
#define USE_YMAX_PLUG
|
||||
#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -405,8 +419,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing.
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -831,9 +843,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -657,6 +655,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -381,8 +381,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
//#define USE_XMIN_PLUG
|
||||
//#define USE_YMIN_PLUG
|
||||
//#define USE_ZMIN_PLUG
|
||||
#define USE_XMAX_PLUG
|
||||
#define USE_YMAX_PLUG
|
||||
#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -405,8 +419,6 @@ const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing.
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -835,9 +847,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -656,6 +654,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -370,8 +370,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
//#define USE_XMIN_PLUG
|
||||
//#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG // a Z probe
|
||||
#define USE_XMAX_PLUG
|
||||
#define USE_YMAX_PLUG
|
||||
#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -394,8 +408,6 @@ const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS // Deltas only use min endstops for probing.
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -828,9 +840,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -206,9 +206,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -661,6 +659,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -374,8 +374,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
//#define USE_XMIN_PLUG
|
||||
//#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG // a Z probe
|
||||
#define USE_XMAX_PLUG
|
||||
#define USE_YMAX_PLUG
|
||||
#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
//#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -398,8 +412,6 @@ const bool X_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic o
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -745,9 +757,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -349,8 +349,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
//#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -373,8 +387,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -712,9 +724,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -336,8 +336,22 @@
|
|||
// Enable this option for Toshiba steppers
|
||||
#define CONFIG_STEPPERS_TOSHIBA
|
||||
|
||||
//===========================================================================
|
||||
//============================== Endstop Settings ===========================
|
||||
//===========================================================================
|
||||
|
||||
// @section homing
|
||||
|
||||
// Specify here all the endstop connectors that are connected to any endstop or probe.
|
||||
// Almost all printers will be using one per axis. Probes will use one or more of the
|
||||
// extra connectors. Leave undefined any used for non-endstop and non-probe purposes.
|
||||
#define USE_XMIN_PLUG
|
||||
#define USE_YMIN_PLUG
|
||||
#define USE_ZMIN_PLUG
|
||||
//#define USE_XMAX_PLUG
|
||||
//#define USE_YMAX_PLUG
|
||||
//#define USE_ZMAX_PLUG
|
||||
|
||||
// coarse Endstop Settings
|
||||
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors
|
||||
|
||||
|
@ -360,8 +374,6 @@ const bool X_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
|
|||
const bool Y_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the logic of the endstop.
|
||||
//#define DISABLE_MAX_ENDSTOPS
|
||||
//#define DISABLE_MIN_ENDSTOPS
|
||||
|
||||
//===========================================================================
|
||||
//============================= Z Probe Options =============================
|
||||
|
@ -703,9 +715,12 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
|
|||
// Host Keepalive
|
||||
//
|
||||
// By default Marlin will send a busy status message to the host
|
||||
// every 10 seconds when it can't accept commands.
|
||||
// every couple of seconds when it can't accept commands.
|
||||
//
|
||||
//#define DISABLE_HOST_KEEPALIVE // Enable this option if your host doesn't like keepalive messages.
|
||||
#if DISABLED(DISABLE_HOST_KEEPALIVE)
|
||||
#define DEFAULT_KEEPALIVE_INTERVAL 2 // Number of seconds between "busy" messages. Set with M113.
|
||||
#endif
|
||||
|
||||
//
|
||||
// M100 Free Memory Watcher
|
||||
|
|
|
@ -201,9 +201,7 @@
|
|||
//#define Z_DUAL_ENDSTOPS
|
||||
|
||||
#if ENABLED(Z_DUAL_ENDSTOPS)
|
||||
#define Z2_MAX_PIN 36 //Endstop used for Z2 axis. In this case I'm using XMAX in a Rumba Board (pin 36)
|
||||
const bool Z2_MAX_ENDSTOP_INVERTING = false;
|
||||
#define DISABLE_XMAX_ENDSTOP //Better to disable the XMAX to avoid conflict. Just rename "XMAX_ENDSTOP" by the endstop you are using for Z2 axis.
|
||||
#define Z2_USE_ENDSTOP _XMAX_
|
||||
#endif
|
||||
|
||||
#endif // Z_DUAL_STEPPER_DRIVERS
|
||||
|
@ -655,6 +653,38 @@ const unsigned int dropsegments = 5; //everything with less than this number of
|
|||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* TWI/I2C BUS
|
||||
*
|
||||
* This feature is an EXPERIMENTAL feature so it shall not be used on production
|
||||
* machines. Enabling this will allow you to send and receive I2C data from slave
|
||||
* devices on the bus.
|
||||
*
|
||||
* ; Example #1
|
||||
* ; This macro send the string "Marlin" to the slave device with address 0x63
|
||||
* ; It uses multiple M155 commands with one B<base 10> arg
|
||||
* M155 A63 ; Target slave address
|
||||
* M155 B77 ; M
|
||||
* M155 B97 ; a
|
||||
* M155 B114 ; r
|
||||
* M155 B108 ; l
|
||||
* M155 B105 ; i
|
||||
* M155 B110 ; n
|
||||
* M155 S1 ; Send the current buffer
|
||||
*
|
||||
* ; Example #2
|
||||
* ; Request 6 bytes from slave device with address 0x63
|
||||
* M156 A63 B5
|
||||
*
|
||||
* ; Example #3
|
||||
* ; Example serial output of a M156 request
|
||||
* echo:i2c-reply: from:63 bytes:5 data:hello
|
||||
*/
|
||||
|
||||
// @section i2cbus
|
||||
|
||||
//#define EXPERIMENTAL_I2CBUS
|
||||
|
||||
#include "Conditionals.h"
|
||||
#include "SanityCheck.h"
|
||||
|
||||
|
|
|
@ -21,6 +21,3 @@ For the second half of the font we now support up to 11x11 pixel.
|
|||
#else // fall-back
|
||||
* Add your font to the list of permitted fonts in 'language_en.h'
|
||||
... || ENABLED(DISPLAY_CHARSET_YOUR_NEW_FONT) ... )
|
||||
|
||||
|
||||
Especially the Kana font should be revised by someone who knows what he/she does. I am only a west-European with very little knowledge about this script.
|
||||
|
|
|
@ -82,6 +82,12 @@
|
|||
#endif
|
||||
|
||||
#ifndef DEFAULT_SOURCE_URL
|
||||
/**
|
||||
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
|
||||
* Code which is installed on the device. In most cases —unless the manufacturer
|
||||
* has a distinct Github fork— the Source Code URL should just be the main
|
||||
* Marlin repository.
|
||||
*/
|
||||
#define DEFAULT_SOURCE_URL "https://github.com/MarlinFirmware/Marlin"
|
||||
#endif
|
||||
|
||||
|
@ -225,7 +231,7 @@
|
|||
#define MSG_T_MINTEMP "MINTEMP triggered"
|
||||
|
||||
// Debug
|
||||
#define MSG_DEBUG_PREFIX "DEBUG: "
|
||||
#define MSG_DEBUG_PREFIX "DEBUG:"
|
||||
#define MSG_DEBUG_OFF "off"
|
||||
#define MSG_DEBUG_ECHO "ECHO"
|
||||
#define MSG_DEBUG_INFO "INFO"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Establir zero"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Задай Начало"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Изходна точка"
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Establir origen"
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "\xbe\xbf\xbb\xbc\xbd\xc0\xc1"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "\xbe\xbf\xbc\xbd"
|
||||
|
|
|
@ -47,10 +47,11 @@
|
|||
#define MSG_DISABLE_STEPPERS "Uvolnit motory"
|
||||
#define MSG_AUTO_HOME "Domovska pozice"
|
||||
#define MSG_LEVEL_BED_HOMING "Mereni podlozky"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_WAITING "Kliknutim spustte"
|
||||
#define MSG_LEVEL_BED_DONE "Mereni hotovo!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Storno"
|
||||
#define MSG_SET_HOME_OFFSETS "Nastavit ofsety"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Ofsety nastaveny"
|
||||
#define MSG_SET_ORIGIN "Nastavit pocatek"
|
||||
#define MSG_PREHEAT_PLA "Zahrat PLA"
|
||||
#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
|
||||
|
@ -77,6 +78,7 @@
|
|||
#define MSG_MOVE_1MM "Posunout o 1mm"
|
||||
#define MSG_MOVE_10MM "Posunout o 10mm"
|
||||
#define MSG_SPEED "Rychlost"
|
||||
#define MSG_BED_Z "Vyska podl."
|
||||
#define MSG_NOZZLE "Tryska"
|
||||
#define MSG_BED "Podlozka"
|
||||
#define MSG_FAN_SPEED "Rychlost vent."
|
||||
|
|
|
@ -44,10 +44,11 @@
|
|||
#define MSG_COOLDOWN "Afkøl"
|
||||
#define MSG_DISABLE_STEPPERS "Slå stepper fra"
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS "Sæt home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_LEVEL_BED_WAITING "Tryk for at starte"
|
||||
#define MSG_LEVEL_BED_DONE "Justering er færdig!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Annuller"
|
||||
#define MSG_SET_HOME_OFFSETS "Sæt forskyding til udgangsposition"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Forskydninger er tilføjet"
|
||||
#define MSG_SET_ORIGIN "Sæt origin"
|
||||
#define MSG_SWITCH_PS_ON "Slå strøm til"
|
||||
#define MSG_SWITCH_PS_OFF "Slå strøm fra"
|
||||
|
@ -83,8 +84,8 @@
|
|||
#define MSG_MAX " \002 Max"
|
||||
#define MSG_FACTOR " \002 Fact"
|
||||
#define MSG_AUTOTEMP "Autotemp"
|
||||
#define MSG_ON "On "
|
||||
#define MSG_OFF "Off"
|
||||
#define MSG_ON "Til "
|
||||
#define MSG_OFF "Fra"
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
|
@ -127,10 +128,10 @@
|
|||
#define MSG_DWELL "Dvale..."
|
||||
#define MSG_USERWAIT "Venter på bruger..."
|
||||
#define MSG_RESUMING "Forsætter printet"
|
||||
#define MSG_PRINT_ABORTED "Print annuleret"
|
||||
#define MSG_NO_MOVE "No move."
|
||||
#define MSG_KILLED "KILLED. "
|
||||
#define MSG_STOPPED "STOPPED. "
|
||||
#define MSG_PRINT_ABORTED "Print annulleret"
|
||||
#define MSG_NO_MOVE "Ingen bevægelse."
|
||||
#define MSG_KILLED "DRÆBT. "
|
||||
#define MSG_STOPPED "STOPPET. "
|
||||
#define MSG_CONTROL_RETRACT "Tilbagetraek mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Skift Re.mm"
|
||||
#define MSG_CONTROL_RETRACTF "Tilbagetræk V"
|
||||
|
|
|
@ -43,10 +43,11 @@
|
|||
#define MSG_DISABLE_STEPPERS "Motoren Aus" // M84
|
||||
#define MSG_AUTO_HOME "Home" // G28
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_WAITING "Klick für Start"
|
||||
#define MSG_LEVEL_BED_DONE "Fertig"
|
||||
#define MSG_LEVEL_BED_CANCEL "Abbruch"
|
||||
#define MSG_SET_HOME_OFFSETS "Setze Home hier"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets aktiv"
|
||||
#define MSG_SET_ORIGIN "Setze Null hier" //"G92 X0 Y0 Z0" commented out in ultralcd.cpp
|
||||
#define MSG_PREHEAT_PLA "Vorwärmen PLA"
|
||||
#define MSG_PREHEAT_PLA_N "Vorwärmen PLA "
|
||||
|
@ -61,8 +62,10 @@
|
|||
#define MSG_COOLDOWN "Abkühlen"
|
||||
#define MSG_SWITCH_PS_ON "Netzteil Ein"
|
||||
#define MSG_SWITCH_PS_OFF "Netzteil Aus"
|
||||
#define MSG_EXTRUDE "Extrude"
|
||||
#define MSG_RETRACT "Retract"
|
||||
#define MSG_MOVE_AXIS "Bewegen"
|
||||
#define MSG_LEVEL_BED "Bett Korrektur"
|
||||
#define MSG_MOVE_X "X"
|
||||
#define MSG_MOVE_Y "Y"
|
||||
#define MSG_MOVE_Z "Z"
|
||||
|
@ -71,6 +74,7 @@
|
|||
#define MSG_MOVE_1MM " 1.0 mm"
|
||||
#define MSG_MOVE_10MM "10.0 mm"
|
||||
#define MSG_SPEED "Geschw."
|
||||
#define MSG_BED_Z "Bett Z"
|
||||
#define MSG_NOZZLE "Düse"
|
||||
#define MSG_BED "Bett"
|
||||
#define MSG_FAN_SPEED "Lüftergeschw."
|
||||
|
@ -99,6 +103,7 @@
|
|||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "A max " // space by purpose
|
||||
#define MSG_A_RETRACT "A Retract"
|
||||
#define MSG_A_TRAVEL "A Travel"
|
||||
#define MSG_XSTEPS "X steps/mm"
|
||||
#define MSG_YSTEPS "Y steps/mm"
|
||||
#define MSG_ZSTEPS "Z steps/mm"
|
||||
|
@ -146,6 +151,13 @@
|
|||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT "Endstop Abbr. Ein"
|
||||
#define MSG_HEATING_FAILED_LCD "Err: Heizt langsam"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: Temp. Redundanz"
|
||||
#define MSG_THERMAL_RUNAWAY "Err: Temp. Messung"
|
||||
#define MSG_ERR_MAXTEMP "Err: Max-Temp."
|
||||
#define MSG_ERR_MINTEMP "Err: Min-Temp."
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: Max-Temp. Bett"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: Min-Temp. Bett"
|
||||
#define MSG_END_HOUR "Stunden"
|
||||
#define MSG_END_MINUTE "Minuten"
|
||||
#define MSG_HEATING "Aufheizen..."
|
||||
|
@ -163,12 +175,10 @@
|
|||
#define MSG_ERR_MAXTEMP_BED "Temp. Bett ueberschr."
|
||||
#define MSG_ERR_MAXTEMP_BED "Temp. Bett unterschr."
|
||||
|
||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||
#define MSG_DELTA_CALIBRATE "Delta kalibrieren"
|
||||
#define MSG_DELTA_CALIBRATE_X "Kalibriere X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Kalibriere Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Kalibriere Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Kalibriere Mitte"
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
#define MSG_DELTA_CALIBRATE "Delta kalibrieren"
|
||||
#define MSG_DELTA_CALIBRATE_X "Kalibriere X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Kalibriere Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Kalibriere Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Kalibriere Mitte"
|
||||
|
||||
#endif // LANGUAGE_DE_H
|
||||
|
|
|
@ -70,6 +70,9 @@
|
|||
#ifndef MSG_LEVEL_BED_DONE
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#endif
|
||||
#ifndef MSG_LEVEL_BED_CANCEL
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#endif
|
||||
#ifndef MSG_SET_HOME_OFFSETS
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#endif
|
||||
|
|
|
@ -39,32 +39,33 @@
|
|||
#define MSG_SD_INSERTED "Tarjeta colocada"
|
||||
#define MSG_SD_REMOVED "Tarjeta retirada"
|
||||
#define MSG_MAIN "Menu principal"
|
||||
#define MSG_AUTOSTART "Autostart"
|
||||
#define MSG_AUTOSTART "Inicio automatico"
|
||||
#define MSG_DISABLE_STEPPERS "Apagar motores"
|
||||
#define MSG_AUTO_HOME "Llevar al origen"
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_HOMING "Origen XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS "Ajustar offsets"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Ajustar desfases"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Establecer cero"
|
||||
#define MSG_SET_ORIGIN "Establecer origen"
|
||||
#define MSG_PREHEAT_PLA "Precalentar PLA"
|
||||
#define MSG_PREHEAT_PLA_N "Precalentar PLA "
|
||||
#define MSG_PREHEAT_PLA_ALL "Precal. PLA Todo"
|
||||
#define MSG_PREHEAT_PLA_BEDONLY "Precal. PLA Base"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS "Ajustar temp. PLA"
|
||||
#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
|
||||
#define MSG_PREHEAT_PLA_ALL MSG_PREHEAT_PLA "Todo"
|
||||
#define MSG_PREHEAT_PLA_BEDONLY MSG_PREHEAT_PLA"Plataforma"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS MSG_PREHEAT_PLA "Config"
|
||||
#define MSG_PREHEAT_ABS "Precalentar ABS"
|
||||
#define MSG_PREHEAT_ABS_N "Precalentar ABS "
|
||||
#define MSG_PREHEAT_ABS_ALL "Precal. ABS Todo"
|
||||
#define MSG_PREHEAT_ABS_BEDONLY "Precal. ABS Base"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS "Ajustar temp. ABS"
|
||||
#define MSG_PREHEAT_ABS_N MSG_PREHEAT_ABS " "
|
||||
#define MSG_PREHEAT_ABS_ALL MSG_PREHEAT_ABS "Todo"
|
||||
#define MSG_PREHEAT_ABS_BEDONLY MSG_PREHEAT_ABS "Plataforma"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS "Config"
|
||||
#define MSG_COOLDOWN "Enfriar"
|
||||
#define MSG_SWITCH_PS_ON "Encender"
|
||||
#define MSG_SWITCH_PS_OFF "Apagar"
|
||||
#define MSG_EXTRUDE "Extruir"
|
||||
#define MSG_RETRACT "Retraer"
|
||||
#define MSG_MOVE_AXIS "Mover ejes"
|
||||
#define MSG_LEVEL_BED "Nivelar cama"
|
||||
#define MSG_LEVEL_BED "Nivelar plataforma"
|
||||
#define MSG_MOVE_X "Mover X"
|
||||
#define MSG_MOVE_Y "Mover Y"
|
||||
#define MSG_MOVE_Z "Mover Z"
|
||||
|
@ -73,22 +74,22 @@
|
|||
#define MSG_MOVE_1MM "Mover 1mm"
|
||||
#define MSG_MOVE_10MM "Mover 10mm"
|
||||
#define MSG_SPEED "Velocidad"
|
||||
#define MSG_NOZZLE "Fusor"
|
||||
#define MSG_BED "Base"
|
||||
#define MSG_NOZZLE "Boquilla"
|
||||
#define MSG_BED "Plataforma"
|
||||
#define MSG_FAN_SPEED "Ventilador"
|
||||
#define MSG_FLOW "Flujo"
|
||||
#define MSG_CONTROL "Control"
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " Min"
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " Max"
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " Fact"
|
||||
#define MSG_AUTOTEMP "Autotemp"
|
||||
#define MSG_ON "On"
|
||||
#define MSG_OFF "Off"
|
||||
#define MSG_AUTOTEMP "Temperatura Automatica"
|
||||
#define MSG_ON "Encender"
|
||||
#define MSG_OFF "Apagar"
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_ACC "Acel"
|
||||
#define MSG_ACC "Aceleracion"
|
||||
#define MSG_VXY_JERK "Vxy-jerk"
|
||||
#define MSG_VZ_JERK "Vz-jerk"
|
||||
#define MSG_VE_JERK "Ve-jerk"
|
||||
|
@ -98,9 +99,9 @@
|
|||
#define MSG_Z "z"
|
||||
#define MSG_E "e"
|
||||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "Vvacio min"
|
||||
#define MSG_AMAX "Amax"
|
||||
#define MSG_A_RETRACT "A-retrac."
|
||||
#define MSG_VTRAV_MIN "Vel. viaje min"
|
||||
#define MSG_AMAX "Acel. max"
|
||||
#define MSG_A_RETRACT "Acel. retrac."
|
||||
#define MSG_XSTEPS "X pasos/mm"
|
||||
#define MSG_YSTEPS "Y pasos/mm"
|
||||
#define MSG_ZSTEPS "Z pasos/mm"
|
||||
|
@ -113,23 +114,23 @@
|
|||
#define MSG_CONTRAST "Contraste"
|
||||
#define MSG_STORE_EPROM "Guardar memoria"
|
||||
#define MSG_LOAD_EPROM "Cargar memoria"
|
||||
#define MSG_RESTORE_FAILSAFE "Rest. de emergen."
|
||||
#define MSG_RESTORE_FAILSAFE "Restaurar memoria."
|
||||
#define MSG_REFRESH "Volver a cargar"
|
||||
#define MSG_WATCH "Monitorizar"
|
||||
#define MSG_PREPARE "Preparar"
|
||||
#define MSG_TUNE "Ajustar"
|
||||
#define MSG_PAUSE_PRINT "Pausar impresion"
|
||||
#define MSG_RESUME_PRINT "Reanudar impres."
|
||||
#define MSG_RESUME_PRINT "Reanudar impresion"
|
||||
#define MSG_STOP_PRINT "Detener impresion"
|
||||
#define MSG_CARD_MENU "Menu de SD"
|
||||
#define MSG_NO_CARD "No hay tarjeta SD"
|
||||
#define MSG_DWELL "Reposo..."
|
||||
#define MSG_USERWAIT "Esperando ordenes"
|
||||
#define MSG_RESUMING "Resumiendo impre."
|
||||
#define MSG_PRINT_ABORTED "Print aborted"
|
||||
#define MSG_PRINT_ABORTED "Impresion cancelada"
|
||||
#define MSG_NO_MOVE "Sin movimiento"
|
||||
#define MSG_KILLED "PARADA DE EMERG."
|
||||
#define MSG_STOPPED "PARADA"
|
||||
#define MSG_KILLED "Parada de emergencia."
|
||||
#define MSG_STOPPED "Detenida"
|
||||
#define MSG_CONTROL_RETRACT "Retraer mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Interc. Retraer mm"
|
||||
#define MSG_CONTROL_RETRACTF "Retraer V"
|
||||
|
@ -137,19 +138,32 @@
|
|||
#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Interc. DesRet +mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "DesRet V"
|
||||
#define MSG_AUTORETRACT "AutoRetr."
|
||||
#define MSG_AUTORETRACT "Retraccion Auto."
|
||||
#define MSG_FILAMENTCHANGE "Cambiar filamento"
|
||||
#define MSG_INIT_SDCARD "Iniciando tarjeta"
|
||||
#define MSG_CNG_SDCARD "Cambiar tarjeta"
|
||||
#define MSG_ZPROBE_OUT "Sonda Z fuera"
|
||||
#define MSG_YX_UNHOMED "Reiniciar X/Y y Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Offset Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Desfase Z"
|
||||
#define MSG_BABYSTEP_X "Micropaso X"
|
||||
#define MSG_BABYSTEP_Y "Micropaso Y"
|
||||
#define MSG_BABYSTEP_Z "Micropaso Z"
|
||||
#define MSG_ENDSTOP_ABORT "Endstop abort"
|
||||
#define MSG_END_HOUR "horas"
|
||||
#define MSG_END_MINUTE "minutos"
|
||||
#define MSG_BED_Z "Plataforma Z"
|
||||
#define MSG_A_TRAVEL "Acel. Viaje"
|
||||
#define MSG_HEATING_FAILED_LCD "Error: al calentar"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Error: temperatura redundante"
|
||||
#define MSG_THERMAL_RUNAWAY "Error de temperatura"
|
||||
#define MSG_ERR_MAXTEMP "Error: Temp Maxima"
|
||||
#define MSG_ERR_MINTEMP "Error: Temp Minima"
|
||||
#define MSG_ERR_MAXTEMP_BED "Error: Temp Max Plataforma"
|
||||
#define MSG_ERR_MINTEMP_BED "Error: Temp Min Plataforma"
|
||||
#define MSG_HEATING "Calentando..."
|
||||
#define MSG_HEATING_COMPLETE "Calentamiento Completo"
|
||||
#define MSG_BED_HEATING "Calentando plataforma ..."
|
||||
#define MSG_BED_DONE "Plataforma Caliente"
|
||||
|
||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||
#define MSG_DELTA_CALIBRATE "Calibracion Delta"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Hasiera ipini"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Aseta origo"
|
||||
|
|
|
@ -42,12 +42,13 @@
|
|||
#define MSG_MAIN "Menu principal"
|
||||
#define MSG_AUTOSTART "Demarrage auto"
|
||||
#define MSG_DISABLE_STEPPERS "Arreter moteurs"
|
||||
#define MSG_AUTO_HOME "Home auto."
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_AUTO_HOME "Origine auto."
|
||||
#define MSG_LEVEL_BED_HOMING "Origine XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Cliquer pour commencer"
|
||||
#define MSG_LEVEL_BED_DONE "Mise a niveau OK!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Annuler"
|
||||
#define MSG_SET_HOME_OFFSETS "Regler decal. origine"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Decalages appliques"
|
||||
#define MSG_SET_ORIGIN "Regler origine"
|
||||
#define MSG_PREHEAT_PLA "Prechauffage PLA"
|
||||
#define MSG_PREHEAT_PLA_N "Prechauff. PLA "
|
||||
|
@ -109,8 +110,8 @@
|
|||
#define MSG_TEMPERATURE "Temperature"
|
||||
#define MSG_MOTION "Mouvement"
|
||||
#define MSG_VOLUMETRIC "Filament"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_FILAMENT_DIAM "Fil. Dia."
|
||||
#define MSG_VOLUMETRIC_ENABLED "E en mm3"
|
||||
#define MSG_FILAMENT_DIAM "Diam. Fil."
|
||||
#define MSG_CONTRAST "Contraste LCD"
|
||||
#define MSG_STORE_EPROM "Sauver config"
|
||||
#define MSG_LOAD_EPROM "Lire config"
|
||||
|
@ -144,20 +145,34 @@
|
|||
#define MSG_CNG_SDCARD "Changer de carte"
|
||||
#define MSG_ZPROBE_OUT "Z sonde exte. lit"
|
||||
#define MSG_YX_UNHOMED "Rev. dans XY av.Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Offset Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Decalage Z"
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT "Butee abandon"
|
||||
#define MSG_END_HOUR "heures"
|
||||
#define MSG_END_MINUTE "minutes"
|
||||
#define MSG_BED_Z "Plateau Z"
|
||||
#define MSG_A_TRAVEL "A-Depl."
|
||||
#define MSG_HEATING_FAILED_LCD "Erreur de chauffe"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: ERREUR TEMP. REDONDANTE"
|
||||
#define MSG_THERMAL_RUNAWAY "EMBALLEMENT THERMIQUE"
|
||||
#define MSG_ERR_MAXTEMP "Err: TEMP. MAX"
|
||||
#define MSG_ERR_MINTEMP "Err: TEMP. MIN"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: TEMP. MAX PLATEAU"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: TEMP. MIN PLATEAU"
|
||||
#define MSG_HEATING "En chauffe..."
|
||||
#define MSG_HEATING_COMPLETE "Chauffe terminee"
|
||||
#define MSG_BED_HEATING "Plateau en chauffe..."
|
||||
#define MSG_BED_DONE "Chauffe plateau terminee"
|
||||
|
||||
|
||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibration"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrate X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrate Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrate Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrate Center"
|
||||
#define MSG_DELTA_CALIBRATE "Calibration Delta"
|
||||
#define MSG_DELTA_CALIBRATE_X "Calibrer X"
|
||||
#define MSG_DELTA_CALIBRATE_Y "Calibrer Y"
|
||||
#define MSG_DELTA_CALIBRATE_Z "Calibrer Z"
|
||||
#define MSG_DELTA_CALIBRATE_CENTER "Calibrer centre"
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
|
||||
#endif // LANGUAGE_FR_H
|
||||
|
|
|
@ -42,29 +42,30 @@
|
|||
#define MSG_AUTOSTART "Autostart"
|
||||
#define MSG_DISABLE_STEPPERS "Disabilita Motori"
|
||||
#define MSG_AUTO_HOME "Auto Home"
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS "Setta offset home"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_LEVEL_BED_HOMING "Home assi XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Premi per Iniziare"
|
||||
#define MSG_LEVEL_BED_DONE "Livel. terminato!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Annulla"
|
||||
#define MSG_SET_HOME_OFFSETS "Imp. offset home"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offset applicato"
|
||||
#define MSG_SET_ORIGIN "Imposta Origine"
|
||||
#define MSG_PREHEAT_PLA "Preriscalda PLA"
|
||||
#define MSG_PREHEAT_PLA_N "Preriscalda PLA "
|
||||
#define MSG_PREHEAT_PLA_ALL "Prer. PLA Tutto"
|
||||
#define MSG_PREHEAT_PLA_BEDONLY "Prer. PLA Piatto"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS "Config. prer. PLA"
|
||||
#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
|
||||
#define MSG_PREHEAT_PLA_ALL MSG_PREHEAT_PLA " Tutto"
|
||||
#define MSG_PREHEAT_PLA_BEDONLY MSG_PREHEAT_PLA " Piatto"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS MSG_PREHEAT_PLA " conf"
|
||||
#define MSG_PREHEAT_ABS "Preriscalda ABS"
|
||||
#define MSG_PREHEAT_ABS_N "Preriscalda ABS "
|
||||
#define MSG_PREHEAT_ABS_ALL "Prer. ABS Tutto"
|
||||
#define MSG_PREHEAT_ABS_BEDONLY "Prer. ABS Piatto"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS "Config. prer. ABS"
|
||||
#define MSG_PREHEAT_ABS_N MSG_PREHEAT_ABS " "
|
||||
#define MSG_PREHEAT_ABS_ALL MSG_PREHEAT_ABS " Tutto"
|
||||
#define MSG_PREHEAT_ABS_BEDONLY MSG_PREHEAT_ABS " Piatto"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS MSG_PREHEAT_ABS " conf"
|
||||
#define MSG_COOLDOWN "Raffredda"
|
||||
#define MSG_SWITCH_PS_ON "Accendi aliment."
|
||||
#define MSG_SWITCH_PS_OFF "Spegni aliment."
|
||||
#define MSG_EXTRUDE "Estrudi"
|
||||
#define MSG_RETRACT "Ritrai"
|
||||
#define MSG_MOVE_AXIS "Muovi Asse"
|
||||
#define MSG_LEVEL_BED "Livellamento piano"
|
||||
#define MSG_LEVEL_BED "Livella piano"
|
||||
#define MSG_MOVE_X "Muovi X"
|
||||
#define MSG_MOVE_Y "Muovi Y"
|
||||
#define MSG_MOVE_Z "Muovi Z"
|
||||
|
@ -72,34 +73,34 @@
|
|||
#define MSG_MOVE_01MM "Muovi di 0.1mm"
|
||||
#define MSG_MOVE_1MM "Muovi di 1mm"
|
||||
#define MSG_MOVE_10MM "Muovi di 10mm"
|
||||
#define MSG_SPEED "Velcità"
|
||||
#define MSG_SPEED "Velocità"
|
||||
#define MSG_NOZZLE "Ugello"
|
||||
#define MSG_BED "Piatto"
|
||||
#define MSG_FAN_SPEED "Ventola"
|
||||
#define MSG_FAN_SPEED "Velocità ventola"
|
||||
#define MSG_FLOW "Flusso"
|
||||
#define MSG_CONTROL "Controllo"
|
||||
#define MSG_MIN LCD_STR_THERMOMETER " Min"
|
||||
#define MSG_MAX LCD_STR_THERMOMETER " Max"
|
||||
#define MSG_FACTOR LCD_STR_THERMOMETER " Fact"
|
||||
#define MSG_AUTOTEMP "Autotemp"
|
||||
#define MSG_ON "ON "
|
||||
#define MSG_OFF "OFF"
|
||||
#define MSG_ON "On "
|
||||
#define MSG_OFF "Off"
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_ACC "Accel."
|
||||
#define MSG_ACC "Accel"
|
||||
#define MSG_VXY_JERK "Vxy-jerk"
|
||||
#define MSG_VZ_JERK "Vz-jerk"
|
||||
#define MSG_VE_JERK "Ve-jerk"
|
||||
#define MSG_VMAX "Vmax"
|
||||
#define MSG_VMAX "Vmax "
|
||||
#define MSG_X "x"
|
||||
#define MSG_Y "y"
|
||||
#define MSG_Z "z"
|
||||
#define MSG_E "e"
|
||||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax"
|
||||
#define MSG_AMAX "Amax "
|
||||
#define MSG_A_RETRACT "A-retract"
|
||||
#define MSG_XSTEPS "Xpassi/mm"
|
||||
#define MSG_YSTEPS "Ypassi/mm"
|
||||
|
@ -107,42 +108,42 @@
|
|||
#define MSG_ESTEPS "Epassi/mm"
|
||||
#define MSG_TEMPERATURE "Temperatura"
|
||||
#define MSG_MOTION "Movimento"
|
||||
#define MSG_VOLUMETRIC "Filament"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm³"
|
||||
#define MSG_VOLUMETRIC "Filamento"
|
||||
#define MSG_VOLUMETRIC_ENABLED "E in mm3"
|
||||
#define MSG_FILAMENT_DIAM "Diam. filo"
|
||||
#define MSG_CONTRAST "Contrasto LCD"
|
||||
#define MSG_STORE_EPROM "Salva in EEPROM"
|
||||
#define MSG_LOAD_EPROM "Carica da EEPROM"
|
||||
#define MSG_RESTORE_FAILSAFE "Impostaz. default"
|
||||
#define MSG_STORE_EPROM "Salva in memoria"
|
||||
#define MSG_LOAD_EPROM "Carica da memoria"
|
||||
#define MSG_RESTORE_FAILSAFE "Ripristina imp."
|
||||
#define MSG_REFRESH "Aggiorna"
|
||||
#define MSG_WATCH "Guarda"
|
||||
#define MSG_PREPARE "Prepara"
|
||||
#define MSG_TUNE "Adatta"
|
||||
#define MSG_TUNE "Regola"
|
||||
#define MSG_PAUSE_PRINT "Pausa"
|
||||
#define MSG_RESUME_PRINT "Riprendi stampa"
|
||||
#define MSG_STOP_PRINT "Arresta stampa"
|
||||
#define MSG_CARD_MENU "SD Card Menu"
|
||||
#define MSG_NO_CARD "No SD Card"
|
||||
#define MSG_CARD_MENU "Stampa da SD"
|
||||
#define MSG_NO_CARD "SD non presente"
|
||||
#define MSG_DWELL "Sospensione..."
|
||||
#define MSG_USERWAIT "Attendi Utente..."
|
||||
#define MSG_USERWAIT "Attendi Utente.."
|
||||
#define MSG_RESUMING "Riprendi Stampa"
|
||||
#define MSG_PRINT_ABORTED "Stampa abortita"
|
||||
#define MSG_PRINT_ABORTED "Stampa annullata"
|
||||
#define MSG_NO_MOVE "Nessun Movimento"
|
||||
#define MSG_KILLED "UCCISO "
|
||||
#define MSG_STOPPED "ARRESTATO "
|
||||
#define MSG_KILLED "UCCISO. "
|
||||
#define MSG_STOPPED "ARRESTATO. "
|
||||
#define MSG_CONTROL_RETRACT "Ritrai mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Scamb. Ritrai mm"
|
||||
#define MSG_CONTROL_RETRACTF "Ritrai V"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "Salta mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Scamb. UnRet +mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER_SWAP "Scamb. UnRet+mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "UnRet V"
|
||||
#define MSG_AUTORETRACT "AutoArretramento"
|
||||
#define MSG_AUTORETRACT "AutoRitrai"
|
||||
#define MSG_FILAMENTCHANGE "Cambia filamento"
|
||||
#define MSG_INIT_SDCARD "Iniz. SD-Card"
|
||||
#define MSG_CNG_SDCARD "Cambia SD-Card"
|
||||
#define MSG_ZPROBE_OUT "Z probe out. bed"
|
||||
#define MSG_YX_UNHOMED "Home X/Y before Z"
|
||||
#define MSG_YX_UNHOMED "Home X/Y prima di Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Z Offset"
|
||||
#define MSG_BABYSTEP_X "Babystep X"
|
||||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
|
@ -150,6 +151,20 @@
|
|||
#define MSG_ENDSTOP_ABORT "Finecorsa abort"
|
||||
#define MSG_END_HOUR "ore"
|
||||
#define MSG_END_MINUTE "minuti"
|
||||
#define MSG_BED_Z "piatto Z"
|
||||
#define MSG_A_TRAVEL "A-Spostamento"
|
||||
#define MSG_HEATING_FAILED_LCD "Riscald. Fallito"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: TEMP RIDONDANTI"
|
||||
#define MSG_THERMAL_RUNAWAY "TEMP FUORI CONTROLLO"
|
||||
#define MSG_ERR_MAXTEMP "Err: TEMP MASSIMA"
|
||||
#define MSG_ERR_MINTEMP "Err: TEMP MINIMA"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: TEMP MASSIMA PIATTO"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: TEMP MINIMA PIATTO"
|
||||
#define MSG_HEATING "Riscaldamento.."
|
||||
#define MSG_HEATING_COMPLETE "Risc. completato"
|
||||
#define MSG_BED_HEATING "Risc. Piatto.."
|
||||
#define MSG_BED_DONE "Piatto Pronto"
|
||||
|
||||
|
||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||
#define MSG_DELTA_CALIBRATE "Calibraz. Delta"
|
||||
|
|
|
@ -45,10 +45,11 @@
|
|||
#define MSG_DISABLE_STEPPERS "\xd3\xb0\xc0\xb0\xc3\xde\xdd\xb9\xde\xdd\x20\xb5\xcc" // "Disable steppers"
|
||||
#define MSG_AUTO_HOME "\xb9\xde\xdd\xc3\xdd\xc6\xb2\xc4\xde\xb3" // "Auto home"
|
||||
#define MSG_LEVEL_BED_HOMING "\xb9\xde\xdd\xc3\xdd\xc6\xb2\xc4\xde\xb3" // "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_WAITING "\xda\xcd\xde\xd8\xdd\xb8\xde\xb6\xb2\xbc" //"Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "\xda\xcd\xde\xd8\xdd\xb8\xde\xb6\xdd\xd8\xae\xb3" //"Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "\xc4\xd8\xd4\xd2" //"Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "\xb7\xbc\xde\xad\xdd\xb5\xcc\xbe\xaf\xc4\xbe\xaf\xc3\xb2" // "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "\xb5\xcc\xbe\xaf\xc4\x20\xc3\xb7\xd6\xb3\xbb\xda\xcf\xbc\xc0" //"Offsets applied"
|
||||
#define MSG_SET_ORIGIN "\xb7\xbc\xde\xad\xdd\xbe\xaf\xc4" // "Set origin"
|
||||
#define MSG_PREHEAT_PLA "PLA \xd6\xc8\xc2" // "Preheat PLA"
|
||||
#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
|
||||
|
|
|
@ -49,10 +49,11 @@
|
|||
#define MSG_DISABLE_STEPPERS "モーターデンゲン オフ" // "Disable steppers"
|
||||
#define MSG_AUTO_HOME "ゲンテンニイドウ" // "Auto home"
|
||||
#define MSG_LEVEL_BED_HOMING "ゲンテンニイドウ" // "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_WAITING "レベリングカイシ" //"Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "レベリングカンリョウ" //"Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "トリヤメ" //"Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "キジュンオフセットセッテイ" // "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "オフセット テキヨウサレマシタ" //"Offsets applied"
|
||||
#define MSG_SET_ORIGIN "キジュンセット" // "Set origin"
|
||||
#define MSG_PREHEAT_PLA "PLA ヨネツ" // "Preheat PLA"
|
||||
#define MSG_PREHEAT_PLA_N MSG_PREHEAT_PLA " "
|
||||
|
|
|
@ -38,14 +38,15 @@
|
|||
#define WELCOME_MSG MACHINE_NAME " gereed."
|
||||
#define MSG_SD_INSERTED "Kaart ingestoken"
|
||||
#define MSG_SD_REMOVED "Kaart verwijderd"
|
||||
#define MSG_MAIN "Main"
|
||||
#define MSG_MAIN "Hoofdmenu"
|
||||
#define MSG_AUTOSTART "Autostart"
|
||||
#define MSG_DISABLE_STEPPERS "Motoren uit"
|
||||
#define MSG_AUTO_HOME "Auto home"
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Zet home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Nulpunt instellen"
|
||||
#define MSG_PREHEAT_PLA "PLA voorverwarmen"
|
||||
|
@ -127,8 +128,8 @@
|
|||
#define MSG_RESUMING "Print hervatten"
|
||||
#define MSG_PRINT_ABORTED "Print afgebroken"
|
||||
#define MSG_NO_MOVE "Geen beweging."
|
||||
#define MSG_KILLED "AFGEBROKEN. "
|
||||
#define MSG_STOPPED "GESTOPT. "
|
||||
#define MSG_KILLED "Afgebroken. "
|
||||
#define MSG_STOPPED "Gestopt. "
|
||||
#define MSG_CONTROL_RETRACT "Retract mm"
|
||||
#define MSG_CONTROL_RETRACT_SWAP "Ruil Retract mm"
|
||||
#define MSG_CONTROL_RETRACTF "Retract F"
|
||||
|
@ -139,7 +140,7 @@
|
|||
#define MSG_AUTORETRACT "AutoRetr."
|
||||
#define MSG_FILAMENTCHANGE "Verv. Filament"
|
||||
#define MSG_INIT_SDCARD "Init. SD kaart"
|
||||
#define MSG_CNG_SDCARD "Verv. SD card"
|
||||
#define MSG_CNG_SDCARD "Verv. SD Kaart"
|
||||
#define MSG_ZPROBE_OUT "Z probe uit. bed"
|
||||
#define MSG_YX_UNHOMED "Home X/Y voor Z"
|
||||
#define MSG_ZPROBE_ZOFFSET "Z Offset"
|
||||
|
@ -149,6 +150,24 @@
|
|||
#define MSG_ENDSTOP_ABORT "Endstop afbr."
|
||||
#define MSG_END_HOUR "uur"
|
||||
#define MSG_END_MINUTE "minuten"
|
||||
#define MSG_BED_Z "Bed Z"
|
||||
#define MSG_A_TRAVEL "A-travel"
|
||||
#define MSG_HEATING_FAILED_LCD "voorverw. fout"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Redun. temp fout"
|
||||
#define MSG_THERMAL_RUNAWAY "Therm. wegloop"
|
||||
#define MSG_ERR_MAXTEMP "Err: Max. temp"
|
||||
#define MSG_ERR_MINTEMP "Err: Min. temp"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: Max.tmp bed"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: Min.tmp bed"
|
||||
#define MSG_HEATING "Voorwarmen..."
|
||||
#define MSG_HEATING_COMPLETE "Voorverw. kompl."
|
||||
#define MSG_BED_HEATING "Bed voorverw."
|
||||
#define MSG_BED_DONE "Bed is voorverw."
|
||||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Klik voor begin"
|
||||
#define MSG_LEVEL_BED_DONE "Bed level kompl."
|
||||
#define MSG_LEVEL_BED_CANCEL "Bed level afbr."
|
||||
#define MSG_HOME_OFFSETS_APPLIED "H offset toegep."
|
||||
|
||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||
#define MSG_DELTA_CALIBRATE "Delta Calibratie"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Set home offsets"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Ustaw punkt zero"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Ajustar Jogo"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Ajustar orig."
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Indo para origem"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Ajustar Jogo"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Ajustar orig."
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Indo para origem"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Definir desvio"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Definir origem"
|
||||
|
@ -72,6 +73,7 @@
|
|||
#define MSG_MOVE_1MM "Mover 1mm"
|
||||
#define MSG_MOVE_10MM "Mover 10mm"
|
||||
#define MSG_SPEED "Velocidade"
|
||||
#define MSG_BED_Z "Base Z"
|
||||
#define MSG_NOZZLE LCD_STR_THERMOMETER " Bico"
|
||||
#define MSG_BED LCD_STR_THERMOMETER " Base"
|
||||
#define MSG_FAN_SPEED "Vel. ventoinha"
|
||||
|
@ -103,7 +105,8 @@
|
|||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax "
|
||||
#define MSG_A_RETRACT "A-retract"
|
||||
#define MSG_A_RETRACT "A-retraccao"
|
||||
#define MSG_A_TRAVEL "A-movimento"
|
||||
#define MSG_XSTEPS "X passo/mm"
|
||||
#define MSG_YSTEPS "Y passo/mm"
|
||||
#define MSG_ZSTEPS "Z passo/mm"
|
||||
|
@ -151,8 +154,19 @@
|
|||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT "Fim de curso"
|
||||
#define MSG_HEATING_FAILED_LCD "Aquecimento falhou"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP ERROR"
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#define MSG_ERR_MAXTEMP "Err: T Maxima"
|
||||
#define MSG_ERR_MINTEMP "Err: T Minima"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: T Base Maxima"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: T Base Minima"
|
||||
#define MSG_END_HOUR "horas"
|
||||
#define MSG_END_MINUTE "minutos"
|
||||
#define MSG_HEATING "Aquecendo..."
|
||||
#define MSG_HEATING_COMPLETE "Aquecida."
|
||||
#define MSG_BED_HEATING "Aquecendo base.."
|
||||
#define MSG_BED_DONE "Base aquecida."
|
||||
|
||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||
#define MSG_DELTA_CALIBRATE "Calibracao Delta"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Indo para origem"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Definir desvio"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Definir origem"
|
||||
|
@ -72,6 +73,7 @@
|
|||
#define MSG_MOVE_1MM "Mover 1mm"
|
||||
#define MSG_MOVE_10MM "Mover 10mm"
|
||||
#define MSG_SPEED "Velocidade"
|
||||
#define MSG_BED_Z "Base Z"
|
||||
#define MSG_NOZZLE LCD_STR_THERMOMETER " Bico"
|
||||
#define MSG_BED LCD_STR_THERMOMETER " Base"
|
||||
#define MSG_FAN_SPEED "Vel. ventoinha"
|
||||
|
@ -103,7 +105,8 @@
|
|||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax "
|
||||
#define MSG_A_RETRACT "A-retract"
|
||||
#define MSG_A_RETRACT "A-retracção"
|
||||
#define MSG_A_TRAVEL "A-movimento"
|
||||
#define MSG_XSTEPS "X passo/mm"
|
||||
#define MSG_YSTEPS "Y passo/mm"
|
||||
#define MSG_ZSTEPS "Z passo/mm"
|
||||
|
@ -127,7 +130,7 @@
|
|||
#define MSG_CARD_MENU "Imprimir do SD"
|
||||
#define MSG_NO_CARD "Sem cartão SD"
|
||||
#define MSG_DWELL "Em espera..."
|
||||
#define MSG_USERWAIT "A espera de ordem"
|
||||
#define MSG_USERWAIT "Á espera de ordem"
|
||||
#define MSG_RESUMING "Retomando impressão"
|
||||
#define MSG_PRINT_ABORTED "Impressão cancelada"
|
||||
#define MSG_NO_MOVE "Sem movimento"
|
||||
|
@ -151,8 +154,19 @@
|
|||
#define MSG_BABYSTEP_Y "Babystep Y"
|
||||
#define MSG_BABYSTEP_Z "Babystep Z"
|
||||
#define MSG_ENDSTOP_ABORT "Fim de curso"
|
||||
#define MSG_HEATING_FAILED_LCD "Aquecimento falhou"
|
||||
#define MSG_ERR_REDUNDANT_TEMP "Err: REDUNDANT TEMP ERROR"
|
||||
#define MSG_THERMAL_RUNAWAY "THERMAL RUNAWAY"
|
||||
#define MSG_ERR_MAXTEMP "Err: T Máxima"
|
||||
#define MSG_ERR_MINTEMP "Err: T Mínima"
|
||||
#define MSG_ERR_MAXTEMP_BED "Err: T Base Máxima"
|
||||
#define MSG_ERR_MINTEMP_BED "Err: T Base Mínima"
|
||||
#define MSG_END_HOUR "horas"
|
||||
#define MSG_END_MINUTE "minutos"
|
||||
#define MSG_HEATING "Aquecendo..."
|
||||
#define MSG_HEATING_COMPLETE "Aquecida."
|
||||
#define MSG_BED_HEATING "Aquecendo base.."
|
||||
#define MSG_BED_DONE "Base aquecida."
|
||||
|
||||
#if ENABLED(DELTA_CALIBRATION_MENU)
|
||||
#define MSG_DELTA_CALIBRATE "Calibração Delta"
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
#define MSG_LEVEL_BED_HOMING "Homing XYZ"
|
||||
#define MSG_LEVEL_BED_WAITING "Click to Begin"
|
||||
#define MSG_LEVEL_BED_DONE "Leveling Done!"
|
||||
#define MSG_LEVEL_BED_CANCEL "Cancel"
|
||||
#define MSG_SET_HOME_OFFSETS "Запомнить парковку"
|
||||
#define MSG_HOME_OFFSETS_APPLIED "Offsets applied"
|
||||
#define MSG_SET_ORIGIN "Запомнить ноль"
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
#define MACROS_H
|
||||
|
||||
// Macros to make a string from a macro
|
||||
#define STRINGIFY_(n) #n
|
||||
#define STRINGIFY(n) STRINGIFY_(n)
|
||||
#define STRINGIFY_(M) #M
|
||||
#define STRINGIFY(M) STRINGIFY_(M)
|
||||
|
||||
// Macros for bit masks
|
||||
#define TEST(n,b) (((n)&_BV(b))!=0)
|
||||
|
|
|
@ -209,55 +209,37 @@
|
|||
#endif
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_MAX_ENDSTOPS)
|
||||
#undef X_MAX_PIN
|
||||
#undef Y_MAX_PIN
|
||||
#undef Z_MAX_PIN
|
||||
#define X_MAX_PIN -1
|
||||
#define Y_MAX_PIN -1
|
||||
#define Z_MAX_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_MIN_ENDSTOPS)
|
||||
#undef X_MIN_PIN
|
||||
#undef Y_MIN_PIN
|
||||
#undef Z_MIN_PIN
|
||||
#define X_MIN_PIN -1
|
||||
#define Y_MIN_PIN -1
|
||||
#define Z_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_Z_MIN_PROBE_ENDSTOP) || DISABLED(Z_MIN_PROBE_ENDSTOP) // Allow code to compile regardless of Z_MIN_PROBE_ENDSTOP setting.
|
||||
#undef Z_MIN_PROBE_PIN
|
||||
#define Z_MIN_PROBE_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_XMAX_ENDSTOP)
|
||||
#if DISABLED(USE_XMAX_PLUG)
|
||||
#undef X_MAX_PIN
|
||||
#define X_MAX_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_XMIN_ENDSTOP)
|
||||
#undef X_MIN_PIN
|
||||
#define X_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_YMAX_ENDSTOP)
|
||||
#if DISABLED(USE_YMAX_PLUG)
|
||||
#undef Y_MAX_PIN
|
||||
#define Y_MAX_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_YMIN_ENDSTOP)
|
||||
#undef Y_MIN_PIN
|
||||
#define Y_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_ZMAX_ENDSTOP)
|
||||
#if DISABLED(USE_ZMAX_PLUG)
|
||||
#undef Z_MAX_PIN
|
||||
#define Z_MAX_PIN -1
|
||||
#endif
|
||||
|
||||
#if ENABLED(DISABLE_ZMIN_ENDSTOP)
|
||||
#if DISABLED(USE_XMIN_PLUG)
|
||||
#undef X_MIN_PIN
|
||||
#define X_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_YMIN_PLUG)
|
||||
#undef Y_MIN_PIN
|
||||
#define Y_MIN_PIN -1
|
||||
#endif
|
||||
|
||||
#if DISABLED(USE_ZMIN_PLUG)
|
||||
#undef Z_MIN_PIN
|
||||
#define Z_MIN_PIN -1
|
||||
#endif
|
||||
|
|
|
@ -29,8 +29,6 @@
|
|||
#undef HEATER_1_PIN
|
||||
#define HEATER_1_PIN 7 // EXTRUDER 2
|
||||
|
||||
#define DISABLE_MAX_ENDSTOPS
|
||||
|
||||
#undef SDPOWER
|
||||
#define SDPOWER 1
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
#define SERVO0_PIN 46 //AUX3-6
|
||||
#define SERVO1_PIN 47 //AUX3-5
|
||||
#define SERVO2_PIN 48 //AUX3-4
|
||||
#define SERVO2_PIN 49 //AUX3-3
|
||||
#define SERVO3_PIN 49 //AUX3-3
|
||||
|
||||
#define X_STEP_PIN 58
|
||||
#define X_DIR_PIN 57
|
||||
|
|
|
@ -852,25 +852,34 @@ float junction_deviation = 0.1;
|
|||
block->nominal_rate = ceil(block->step_event_count * inverse_second); // (step/sec) Always > 0
|
||||
|
||||
#if ENABLED(FILAMENT_WIDTH_SENSOR)
|
||||
static float filwidth_e_count = 0, filwidth_delay_dist = 0;
|
||||
|
||||
//FMM update ring buffer used for delay with filament measurements
|
||||
if (extruder == FILAMENT_SENSOR_EXTRUDER_NUM && delay_index2 > -1) { //only for extruder with filament sensor and if ring buffer is initialized
|
||||
if (extruder == FILAMENT_SENSOR_EXTRUDER_NUM && filwidth_delay_index2 >= 0) { //only for extruder with filament sensor and if ring buffer is initialized
|
||||
|
||||
const int MMD = MAX_MEASUREMENT_DELAY + 1, MMD10 = MMD * 10;
|
||||
const int MMD_CM = MAX_MEASUREMENT_DELAY + 1, MMD_MM = MMD_CM * 10;
|
||||
|
||||
delay_dist += delta_mm[E_AXIS]; // increment counter with next move in e axis
|
||||
while (delay_dist >= MMD10) delay_dist -= MMD10; // loop around the buffer
|
||||
while (delay_dist < 0) delay_dist += MMD10;
|
||||
// increment counters with next move in e axis
|
||||
filwidth_e_count += delta_mm[E_AXIS];
|
||||
filwidth_delay_dist += delta_mm[E_AXIS];
|
||||
|
||||
delay_index1 = delay_dist / 10.0; // calculate index
|
||||
delay_index1 = constrain(delay_index1, 0, MAX_MEASUREMENT_DELAY); // (already constrained above)
|
||||
// Only get new measurements on forward E movement
|
||||
if (filwidth_e_count > 0.0001) {
|
||||
|
||||
if (delay_index1 != delay_index2) { // moved index
|
||||
// Loop the delay distance counter (modulus by the mm length)
|
||||
while (filwidth_delay_dist >= MMD_MM) filwidth_delay_dist -= MMD_MM;
|
||||
|
||||
// Convert into an index into the measurement array
|
||||
filwidth_delay_index1 = (int)(filwidth_delay_dist / 10.0 + 0.0001);
|
||||
|
||||
// If the index has changed (must have gone forward)...
|
||||
if (filwidth_delay_index1 != filwidth_delay_index2) {
|
||||
filwidth_e_count = 0; // Reset the E movement counter
|
||||
int8_t meas_sample = widthFil_to_size_ratio() - 100; // Subtract 100 to reduce magnitude - to store in a signed char
|
||||
while (delay_index1 != delay_index2) {
|
||||
// Increment and loop around buffer
|
||||
if (++delay_index2 >= MMD) delay_index2 -= MMD;
|
||||
delay_index2 = constrain(delay_index2, 0, MAX_MEASUREMENT_DELAY);
|
||||
measurement_delay[delay_index2] = meas_sample;
|
||||
do {
|
||||
filwidth_delay_index2 = (filwidth_delay_index2 + 1) % MMD_CM; // The next unused slot
|
||||
measurement_delay[filwidth_delay_index2] = meas_sample; // Store the measurement
|
||||
} while (filwidth_delay_index1 != filwidth_delay_index2); // More slots to fill?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
14
Marlin/scripts/findMissingTranslations.sh
Normal file
14
Marlin/scripts/findMissingTranslations.sh
Normal file
|
@ -0,0 +1,14 @@
|
|||
#!/bin/bash
|
||||
IGNORE_DEFINES="LANGUAGE_EN_H MAPPER_NON SIMULATE_ROMFONT DISPLAY_CHARSET_ISO10646_1 MSG_H1 MSG_H2 MSG_H3 MSG_H4 MSG_MOVE_E1 MSG_MOVE_E2 MSG_MOVE_E3 MSG_MOVE_E4 MSG_N1 MSG_N2 MSG_N3 MSG_N4 MSG_DIAM_E1 MSG_DIAM_E2 MSG_DIAM_E3 MSG_DIAM_E4 MSG_E1 MSG_E2 MSG_E3 MSG_E4"
|
||||
|
||||
for i in `awk '/#define/{print $2}' language_en.h`; do
|
||||
for j in `ls language_*.h | grep -v language_en.h`; do
|
||||
t=$(grep -c "${i}" ${j})
|
||||
if [ "$t" -eq 0 ]; then
|
||||
for k in ${IGNORE_DEFINES}; do
|
||||
[ "${k}" == "${i}" ] && continue 2;
|
||||
done
|
||||
echo "${j},${i}"
|
||||
fi
|
||||
done
|
||||
done
|
|
@ -294,20 +294,20 @@ void checkHitEndstops() {
|
|||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPGM(MSG_ENDSTOPS_HIT);
|
||||
if (TEST(endstop_hit_bits, X_MIN)) {
|
||||
SERIAL_ECHOPAIR(" X:", (float)endstops_trigsteps[X_AXIS] / axis_steps_per_unit[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" X:", endstops_trigsteps[X_AXIS] / axis_steps_per_unit[X_AXIS]);
|
||||
LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "X");
|
||||
}
|
||||
if (TEST(endstop_hit_bits, Y_MIN)) {
|
||||
SERIAL_ECHOPAIR(" Y:", (float)endstops_trigsteps[Y_AXIS] / axis_steps_per_unit[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y:", endstops_trigsteps[Y_AXIS] / axis_steps_per_unit[Y_AXIS]);
|
||||
LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "Y");
|
||||
}
|
||||
if (TEST(endstop_hit_bits, Z_MIN)) {
|
||||
SERIAL_ECHOPAIR(" Z:", (float)endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z:", endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]);
|
||||
LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "Z");
|
||||
}
|
||||
#if ENABLED(Z_MIN_PROBE_ENDSTOP)
|
||||
if (TEST(endstop_hit_bits, Z_MIN_PROBE)) {
|
||||
SERIAL_ECHOPAIR(" Z_MIN_PROBE:", (float)endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z_MIN_PROBE:", endstops_trigsteps[Z_AXIS] / axis_steps_per_unit[Z_AXIS]);
|
||||
LCD_MESSAGEPGM(MSG_ENDSTOPS_HIT "ZP");
|
||||
}
|
||||
#endif
|
||||
|
|
77
Marlin/stopwatch.cpp
Normal file
77
Marlin/stopwatch.cpp
Normal file
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "Marlin.h"
|
||||
#include "stopwatch.h"
|
||||
|
||||
Stopwatch::Stopwatch() {
|
||||
this->reset();
|
||||
}
|
||||
|
||||
void Stopwatch::stop() {
|
||||
if (DEBUGGING(INFO)) SERIAL_ECHOLNPGM("Stopwatch::stop()");
|
||||
if (!this->isRunning()) return;
|
||||
|
||||
this->status = STPWTCH_STOPPED;
|
||||
this->stopTimestamp = millis();
|
||||
}
|
||||
|
||||
void Stopwatch::pause() {
|
||||
if (DEBUGGING(INFO)) SERIAL_ECHOLNPGM("Stopwatch::pause()");
|
||||
if (!this->isRunning()) return;
|
||||
|
||||
this->status = STPWTCH_PAUSED;
|
||||
this->stopTimestamp = millis();
|
||||
}
|
||||
|
||||
void Stopwatch::start() {
|
||||
if (DEBUGGING(INFO)) SERIAL_ECHOLNPGM("Stopwatch::start()");
|
||||
if (this->isRunning()) return;
|
||||
|
||||
if (this->isPaused()) this->accumulator = this->duration();
|
||||
else this->reset();
|
||||
|
||||
this->status = STPWTCH_RUNNING;
|
||||
this->startTimestamp = millis();
|
||||
}
|
||||
|
||||
void Stopwatch::reset() {
|
||||
if (DEBUGGING(INFO)) SERIAL_ECHOLNPGM("Stopwatch::reset()");
|
||||
|
||||
this->status = STPWTCH_STOPPED;
|
||||
this->startTimestamp = 0;
|
||||
this->stopTimestamp = 0;
|
||||
this->accumulator = 0;
|
||||
}
|
||||
|
||||
bool Stopwatch::isRunning() {
|
||||
return (this->status == STPWTCH_RUNNING) ? true : false;
|
||||
}
|
||||
|
||||
bool Stopwatch::isPaused() {
|
||||
return (this->status == STPWTCH_PAUSED) ? true : false;
|
||||
}
|
||||
|
||||
uint16_t Stopwatch::duration() {
|
||||
return (((this->isRunning()) ? millis() : this->stopTimestamp)
|
||||
- this->startTimestamp) / 1000 + this->accumulator;
|
||||
}
|
99
Marlin/stopwatch.h
Normal file
99
Marlin/stopwatch.h
Normal file
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef STOPWATCH_H
|
||||
#define STOPWATCH_H
|
||||
|
||||
enum StopwatchStatus {
|
||||
STPWTCH_STOPPED = 0x0,
|
||||
STPWTCH_RUNNING = 0x1,
|
||||
STPWTCH_PAUSED = 0x2
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Stopwatch class
|
||||
* @details This class acts as a timer proving stopwatch functionality including
|
||||
* the ability to pause the running time counter.
|
||||
*/
|
||||
class Stopwatch {
|
||||
private:
|
||||
StopwatchStatus status;
|
||||
uint16_t accumulator;
|
||||
uint32_t startTimestamp;
|
||||
uint32_t stopTimestamp;
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Class constructor
|
||||
*/
|
||||
Stopwatch();
|
||||
|
||||
/**
|
||||
* @brief Stops the stopwatch
|
||||
* @details Stops the running timer, it will silently ignore the request if
|
||||
* no timer is currently running.
|
||||
*/
|
||||
void stop();
|
||||
|
||||
/**
|
||||
* @brief Pauses the stopwatch
|
||||
* @details Pauses the running timer, it will silently ignore the request if
|
||||
* no timer is currently running.
|
||||
*/
|
||||
void pause();
|
||||
|
||||
/**
|
||||
* @brief Starts the stopwatch
|
||||
* @details Starts the timer, it will silently ignore the request if the
|
||||
* timer is already running.
|
||||
*/
|
||||
void start();
|
||||
|
||||
/**
|
||||
* @brief Resets the stopwatch
|
||||
* @details Resets all settings to their default values.
|
||||
*/
|
||||
void reset();
|
||||
|
||||
/**
|
||||
* @brief Checks if the timer is running
|
||||
* @details Returns true if the timer is currently running, false otherwise.
|
||||
* @return bool
|
||||
*/
|
||||
bool isRunning();
|
||||
|
||||
/**
|
||||
* @brief Checks if the timer is paused
|
||||
* @details Returns true if the timer is currently paused, false otherwise.
|
||||
* @return bool
|
||||
*/
|
||||
bool isPaused();
|
||||
|
||||
/**
|
||||
* @brief Gets the running time
|
||||
* @details Returns the total number of seconds the timer has been running.
|
||||
* @return uint16_t
|
||||
*/
|
||||
uint16_t duration();
|
||||
};
|
||||
|
||||
#endif //STOPWATCH_H
|
|
@ -350,7 +350,7 @@ void PID_autotune(float temp, int extruder, int ncycles, bool set_result/*=false
|
|||
}
|
||||
// Every 2 seconds...
|
||||
if (ms > temp_ms + 2000) {
|
||||
#if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
|
||||
#if HAS_TEMP_HOTEND || HAS_TEMP_BED
|
||||
print_heaterstates();
|
||||
SERIAL_EOL;
|
||||
#endif
|
||||
|
@ -705,7 +705,7 @@ void manage_heater() {
|
|||
// Control the extruder rate based on the width sensor
|
||||
#if ENABLED(FILAMENT_WIDTH_SENSOR)
|
||||
if (filament_sensor) {
|
||||
meas_shift_index = delay_index1 - meas_delay_cm;
|
||||
meas_shift_index = filwidth_delay_index1 - meas_delay_cm;
|
||||
if (meas_shift_index < 0) meas_shift_index += MAX_MEASUREMENT_DELAY + 1; //loop around buffer if needed
|
||||
|
||||
// Get the delayed info and add 100 to reconstitute to a percent of
|
||||
|
@ -1175,7 +1175,7 @@ void disable_all_heaters() {
|
|||
setTargetBed(0);
|
||||
|
||||
// If all heaters go down then for sure our print job has stopped
|
||||
print_job_stop(true);
|
||||
print_job_timer.stop();
|
||||
|
||||
#define DISABLE_HEATER(NR) { \
|
||||
setTargetHotend(NR, 0); \
|
||||
|
@ -1183,7 +1183,7 @@ void disable_all_heaters() {
|
|||
WRITE_HEATER_ ## NR (LOW); \
|
||||
}
|
||||
|
||||
#if HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675)
|
||||
#if HAS_TEMP_HOTEND
|
||||
setTargetHotend(0, 0);
|
||||
soft_pwm[0] = 0;
|
||||
WRITE_HEATER_0P(LOW); // Should HEATERS_PARALLEL apply here? Then change to DISABLE_HEATER(0)
|
||||
|
|
|
@ -83,7 +83,7 @@ extern float current_temperature_bed;
|
|||
|
||||
#if ENABLED(PID_PARAMS_PER_EXTRUDER)
|
||||
extern float Kp[EXTRUDERS], Ki[EXTRUDERS], Kd[EXTRUDERS], Kc[EXTRUDERS]; // one param per extruder
|
||||
#define PID_PARAM(param,e) param[e] // use macro to point to array value
|
||||
#define PID_PARAM(param, e) param[e] // use macro to point to array value
|
||||
#else
|
||||
extern float Kp, Ki, Kd, Kc; // one param per extruder - saves 20 or 36 bytes of ram (inc array pointer)
|
||||
#define PID_PARAM(param, e) param // use macro to point directly to value
|
||||
|
|
104
Marlin/twibus.cpp
Normal file
104
Marlin/twibus.cpp
Normal file
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "Marlin.h"
|
||||
|
||||
#if ENABLED(EXPERIMENTAL_I2CBUS)
|
||||
|
||||
#include "twibus.h"
|
||||
|
||||
#include <Wire.h>
|
||||
|
||||
TWIBus::twibus() {
|
||||
Wire.begin(); // We use no address so we will join the BUS as the master
|
||||
this->reset();
|
||||
}
|
||||
|
||||
void TWIBus::reset() {
|
||||
this->addr = 0;
|
||||
this->buffer_s = 0;
|
||||
this->buffer[0] = 0x00;
|
||||
}
|
||||
|
||||
void TWIBus::address(uint8_t addr) {
|
||||
this->addr = addr;
|
||||
|
||||
if (DEBUGGING(INFO)) {
|
||||
SERIAL_ECHOPAIR("TWIBus::sendto: ", this->addr);
|
||||
SERIAL_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
void TWIBus::addbyte(char c) {
|
||||
if (buffer_s >= sizeof(this->buffer)) return;
|
||||
this->buffer[this->buffer_s++] = c;
|
||||
|
||||
if (DEBUGGING(INFO)) {
|
||||
SERIAL_ECHOPAIR("TWIBus::addbyte: ", this->buffer[this->buffer_s -1]);
|
||||
SERIAL_EOL;
|
||||
}
|
||||
}
|
||||
|
||||
void TWIBus::send() {
|
||||
if (!this->addr) return;
|
||||
if (DEBUGGING(INFO)) SERIAL_ECHOLNPGM("TWIBus::send()");
|
||||
|
||||
Wire.beginTransmission(this->addr);
|
||||
Wire.write(this->buffer, this->buffer_s);
|
||||
Wire.endTransmission();
|
||||
|
||||
// Reset the buffer after sending the data
|
||||
this->reset();
|
||||
}
|
||||
|
||||
void TWIBus::reqbytes(uint8_t bytes) {
|
||||
if (!this->addr) return;
|
||||
if (DEBUGGING(INFO)) {
|
||||
SERIAL_ECHOPAIR("TWIBus::reqbytes(): ", bytes);
|
||||
SERIAL_EOL;
|
||||
}
|
||||
|
||||
millis_t t = millis();
|
||||
Wire.requestFrom(this->addr, bytes);
|
||||
|
||||
// requestFrom() is a blocking function
|
||||
while (Wire.available() < bytes) {
|
||||
if (millis() - t >= this->timeout) break;
|
||||
else continue;
|
||||
}
|
||||
|
||||
SERIAL_ECHO_START;
|
||||
SERIAL_ECHOPAIR("i2c-reply: from:", this->addr);
|
||||
SERIAL_ECHOPAIR(" bytes:", Wire.available());
|
||||
SERIAL_ECHOPGM (" data:");
|
||||
|
||||
// Protect against buffer overflows if the number of received bytes
|
||||
// is less than the number of requested bytes
|
||||
uint8_t wba = Wire.available();
|
||||
for (int i = 0; i < wba; i++) SERIAL_CHAR(Wire.read());
|
||||
SERIAL_EOL;
|
||||
|
||||
// Reset the buffer after sending the data
|
||||
this->reset();
|
||||
}
|
||||
|
||||
#endif //EXPERIMENTAL_I2CBUS
|
122
Marlin/twibus.h
Normal file
122
Marlin/twibus.h
Normal file
|
@ -0,0 +1,122 @@
|
|||
/*
|
||||
* Marlin 3D Printer Firmware
|
||||
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||
*
|
||||
* Based on Sprinter and grbl.
|
||||
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef TWIBUS_H
|
||||
#define TWIBUS_H
|
||||
|
||||
/**
|
||||
* TWIBUS class
|
||||
*
|
||||
* This class implements a wrapper around the two wire (I2C) bus, it allows
|
||||
* Marlin to send and request data from any slave device on the bus. This is
|
||||
* an experimental feature and it's inner workings as well as public facing
|
||||
* interface are prune to change in the future.
|
||||
*
|
||||
* The two main consumers of this class are M155 and M156, where M155 allows
|
||||
* Marlin to send a I2C packet to a device (please be aware that no repeated
|
||||
* starts are possible), this can be done in caching method by calling multiple
|
||||
* times M155 B<byte-1 value in base 10> or a one liner M155, have a look at
|
||||
* the gcode_M155() function for more information. M156 allows Marlin to
|
||||
* request data from a device, the received data is then relayed into the serial
|
||||
* line for host interpretation.
|
||||
*
|
||||
*/
|
||||
class TWIBus {
|
||||
private:
|
||||
/**
|
||||
* @brief Timeout value in milliseconds
|
||||
* @details For blocking operations this constant value will set the max
|
||||
* amount of time Marlin will keep waiting for a reply. Useful is something
|
||||
* goes wrong on the bus and the SDA/SCL lines are held up by another device.
|
||||
*/
|
||||
const int timeout = 5;
|
||||
|
||||
/**
|
||||
* @brief Target device address
|
||||
* @description This stores, until the buffer is flushed, the target device
|
||||
* address, take not we do follow Arduino 7bit addressing.
|
||||
*/
|
||||
uint8_t addr = 0;
|
||||
|
||||
/**
|
||||
* @brief Number of bytes on buffer
|
||||
* @description This var holds the total number of bytes on our buffer
|
||||
* waiting to be flushed to the bus.
|
||||
*/
|
||||
uint8_t buffer_s = 0;
|
||||
|
||||
/**
|
||||
* @brief Internal buffer
|
||||
* @details This is a fixed buffer, TWI command cannot be longer than this
|
||||
*/
|
||||
char buffer[30];
|
||||
|
||||
|
||||
public:
|
||||
/**
|
||||
* @brief Class constructor
|
||||
* @details Initialized the TWI bus and clears the buffer
|
||||
*/
|
||||
TWIBus();
|
||||
|
||||
/**
|
||||
* @brief Reset the buffer
|
||||
* @details Brings the internal buffer to a known-empty state
|
||||
*/
|
||||
void reset();
|
||||
|
||||
/**
|
||||
* @brief Send the buffer data to the bus
|
||||
* @details Flushed the buffer into the bus targeting the cached slave device
|
||||
* address.
|
||||
*/
|
||||
void send();
|
||||
|
||||
/**
|
||||
* @brief Add one byte to the buffer
|
||||
* @details Adds the byte to the buffer in a sequential way, if buffer is full
|
||||
* the request is silently ignored.
|
||||
*
|
||||
* @param c a data byte
|
||||
*/
|
||||
void addbyte(char c);
|
||||
|
||||
/**
|
||||
* @brief Sets the target slave address
|
||||
* @details The target slave address is stored so it can be later used when
|
||||
* the complete packet needs to be sent over the bus.
|
||||
*
|
||||
* @param addr 7-bit integer address
|
||||
*/
|
||||
void address(uint8_t addr);
|
||||
|
||||
/**
|
||||
* @brief Request data from slave device
|
||||
* @details Requests data from a slave device, when the data is received it will
|
||||
* be relayed to the serial line using a parser-friendly formatting.
|
||||
*
|
||||
* @param bytes the number of bytes to request
|
||||
*/
|
||||
void reqbytes(uint8_t bytes);
|
||||
};
|
||||
|
||||
#endif //TWIBUS_H
|
|
@ -111,13 +111,10 @@ static void lcd_status_screen();
|
|||
|
||||
#if ENABLED(MANUAL_BED_LEVELING)
|
||||
#include "mesh_bed_leveling.h"
|
||||
static void _lcd_level_bed();
|
||||
static void _lcd_level_bed_homing();
|
||||
static void lcd_level_bed();
|
||||
#endif
|
||||
|
||||
/* Different types of actions that can be used in menu items. */
|
||||
static void menu_action_back(menuFunc_t data);
|
||||
static void menu_action_back();
|
||||
static void menu_action_submenu(menuFunc_t data);
|
||||
static void menu_action_gcode(const char* pgcode);
|
||||
static void menu_action_function(menuFunc_t data);
|
||||
|
@ -188,9 +185,9 @@ static void lcd_status_screen();
|
|||
* menu_action_[type](arg3...)
|
||||
*
|
||||
* Examples:
|
||||
* MENU_ITEM(back, MSG_WATCH, lcd_status_screen)
|
||||
* lcd_implementation_drawmenu_back(sel, row, PSTR(MSG_WATCH), lcd_status_screen)
|
||||
* menu_action_back(lcd_status_screen)
|
||||
* MENU_ITEM(back, MSG_WATCH)
|
||||
* lcd_implementation_drawmenu_back(sel, row, PSTR(MSG_WATCH))
|
||||
* menu_action_back()
|
||||
*
|
||||
* MENU_ITEM(function, MSG_PAUSE_PRINT, lcd_sdcard_pause)
|
||||
* lcd_implementation_drawmenu_function(sel, row, PSTR(MSG_PAUSE_PRINT), lcd_sdcard_pause)
|
||||
|
@ -267,14 +264,25 @@ static void lcd_status_screen();
|
|||
uint8_t currentMenuViewOffset; /* scroll offset in the current menu */
|
||||
millis_t next_button_update_ms;
|
||||
uint8_t lastEncoderBits;
|
||||
uint32_t encoderPosition, prevEncoderPosition;
|
||||
uint32_t encoderPosition;
|
||||
#if PIN_EXISTS(SD_DETECT)
|
||||
uint8_t lcd_sd_status;
|
||||
#endif
|
||||
|
||||
#endif // ULTIPANEL
|
||||
|
||||
menuFunc_t currentMenu = lcd_status_screen; /* function pointer to the currently active menu */
|
||||
typedef struct {
|
||||
menuFunc_t menu_function;
|
||||
#if ENABLED(ULTIPANEL)
|
||||
uint32_t encoder_position;
|
||||
#endif
|
||||
} menuPosition;
|
||||
|
||||
menuFunc_t currentMenu = lcd_status_screen; // pointer to the currently active menu handler
|
||||
|
||||
menuPosition menu_history[10];
|
||||
uint8_t menu_history_depth = 0;
|
||||
|
||||
millis_t next_lcd_update_ms;
|
||||
uint8_t lcd_status_update_delay;
|
||||
bool ignore_click = false;
|
||||
|
@ -285,7 +293,7 @@ enum LCDHandlerAction {
|
|||
LCD_DRAW_UPDATE_NONE,
|
||||
LCD_DRAW_UPDATE_CALL_REDRAW,
|
||||
LCD_DRAW_UPDATE_CLEAR_CALL_REDRAW,
|
||||
LCD_DRAW_UPDATE_CALL_NO_REDRAW,
|
||||
LCD_DRAW_UPDATE_CALL_NO_REDRAW
|
||||
};
|
||||
|
||||
uint8_t lcdDrawUpdate = LCD_DRAW_UPDATE_CLEAR_CALL_REDRAW; // Set 1 or 2 when the LCD needs to draw, decrements after every draw. Set to 2 in LCD routines so the LCD gets at least 1 full redraw (first redraw is partial)
|
||||
|
@ -294,7 +302,6 @@ uint8_t lcdDrawUpdate = LCD_DRAW_UPDATE_CLEAR_CALL_REDRAW; // Set 1 or 2 when th
|
|||
const char* editLabel;
|
||||
void* editValue;
|
||||
int32_t minEditValue, maxEditValue;
|
||||
menuFunc_t prevMenu = NULL; // return here after editing (also prevEncoderPosition)
|
||||
menuFunc_t callbackFunc; // call this after editing
|
||||
|
||||
// place-holders for Ki and Kd edits
|
||||
|
@ -302,6 +309,7 @@ float raw_Ki, raw_Kd;
|
|||
|
||||
/**
|
||||
* General function to go directly to a menu
|
||||
* Remembers the previous position
|
||||
*/
|
||||
static void lcd_goto_menu(menuFunc_t menu, const bool feedback = false, const uint32_t encoder = 0) {
|
||||
if (currentMenu != menu) {
|
||||
|
@ -311,26 +319,40 @@ static void lcd_goto_menu(menuFunc_t menu, const bool feedback = false, const ui
|
|||
encoderPosition = encoder;
|
||||
if (feedback) lcd_quick_feedback();
|
||||
#endif
|
||||
// For LCD_PROGRESS_BAR re-initialize the custom characters
|
||||
if (menu == lcd_status_screen) {
|
||||
defer_return_to_status = false;
|
||||
menu_history_depth = 0;
|
||||
}
|
||||
#if ENABLED(LCD_PROGRESS_BAR)
|
||||
// For LCD_PROGRESS_BAR re-initialize custom characters
|
||||
lcd_set_custom_characters(menu == lcd_status_screen);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
static void lcd_return_to_status() { lcd_goto_menu(lcd_status_screen); }
|
||||
|
||||
inline void lcd_save_previous_menu() {
|
||||
prevMenu = currentMenu;
|
||||
if (menu_history_depth < COUNT(menu_history)) {
|
||||
menu_history[menu_history_depth].menu_function = currentMenu;
|
||||
#if ENABLED(ULTIPANEL)
|
||||
prevEncoderPosition = encoderPosition;
|
||||
menu_history[menu_history_depth].encoder_position = encoderPosition;
|
||||
#endif
|
||||
++menu_history_depth;
|
||||
}
|
||||
}
|
||||
|
||||
static void lcd_goto_previous_menu() {
|
||||
lcd_goto_menu(prevMenu, true
|
||||
static void lcd_goto_previous_menu(bool feedback=false) {
|
||||
if (menu_history_depth > 0) {
|
||||
--menu_history_depth;
|
||||
lcd_goto_menu(menu_history[menu_history_depth].menu_function, feedback
|
||||
#if ENABLED(ULTIPANEL)
|
||||
, prevEncoderPosition
|
||||
, menu_history[menu_history_depth].encoder_position
|
||||
#endif
|
||||
);
|
||||
}
|
||||
else
|
||||
lcd_return_to_status();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -410,13 +432,13 @@ static void lcd_status_screen() {
|
|||
}
|
||||
|
||||
#if ENABLED(ULTIPANEL_FEEDMULTIPLY)
|
||||
int new_frm = feedrate_multiplier + int(encoderPosition);
|
||||
// Dead zone at 100% feedrate
|
||||
if ((feedrate_multiplier < 100 && (feedrate_multiplier + int(encoderPosition)) > 100) ||
|
||||
(feedrate_multiplier > 100 && (feedrate_multiplier + int(encoderPosition)) < 100)) {
|
||||
encoderPosition = 0;
|
||||
if ((feedrate_multiplier < 100 && new_frm > 100) || (feedrate_multiplier > 100 && new_frm < 100)) {
|
||||
feedrate_multiplier = 100;
|
||||
encoderPosition = 0;
|
||||
}
|
||||
if (feedrate_multiplier == 100) {
|
||||
else if (feedrate_multiplier == 100) {
|
||||
if (int(encoderPosition) > ENCODER_FEEDRATE_DEADZONE) {
|
||||
feedrate_multiplier += int(encoderPosition) - (ENCODER_FEEDRATE_DEADZONE);
|
||||
encoderPosition = 0;
|
||||
|
@ -427,7 +449,7 @@ static void lcd_status_screen() {
|
|||
}
|
||||
}
|
||||
else {
|
||||
feedrate_multiplier += int(encoderPosition);
|
||||
feedrate_multiplier = new_frm;
|
||||
encoderPosition = 0;
|
||||
}
|
||||
#endif // ULTIPANEL_FEEDMULTIPLY
|
||||
|
@ -439,9 +461,13 @@ static void lcd_status_screen() {
|
|||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
|
||||
static void lcd_return_to_status() {
|
||||
defer_return_to_status = false;
|
||||
lcd_goto_menu(lcd_status_screen);
|
||||
inline void line_to_current(AxisEnum axis) {
|
||||
#if ENABLED(DELTA)
|
||||
calculate_delta(current_position);
|
||||
plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder);
|
||||
#else
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if ENABLED(SDSUPPORT)
|
||||
|
@ -469,7 +495,7 @@ static void lcd_return_to_status() {
|
|||
|
||||
static void lcd_main_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_WATCH, lcd_status_screen);
|
||||
MENU_ITEM(back, MSG_WATCH);
|
||||
if (movesplanned() || IS_SD_PRINTING) {
|
||||
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu);
|
||||
}
|
||||
|
@ -508,13 +534,11 @@ static void lcd_main_menu() {
|
|||
END_MENU();
|
||||
}
|
||||
|
||||
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART)
|
||||
static void lcd_autostart_sd() {
|
||||
card.autostart_index = 0;
|
||||
card.setroot();
|
||||
card.checkautostart(true);
|
||||
}
|
||||
#endif
|
||||
/**
|
||||
*
|
||||
* "Tune" submenu items
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Set the home offset based on the current_position
|
||||
|
@ -529,7 +553,7 @@ void lcd_set_home_offsets() {
|
|||
|
||||
static void _lcd_babystep(const int axis, const char* msg) {
|
||||
ENCODER_DIRECTION_NORMAL();
|
||||
if (encoderPosition != 0) {
|
||||
if (encoderPosition) {
|
||||
int distance = (int)encoderPosition * BABYSTEP_MULTIPLICATOR;
|
||||
encoderPosition = 0;
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_REDRAW;
|
||||
|
@ -559,7 +583,7 @@ void lcd_set_home_offsets() {
|
|||
#endif
|
||||
}
|
||||
if (lcdDrawUpdate) lcd_implementation_drawedit(msg, NULL);
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu();
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
||||
}
|
||||
|
||||
#if ENABLED(BABYSTEP_XY)
|
||||
|
@ -612,7 +636,7 @@ static void lcd_tune_menu() {
|
|||
//
|
||||
// ^ Main
|
||||
//
|
||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||
MENU_ITEM(back, MSG_MAIN);
|
||||
|
||||
//
|
||||
// Speed:
|
||||
|
@ -722,10 +746,17 @@ static void lcd_tune_menu() {
|
|||
END_MENU();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* "Prepare" submenu items
|
||||
*
|
||||
*/
|
||||
void _lcd_preheat(int endnum, const float temph, const float tempb, const int fan) {
|
||||
if (temph > 0) setTargetHotend(temph, endnum);
|
||||
#if TEMP_SENSOR_BED != 0
|
||||
setTargetBed(tempb);
|
||||
#else
|
||||
UNUSED(tempb);
|
||||
#endif
|
||||
#if FAN_COUNT > 0
|
||||
#if FAN_COUNT > 1
|
||||
|
@ -733,6 +764,8 @@ void _lcd_preheat(int endnum, const float temph, const float tempb, const int fa
|
|||
#else
|
||||
fanSpeeds[0] = fan;
|
||||
#endif
|
||||
#else
|
||||
UNUSED(fan);
|
||||
#endif
|
||||
lcd_return_to_status();
|
||||
}
|
||||
|
@ -778,7 +811,7 @@ void _lcd_preheat(int endnum, const float temph, const float tempb, const int fa
|
|||
|
||||
static void lcd_preheat_pla_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
||||
MENU_ITEM(back, MSG_PREPARE);
|
||||
#if EXTRUDERS == 1
|
||||
MENU_ITEM(function, MSG_PREHEAT_PLA, lcd_preheat_pla0);
|
||||
#else
|
||||
|
@ -800,7 +833,7 @@ void _lcd_preheat(int endnum, const float temph, const float tempb, const int fa
|
|||
|
||||
static void lcd_preheat_abs_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
||||
MENU_ITEM(back, MSG_PREPARE);
|
||||
#if EXTRUDERS == 1
|
||||
MENU_ITEM(function, MSG_PREHEAT_ABS, lcd_preheat_abs0);
|
||||
#else
|
||||
|
@ -830,6 +863,158 @@ void lcd_cooldown() {
|
|||
lcd_return_to_status();
|
||||
}
|
||||
|
||||
#if ENABLED(SDSUPPORT) && ENABLED(MENU_ADDAUTOSTART)
|
||||
|
||||
static void lcd_autostart_sd() {
|
||||
card.autostart_index = 0;
|
||||
card.setroot();
|
||||
card.checkautostart(true);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if ENABLED(MANUAL_BED_LEVELING)
|
||||
|
||||
/**
|
||||
*
|
||||
* "Prepare" > "Bed Leveling" handlers
|
||||
*
|
||||
*/
|
||||
|
||||
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_procedure() {
|
||||
static bool mbl_wait_for_move = false;
|
||||
// Menu handlers may be called in a re-entrant fashion
|
||||
// if they call st_synchronize or plan_buffer_line. So
|
||||
// while waiting for a move we just ignore new input.
|
||||
if (mbl_wait_for_move) {
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
return;
|
||||
}
|
||||
|
||||
ENCODER_DIRECTION_NORMAL();
|
||||
|
||||
// Encoder wheel adjusts the Z position
|
||||
if (encoderPosition && movesplanned() <= 3) {
|
||||
refresh_cmd_timeout();
|
||||
current_position[Z_AXIS] += float((int)encoderPosition) * (MBL_Z_STEP);
|
||||
if (min_software_endstops) NOLESS(current_position[Z_AXIS], Z_MIN_POS);
|
||||
if (max_software_endstops) NOMORE(current_position[Z_AXIS], Z_MAX_POS);
|
||||
encoderPosition = 0;
|
||||
line_to_current(Z_AXIS);
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
}
|
||||
|
||||
// Update on first display, then only on updates to Z position
|
||||
if (lcdDrawUpdate) {
|
||||
float v = current_position[Z_AXIS] - MESH_HOME_SEARCH_Z;
|
||||
lcd_implementation_drawedit(PSTR(MSG_MOVE_Z), ftostr43(v + (v < 0 ? -0.0001 : 0.0001), '+'));
|
||||
}
|
||||
|
||||
// We want subsequent calls, but don't force redraw
|
||||
// Set here so it can be overridden by lcd_return_to_status below
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
|
||||
// Click sets the current Z and moves to the next position
|
||||
static bool debounce_click = false;
|
||||
if (LCD_CLICKED) {
|
||||
if (!debounce_click) {
|
||||
debounce_click = true; // ignore multiple "clicks" in a row
|
||||
int ix = _lcd_level_bed_position % (MESH_NUM_X_POINTS),
|
||||
iy = _lcd_level_bed_position / (MESH_NUM_X_POINTS);
|
||||
if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag
|
||||
mbl.set_z(ix, iy, current_position[Z_AXIS]);
|
||||
_lcd_level_bed_position++;
|
||||
if (_lcd_level_bed_position == (MESH_NUM_X_POINTS) * (MESH_NUM_Y_POINTS)) {
|
||||
lcd_return_to_status();
|
||||
LCD_ALERTMESSAGEPGM(MSG_LEVEL_BED_DONE);
|
||||
#if HAS_BUZZER
|
||||
buzz(200, 659);
|
||||
buzz(200, 698);
|
||||
#endif
|
||||
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||
line_to_current(Z_AXIS);
|
||||
st_synchronize();
|
||||
mbl.active = 1;
|
||||
enqueue_and_echo_commands_P(PSTR("G28"));
|
||||
}
|
||||
else {
|
||||
#if ENABLED(NEWPANEL)
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
mbl_wait_for_move = true;
|
||||
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||
line_to_current(Z_AXIS);
|
||||
ix = _lcd_level_bed_position % (MESH_NUM_X_POINTS);
|
||||
iy = _lcd_level_bed_position / (MESH_NUM_X_POINTS);
|
||||
if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag
|
||||
current_position[X_AXIS] = mbl.get_x(ix);
|
||||
current_position[Y_AXIS] = mbl.get_y(iy);
|
||||
line_to_current(manual_feedrate[X_AXIS] <= manual_feedrate[Y_AXIS] ? X_AXIS : Y_AXIS);
|
||||
st_synchronize();
|
||||
mbl_wait_for_move = false;
|
||||
encoderPosition = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
debounce_click = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void _lcd_level_bed_homing_done() {
|
||||
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_WAITING), NULL);
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
if (LCD_CLICKED) {
|
||||
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||
current_position[X_AXIS] = MESH_MIN_X;
|
||||
current_position[Y_AXIS] = MESH_MIN_Y;
|
||||
line_to_current(manual_feedrate[X_AXIS] <= manual_feedrate[Y_AXIS] ? X_AXIS : Y_AXIS);
|
||||
_lcd_level_bed_position = 0;
|
||||
lcd_goto_menu(_lcd_level_bed_procedure, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* MBL Move to mesh starting point
|
||||
*/
|
||||
static void _lcd_level_bed_homing() {
|
||||
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_HOMING), NULL);
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS])
|
||||
lcd_goto_menu(_lcd_level_bed_homing_done);
|
||||
}
|
||||
|
||||
/**
|
||||
* MBL Continue Bed Leveling...
|
||||
*/
|
||||
static void _lcd_level_bed_continue() {
|
||||
defer_return_to_status = true;
|
||||
axis_known_position[X_AXIS] = axis_known_position[Y_AXIS] = axis_known_position[Z_AXIS] = false;
|
||||
mbl.reset();
|
||||
enqueue_and_echo_commands_P(PSTR("G28"));
|
||||
lcd_goto_menu(_lcd_level_bed_homing);
|
||||
}
|
||||
|
||||
/**
|
||||
* MBL entry-point
|
||||
*/
|
||||
static void lcd_level_bed() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_LEVEL_BED_CANCEL);
|
||||
MENU_ITEM(submenu, MSG_LEVEL_BED, _lcd_level_bed_continue);
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#endif // MANUAL_BED_LEVELING
|
||||
|
||||
/**
|
||||
*
|
||||
* "Prepare" submenu
|
||||
|
@ -842,7 +1027,7 @@ static void lcd_prepare_menu() {
|
|||
//
|
||||
// ^ Main
|
||||
//
|
||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||
MENU_ITEM(back, MSG_MAIN);
|
||||
|
||||
//
|
||||
// Auto Home
|
||||
|
@ -918,7 +1103,7 @@ static void lcd_prepare_menu() {
|
|||
|
||||
static void lcd_delta_calibrate_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||
MENU_ITEM(back, MSG_MAIN);
|
||||
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
|
||||
MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_X, PSTR("G0 F8000 X-77.94 Y-45 Z0"));
|
||||
MENU_ITEM(gcode, MSG_DELTA_CALIBRATE_Y, PSTR("G0 F8000 X77.94 Y-45 Z0"));
|
||||
|
@ -929,15 +1114,6 @@ static void lcd_prepare_menu() {
|
|||
|
||||
#endif // DELTA_CALIBRATION_MENU
|
||||
|
||||
inline void line_to_current(AxisEnum axis) {
|
||||
#if ENABLED(DELTA)
|
||||
calculate_delta(current_position);
|
||||
plan_buffer_line(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder);
|
||||
#else
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis]/60, active_extruder);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* "Prepare" > "Move Axis" submenu
|
||||
|
@ -945,11 +1121,10 @@ inline void line_to_current(AxisEnum axis) {
|
|||
*/
|
||||
|
||||
float move_menu_scale;
|
||||
static void lcd_move_menu_axis();
|
||||
|
||||
static void _lcd_move(const char* name, AxisEnum axis, int min, int max) {
|
||||
static void _lcd_move(const char* name, AxisEnum axis, float min, float max) {
|
||||
ENCODER_DIRECTION_NORMAL();
|
||||
if ((encoderPosition != 0) && (movesplanned() <= 3)) {
|
||||
if (encoderPosition && movesplanned() <= 3) {
|
||||
refresh_cmd_timeout();
|
||||
current_position[axis] += float((int)encoderPosition) * move_menu_scale;
|
||||
if (min_software_endstops) NOLESS(current_position[axis], min);
|
||||
|
@ -959,18 +1134,18 @@ static void _lcd_move(const char* name, AxisEnum axis, int min, int max) {
|
|||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_REDRAW;
|
||||
}
|
||||
if (lcdDrawUpdate) lcd_implementation_drawedit(name, ftostr31(current_position[axis]));
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu();
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
||||
}
|
||||
#if ENABLED(DELTA)
|
||||
static float delta_clip_radius_2 = (DELTA_PRINTABLE_RADIUS) * (DELTA_PRINTABLE_RADIUS);
|
||||
static int delta_clip( float a ) { return sqrt(delta_clip_radius_2 - a*a); }
|
||||
static void lcd_move_x() { int clip = delta_clip(current_position[Y_AXIS]); _lcd_move(PSTR(MSG_MOVE_X), X_AXIS, max(X_MIN_POS, -clip), min(X_MAX_POS, clip)); }
|
||||
static void lcd_move_y() { int clip = delta_clip(current_position[X_AXIS]); _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, max(Y_MIN_POS, -clip), min(Y_MAX_POS, clip)); }
|
||||
static void lcd_move_x() { int clip = delta_clip(current_position[Y_AXIS]); _lcd_move(PSTR(MSG_MOVE_X), X_AXIS, max(min_pos[X_AXIS], -clip), min(max_pos[X_AXIS], clip)); }
|
||||
static void lcd_move_y() { int clip = delta_clip(current_position[X_AXIS]); _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, max(min_pos[Y_AXIS], -clip), min(max_pos[Y_AXIS], clip)); }
|
||||
#else
|
||||
static void lcd_move_x() { _lcd_move(PSTR(MSG_MOVE_X), X_AXIS, X_MIN_POS, X_MAX_POS); }
|
||||
static void lcd_move_y() { _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, Y_MIN_POS, Y_MAX_POS); }
|
||||
static void lcd_move_x() { _lcd_move(PSTR(MSG_MOVE_X), X_AXIS, min_pos[X_AXIS], max_pos[X_AXIS]); }
|
||||
static void lcd_move_y() { _lcd_move(PSTR(MSG_MOVE_Y), Y_AXIS, min_pos[Y_AXIS], max_pos[Y_AXIS]); }
|
||||
#endif
|
||||
static void lcd_move_z() { _lcd_move(PSTR(MSG_MOVE_Z), Z_AXIS, Z_MIN_POS, Z_MAX_POS); }
|
||||
static void lcd_move_z() { _lcd_move(PSTR(MSG_MOVE_Z), Z_AXIS, min_pos[Z_AXIS], max_pos[Z_AXIS]); }
|
||||
static void lcd_move_e(
|
||||
#if EXTRUDERS > 1
|
||||
uint8_t e
|
||||
|
@ -981,7 +1156,7 @@ static void lcd_move_e(
|
|||
unsigned short original_active_extruder = active_extruder;
|
||||
active_extruder = e;
|
||||
#endif
|
||||
if ((encoderPosition != 0) && (movesplanned() <= 3)) {
|
||||
if (encoderPosition && movesplanned() <= 3) {
|
||||
current_position[E_AXIS] += float((int)encoderPosition) * move_menu_scale;
|
||||
encoderPosition = 0;
|
||||
line_to_current(E_AXIS);
|
||||
|
@ -1005,7 +1180,7 @@ static void lcd_move_e(
|
|||
#endif //EXTRUDERS > 1
|
||||
lcd_implementation_drawedit(pos_label, ftostr31(current_position[E_AXIS]));
|
||||
}
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu();
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
||||
#if EXTRUDERS > 1
|
||||
active_extruder = original_active_extruder;
|
||||
#endif
|
||||
|
@ -1028,13 +1203,22 @@ static void lcd_move_e(
|
|||
*
|
||||
*/
|
||||
|
||||
static void lcd_move_menu_axis() {
|
||||
#if ENABLED(DELTA) || ENABLED(SCARA)
|
||||
#define _MOVE_XYZ_ALLOWED (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS])
|
||||
#else
|
||||
#define _MOVE_XYZ_ALLOWED true
|
||||
#endif
|
||||
|
||||
static void _lcd_move_menu_axis() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_MOVE_AXIS, lcd_move_menu);
|
||||
MENU_ITEM(back, MSG_MOVE_AXIS);
|
||||
|
||||
if (_MOVE_XYZ_ALLOWED) {
|
||||
MENU_ITEM(submenu, MSG_MOVE_X, lcd_move_x);
|
||||
MENU_ITEM(submenu, MSG_MOVE_Y, lcd_move_y);
|
||||
}
|
||||
if (move_menu_scale < 10.0) {
|
||||
MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z);
|
||||
if (_MOVE_XYZ_ALLOWED) MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z);
|
||||
#if EXTRUDERS == 1
|
||||
MENU_ITEM(submenu, MSG_MOVE_E, lcd_move_e);
|
||||
#else
|
||||
|
@ -1053,15 +1237,15 @@ static void lcd_move_menu_axis() {
|
|||
|
||||
static void lcd_move_menu_10mm() {
|
||||
move_menu_scale = 10.0;
|
||||
lcd_move_menu_axis();
|
||||
_lcd_move_menu_axis();
|
||||
}
|
||||
static void lcd_move_menu_1mm() {
|
||||
move_menu_scale = 1.0;
|
||||
lcd_move_menu_axis();
|
||||
_lcd_move_menu_axis();
|
||||
}
|
||||
static void lcd_move_menu_01mm() {
|
||||
move_menu_scale = 0.1;
|
||||
lcd_move_menu_axis();
|
||||
_lcd_move_menu_axis();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1072,8 +1256,11 @@ static void lcd_move_menu_01mm() {
|
|||
|
||||
static void lcd_move_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_PREPARE, lcd_prepare_menu);
|
||||
MENU_ITEM(back, MSG_PREPARE);
|
||||
|
||||
if (_MOVE_XYZ_ALLOWED)
|
||||
MENU_ITEM(submenu, MSG_MOVE_10MM, lcd_move_menu_10mm);
|
||||
|
||||
MENU_ITEM(submenu, MSG_MOVE_1MM, lcd_move_menu_1mm);
|
||||
MENU_ITEM(submenu, MSG_MOVE_01MM, lcd_move_menu_01mm);
|
||||
//TODO:X,Y,Z,E
|
||||
|
@ -1088,7 +1275,7 @@ static void lcd_move_menu() {
|
|||
|
||||
static void lcd_control_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||
MENU_ITEM(back, MSG_MAIN);
|
||||
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu);
|
||||
MENU_ITEM(submenu, MSG_VOLUMETRIC, lcd_control_volumetric_menu);
|
||||
|
@ -1146,10 +1333,16 @@ static void lcd_control_menu() {
|
|||
// Helpers for editing PID Ki & Kd values
|
||||
// grab the PID value out of the temp variable; scale it; then update the PID driver
|
||||
void copy_and_scalePID_i(int e) {
|
||||
#if DISABLED(PID_PARAMS_PER_EXTRUDER)
|
||||
UNUSED(e);
|
||||
#endif
|
||||
PID_PARAM(Ki, e) = scalePID_i(raw_Ki);
|
||||
updatePID();
|
||||
}
|
||||
void copy_and_scalePID_d(int e) {
|
||||
#if DISABLED(PID_PARAMS_PER_EXTRUDER)
|
||||
UNUSED(e);
|
||||
#endif
|
||||
PID_PARAM(Kd, e) = scalePID_d(raw_Kd);
|
||||
updatePID();
|
||||
}
|
||||
|
@ -1191,7 +1384,7 @@ static void lcd_control_temperature_menu() {
|
|||
//
|
||||
// ^ Control
|
||||
//
|
||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||
MENU_ITEM(back, MSG_CONTROL);
|
||||
|
||||
//
|
||||
// Nozzle:
|
||||
|
@ -1323,7 +1516,7 @@ static void lcd_control_temperature_menu() {
|
|||
*/
|
||||
static void lcd_control_temperature_preheat_pla_settings_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||
MENU_ITEM(back, MSG_TEMPERATURE);
|
||||
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &plaPreheatFanSpeed, 0, 255);
|
||||
#if TEMP_SENSOR_0 != 0
|
||||
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &plaPreheatHotendTemp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15);
|
||||
|
@ -1344,7 +1537,7 @@ static void lcd_control_temperature_preheat_pla_settings_menu() {
|
|||
*/
|
||||
static void lcd_control_temperature_preheat_abs_settings_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||
MENU_ITEM(back, MSG_TEMPERATURE);
|
||||
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &absPreheatFanSpeed, 0, 255);
|
||||
#if TEMP_SENSOR_0 != 0
|
||||
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &absPreheatHotendTemp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15);
|
||||
|
@ -1365,7 +1558,7 @@ static void lcd_control_temperature_preheat_abs_settings_menu() {
|
|||
*/
|
||||
static void lcd_control_motion_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||
MENU_ITEM(back, MSG_CONTROL);
|
||||
#if ENABLED(AUTO_BED_LEVELING_FEATURE)
|
||||
MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, Z_PROBE_OFFSET_RANGE_MIN, Z_PROBE_OFFSET_RANGE_MAX);
|
||||
#endif
|
||||
|
@ -1418,7 +1611,7 @@ static void lcd_control_motion_menu() {
|
|||
*/
|
||||
static void lcd_control_volumetric_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||
MENU_ITEM(back, MSG_CONTROL);
|
||||
|
||||
MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers);
|
||||
|
||||
|
@ -1448,7 +1641,7 @@ static void lcd_control_volumetric_menu() {
|
|||
#if ENABLED(HAS_LCD_CONTRAST)
|
||||
static void lcd_set_contrast() {
|
||||
ENCODER_DIRECTION_NORMAL();
|
||||
if (encoderPosition != 0) {
|
||||
if (encoderPosition) {
|
||||
#if ENABLED(U8GLIB_LM6059_AF)
|
||||
lcd_contrast += encoderPosition;
|
||||
lcd_contrast &= 0xFF;
|
||||
|
@ -1467,7 +1660,7 @@ static void lcd_control_volumetric_menu() {
|
|||
lcd_implementation_drawedit(PSTR(MSG_CONTRAST), itostr2(lcd_contrast));
|
||||
#endif
|
||||
}
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu();
|
||||
if (LCD_CLICKED) lcd_goto_previous_menu(true);
|
||||
}
|
||||
#endif // HAS_LCD_CONTRAST
|
||||
|
||||
|
@ -1479,7 +1672,7 @@ static void lcd_control_volumetric_menu() {
|
|||
#if ENABLED(FWRETRACT)
|
||||
static void lcd_control_retract_menu() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
|
||||
MENU_ITEM(back, MSG_CONTROL);
|
||||
MENU_ITEM_EDIT(bool, MSG_AUTORETRACT, &autoretract_enabled);
|
||||
MENU_ITEM_EDIT(float52, MSG_CONTROL_RETRACT, &retract_length, 0, 100);
|
||||
#if EXTRUDERS > 1
|
||||
|
@ -1520,7 +1713,7 @@ static void lcd_control_volumetric_menu() {
|
|||
if (lcdDrawUpdate == 0 && LCD_CLICKED == 0) return; // nothing to do (so don't thrash the SD card)
|
||||
uint16_t fileCnt = card.getnrfilenames();
|
||||
START_MENU();
|
||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||
MENU_ITEM(back, MSG_MAIN);
|
||||
card.getWorkDirName();
|
||||
if (card.filename[0] == '/') {
|
||||
#if !PIN_EXISTS(SD_DETECT)
|
||||
|
@ -1589,7 +1782,7 @@ static void lcd_control_volumetric_menu() {
|
|||
lcd_implementation_drawedit(editLabel, _strFunc(((_type)((int32_t)encoderPosition + minEditValue)) / scale)); \
|
||||
if (isClicked) { \
|
||||
*((_type*)editValue) = ((_type)((int32_t)encoderPosition + minEditValue)) / scale; \
|
||||
lcd_goto_previous_menu(); \
|
||||
lcd_goto_previous_menu(true); \
|
||||
} \
|
||||
return isClicked; \
|
||||
} \
|
||||
|
@ -1599,7 +1792,6 @@ static void lcd_control_volumetric_menu() {
|
|||
lcd_save_previous_menu(); \
|
||||
\
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CLEAR_CALL_REDRAW; \
|
||||
currentMenu = menu_edit_ ## _name; \
|
||||
\
|
||||
editLabel = pstr; \
|
||||
editValue = ptr; \
|
||||
|
@ -1616,14 +1808,14 @@ static void lcd_control_volumetric_menu() {
|
|||
currentMenu = menu_edit_callback_ ## _name; \
|
||||
callbackFunc = callback; \
|
||||
}
|
||||
menu_edit_type(int, int3, itostr3, 1)
|
||||
menu_edit_type(float, float3, ftostr3, 1)
|
||||
menu_edit_type(float, float32, ftostr32, 100)
|
||||
menu_edit_type(float, float43, ftostr43, 1000)
|
||||
menu_edit_type(float, float5, ftostr5, 0.01)
|
||||
menu_edit_type(float, float51, ftostr51, 10)
|
||||
menu_edit_type(float, float52, ftostr52, 100)
|
||||
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
||||
menu_edit_type(int, int3, itostr3, 1);
|
||||
menu_edit_type(float, float3, ftostr3, 1);
|
||||
menu_edit_type(float, float32, ftostr32, 100);
|
||||
menu_edit_type(float, float43, ftostr43, 1000);
|
||||
menu_edit_type(float, float5, ftostr5, 0.01);
|
||||
menu_edit_type(float, float51, ftostr51, 10);
|
||||
menu_edit_type(float, float52, ftostr52, 100);
|
||||
menu_edit_type(unsigned long, long5, ftostr5, 0.01);
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -1662,7 +1854,7 @@ menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
|||
lcd_move_y();
|
||||
}
|
||||
static void reprapworld_keypad_move_home() {
|
||||
enqueue_and_echo_commands_P((PSTR("G28"))); // move all axis home
|
||||
enqueue_and_echo_commands_P(PSTR("G28")); // move all axes home
|
||||
}
|
||||
#endif // REPRAPWORLD_KEYPAD
|
||||
|
||||
|
@ -1712,7 +1904,7 @@ void lcd_quick_feedback() {
|
|||
* Menu actions
|
||||
*
|
||||
*/
|
||||
static void menu_action_back(menuFunc_t func) { lcd_goto_menu(func); }
|
||||
static void menu_action_back() { lcd_goto_previous_menu(); }
|
||||
static void menu_action_submenu(menuFunc_t func) { lcd_save_previous_menu(); lcd_goto_menu(func); }
|
||||
static void menu_action_gcode(const char* pgcode) { enqueue_and_echo_commands_P(pgcode); }
|
||||
static void menu_action_function(menuFunc_t func) { (*func)(); }
|
||||
|
@ -1720,18 +1912,20 @@ static void menu_action_function(menuFunc_t func) { (*func)(); }
|
|||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
static void menu_action_sdfile(const char* filename, char* longFilename) {
|
||||
UNUSED(longFilename);
|
||||
card.openAndPrintFile(filename);
|
||||
lcd_return_to_status();
|
||||
}
|
||||
|
||||
static void menu_action_sddirectory(const char* filename, char* longFilename) {
|
||||
UNUSED(longFilename);
|
||||
card.chdir(filename);
|
||||
encoderPosition = 0;
|
||||
}
|
||||
|
||||
#endif //SDSUPPORT
|
||||
|
||||
static void menu_action_setting_edit_bool(const char* pstr, bool* ptr) { *ptr = !(*ptr); }
|
||||
static void menu_action_setting_edit_bool(const char* pstr, bool* ptr) {UNUSED(pstr); *ptr = !(*ptr); }
|
||||
static void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, menuFunc_t callback) {
|
||||
menu_action_setting_edit_bool(pstr, ptr);
|
||||
(*callback)();
|
||||
|
@ -1909,13 +2103,22 @@ void lcd_update() {
|
|||
#if ENABLED(ULTIPANEL)
|
||||
|
||||
#if ENABLED(REPRAPWORLD_KEYPAD)
|
||||
|
||||
#if ENABLED(DELTA) || ENABLED(SCARA)
|
||||
#define _KEYPAD_MOVE_ALLOWED (axis_homed[X_AXIS] && axis_homed[Y_AXIS] && axis_homed[Z_AXIS])
|
||||
#else
|
||||
#define _KEYPAD_MOVE_ALLOWED true
|
||||
#endif
|
||||
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_HOME) reprapworld_keypad_move_home();
|
||||
if (_KEYPAD_MOVE_ALLOWED) {
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) reprapworld_keypad_move_z_up();
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) reprapworld_keypad_move_z_down();
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) reprapworld_keypad_move_x_left();
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) reprapworld_keypad_move_x_right();
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) reprapworld_keypad_move_y_down();
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) reprapworld_keypad_move_y_up();
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_HOME) reprapworld_keypad_move_home();
|
||||
}
|
||||
#endif
|
||||
|
||||
bool encoderPastThreshold = (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP);
|
||||
|
@ -2000,7 +2203,7 @@ void lcd_update() {
|
|||
// Return to Status Screen after a timeout
|
||||
if (defer_return_to_status)
|
||||
return_to_status_ms = ms + LCD_TIMEOUT_TO_STATUS;
|
||||
else if (currentMenu != lcd_status_screen && millis() > return_to_status_ms) {
|
||||
else if (currentMenu != lcd_status_screen && ms > return_to_status_ms) {
|
||||
lcd_return_to_status();
|
||||
}
|
||||
|
||||
|
@ -2031,6 +2234,10 @@ void lcd_ignore_click(bool b) {
|
|||
}
|
||||
|
||||
void lcd_finishstatus(bool persist=false) {
|
||||
#if !(ENABLED(LCD_PROGRESS_BAR) && (PROGRESS_MSG_EXPIRE > 0))
|
||||
UNUSED(persist);
|
||||
#endif
|
||||
|
||||
#if ENABLED(LCD_PROGRESS_BAR)
|
||||
progress_bar_ms = millis();
|
||||
#if PROGRESS_MSG_EXPIRE > 0
|
||||
|
@ -2473,138 +2680,4 @@ char* ftostr52(const float& x) {
|
|||
return conv;
|
||||
}
|
||||
|
||||
#if ENABLED(MANUAL_BED_LEVELING)
|
||||
|
||||
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_procedure() {
|
||||
static bool mbl_wait_for_move = false;
|
||||
// Menu handlers may be called in a re-entrant fashion
|
||||
// if they call st_synchronize or plan_buffer_line. So
|
||||
// while waiting for a move we just ignore new input.
|
||||
if (mbl_wait_for_move) {
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
return;
|
||||
}
|
||||
|
||||
ENCODER_DIRECTION_NORMAL();
|
||||
|
||||
// Encoder wheel adjusts the Z position
|
||||
if (encoderPosition != 0 && movesplanned() <= 3) {
|
||||
refresh_cmd_timeout();
|
||||
current_position[Z_AXIS] += float((int)encoderPosition) * (MBL_Z_STEP);
|
||||
if (min_software_endstops) NOLESS(current_position[Z_AXIS], Z_MIN_POS);
|
||||
if (max_software_endstops) NOMORE(current_position[Z_AXIS], Z_MAX_POS);
|
||||
encoderPosition = 0;
|
||||
line_to_current(Z_AXIS);
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
}
|
||||
|
||||
// Update on first display, then only on updates to Z position
|
||||
if (lcdDrawUpdate) {
|
||||
float v = current_position[Z_AXIS] - MESH_HOME_SEARCH_Z;
|
||||
lcd_implementation_drawedit(PSTR(MSG_MOVE_Z), ftostr43(v + (v < 0 ? -0.0001 : 0.0001), '+'));
|
||||
}
|
||||
|
||||
// We want subsequent calls, but don't force redraw
|
||||
// Set here so it can be overridden by lcd_return_to_status below
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
|
||||
// Click sets the current Z and moves to the next position
|
||||
static bool debounce_click = false;
|
||||
if (LCD_CLICKED) {
|
||||
if (!debounce_click) {
|
||||
debounce_click = true; // ignore multiple "clicks" in a row
|
||||
int ix = _lcd_level_bed_position % (MESH_NUM_X_POINTS),
|
||||
iy = _lcd_level_bed_position / (MESH_NUM_X_POINTS);
|
||||
if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag
|
||||
mbl.set_z(ix, iy, current_position[Z_AXIS]);
|
||||
_lcd_level_bed_position++;
|
||||
if (_lcd_level_bed_position == (MESH_NUM_X_POINTS) * (MESH_NUM_Y_POINTS)) {
|
||||
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||
mbl_wait_for_move = true;
|
||||
line_to_current(Z_AXIS);
|
||||
st_synchronize();
|
||||
mbl.active = 1;
|
||||
enqueue_and_echo_commands_P(PSTR("G28"));
|
||||
mbl_wait_for_move = false;
|
||||
lcd_return_to_status();
|
||||
#if ENABLED(NEWPANEL)
|
||||
lcd_quick_feedback();
|
||||
#endif
|
||||
LCD_ALERTMESSAGEPGM(MSG_LEVEL_BED_DONE);
|
||||
#if HAS_BUZZER
|
||||
buzz(200, 659);
|
||||
buzz(200, 698);
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||
line_to_current(Z_AXIS);
|
||||
ix = _lcd_level_bed_position % (MESH_NUM_X_POINTS);
|
||||
iy = _lcd_level_bed_position / (MESH_NUM_X_POINTS);
|
||||
if (iy & 1) ix = (MESH_NUM_X_POINTS - 1) - ix; // Zig zag
|
||||
current_position[X_AXIS] = mbl.get_x(ix);
|
||||
current_position[Y_AXIS] = mbl.get_y(iy);
|
||||
line_to_current(manual_feedrate[X_AXIS] <= manual_feedrate[Y_AXIS] ? X_AXIS : Y_AXIS);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
debounce_click = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void _lcd_level_bed_homing_done() {
|
||||
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_WAITING), NULL);
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
if (LCD_CLICKED) {
|
||||
current_position[Z_AXIS] = MESH_HOME_SEARCH_Z;
|
||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||
current_position[X_AXIS] = MESH_MIN_X;
|
||||
current_position[Y_AXIS] = MESH_MIN_Y;
|
||||
line_to_current(manual_feedrate[X_AXIS] <= manual_feedrate[Y_AXIS] ? X_AXIS : Y_AXIS);
|
||||
_lcd_level_bed_position = 0;
|
||||
lcd_goto_menu(_lcd_level_bed_procedure, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* MBL Move to mesh starting point
|
||||
*/
|
||||
static void _lcd_level_bed_homing() {
|
||||
if (lcdDrawUpdate) lcd_implementation_drawedit(PSTR(MSG_LEVEL_BED_HOMING), NULL);
|
||||
lcdDrawUpdate = LCD_DRAW_UPDATE_CALL_NO_REDRAW;
|
||||
if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS])
|
||||
lcd_goto_menu(_lcd_level_bed_homing_done);
|
||||
}
|
||||
|
||||
/**
|
||||
* MBL Continue Bed Leveling...
|
||||
*/
|
||||
static void _lcd_level_bed_continue() {
|
||||
defer_return_to_status = true;
|
||||
axis_known_position[X_AXIS] = axis_known_position[Y_AXIS] = axis_known_position[Z_AXIS] = false;
|
||||
mbl.reset();
|
||||
enqueue_and_echo_commands_P(PSTR("G28"));
|
||||
lcd_goto_menu(_lcd_level_bed_homing, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* MBL entry-point
|
||||
*/
|
||||
static void lcd_level_bed() {
|
||||
START_MENU();
|
||||
MENU_ITEM(back, "Cancel", lcd_prepare_menu);
|
||||
MENU_ITEM(submenu, MSG_LEVEL_BED, _lcd_level_bed_continue);
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#endif // MANUAL_BED_LEVELING
|
||||
|
||||
#endif // ULTRA_LCD
|
||||
|
|
|
@ -65,9 +65,6 @@
|
|||
#if ENABLED(ULTIPANEL)
|
||||
void lcd_buttons_update();
|
||||
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
||||
#if ENABLED(REPRAPWORLD_KEYPAD)
|
||||
extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
|
||||
#endif
|
||||
#else
|
||||
FORCE_INLINE void lcd_buttons_update() {}
|
||||
#endif
|
||||
|
@ -89,33 +86,52 @@
|
|||
void lcd_ignore_click(bool b=true);
|
||||
bool lcd_blink();
|
||||
|
||||
#if ENABLED(ULTIPANEL) && ENABLED(REPRAPWORLD_KEYPAD)
|
||||
|
||||
#define REPRAPWORLD_BTN_OFFSET 0 // bit offset into buttons for shift register values
|
||||
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_F3 0
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_F2 1
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_F1 2
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_DOWN 3
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_RIGHT 4
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_MIDDLE 5
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_UP 6
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_LEFT 7
|
||||
|
||||
#define EN_REPRAPWORLD_KEYPAD_F3 (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F3))
|
||||
#define EN_REPRAPWORLD_KEYPAD_F2 (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F2))
|
||||
#define EN_REPRAPWORLD_KEYPAD_F1 (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_F1))
|
||||
#define EN_REPRAPWORLD_KEYPAD_DOWN (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_DOWN))
|
||||
#define EN_REPRAPWORLD_KEYPAD_RIGHT (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_RIGHT))
|
||||
#define EN_REPRAPWORLD_KEYPAD_MIDDLE (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_MIDDLE))
|
||||
#define EN_REPRAPWORLD_KEYPAD_UP (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_UP))
|
||||
#define EN_REPRAPWORLD_KEYPAD_LEFT (_BV(REPRAPWORLD_BTN_OFFSET + BLEN_REPRAPWORLD_KEYPAD_LEFT))
|
||||
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F3)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_F2)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_DOWN)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_RIGHT)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_MIDDLE)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_UP)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad & EN_REPRAPWORLD_KEYPAD_LEFT)
|
||||
|
||||
#endif //ULTIPANEL && REPRAPWORLD_KEYPAD
|
||||
|
||||
#if ENABLED(NEWPANEL)
|
||||
|
||||
#define EN_C (_BV(BLEN_C))
|
||||
#define EN_B (_BV(BLEN_B))
|
||||
#define EN_A (_BV(BLEN_A))
|
||||
|
||||
#if ENABLED(REPRAPWORLD_KEYPAD)
|
||||
#define EN_REPRAPWORLD_KEYPAD_F3 (_BV(BLEN_REPRAPWORLD_KEYPAD_F3))
|
||||
#define EN_REPRAPWORLD_KEYPAD_F2 (_BV(BLEN_REPRAPWORLD_KEYPAD_F2))
|
||||
#define EN_REPRAPWORLD_KEYPAD_F1 (_BV(BLEN_REPRAPWORLD_KEYPAD_F1))
|
||||
#define EN_REPRAPWORLD_KEYPAD_UP (_BV(BLEN_REPRAPWORLD_KEYPAD_UP))
|
||||
#define EN_REPRAPWORLD_KEYPAD_RIGHT (_BV(BLEN_REPRAPWORLD_KEYPAD_RIGHT))
|
||||
#define EN_REPRAPWORLD_KEYPAD_MIDDLE (_BV(BLEN_REPRAPWORLD_KEYPAD_MIDDLE))
|
||||
#define EN_REPRAPWORLD_KEYPAD_DOWN (_BV(BLEN_REPRAPWORLD_KEYPAD_DOWN))
|
||||
#define EN_REPRAPWORLD_KEYPAD_LEFT (_BV(BLEN_REPRAPWORLD_KEYPAD_LEFT))
|
||||
|
||||
#define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1))
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F2)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F3)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_LEFT)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_RIGHT)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
|
||||
#else
|
||||
#define LCD_CLICKED (buttons&EN_C)
|
||||
#endif //REPRAPWORLD_KEYPAD
|
||||
#else
|
||||
#endif
|
||||
|
||||
#else //!NEWPANEL
|
||||
|
||||
//atomic, do not change
|
||||
#define B_LE (_BV(BL_LE))
|
||||
#define B_UP (_BV(BL_UP))
|
||||
|
@ -127,7 +143,8 @@
|
|||
#define EN_A (_BV(BLEN_A))
|
||||
|
||||
#define LCD_CLICKED ((buttons&B_MI)||(buttons&B_ST))
|
||||
#endif//NEWPANEL
|
||||
|
||||
#endif //!NEWPANEL
|
||||
|
||||
#else //no LCD
|
||||
FORCE_INLINE void lcd_update() {}
|
||||
|
|
|
@ -98,31 +98,8 @@ extern volatile uint8_t buttons; //an extended version of the last checked butt
|
|||
#endif
|
||||
|
||||
#elif ENABLED(REPRAPWORLD_KEYPAD)
|
||||
// define register bit values, don't change it
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_F3 0
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_F2 1
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_F1 2
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_UP 6
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_RIGHT 4
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_MIDDLE 5
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_DOWN 3
|
||||
#define BLEN_REPRAPWORLD_KEYPAD_LEFT 7
|
||||
|
||||
#define REPRAPWORLD_BTN_OFFSET 0 // bit offset into buttons for shift register values
|
||||
|
||||
#define EN_REPRAPWORLD_KEYPAD_F3 (_BV(BLEN_REPRAPWORLD_KEYPAD_F3+REPRAPWORLD_BTN_OFFSET))
|
||||
#define EN_REPRAPWORLD_KEYPAD_F2 (_BV(BLEN_REPRAPWORLD_KEYPAD_F2+REPRAPWORLD_BTN_OFFSET))
|
||||
#define EN_REPRAPWORLD_KEYPAD_F1 (_BV(BLEN_REPRAPWORLD_KEYPAD_F1+REPRAPWORLD_BTN_OFFSET))
|
||||
#define EN_REPRAPWORLD_KEYPAD_UP (_BV(BLEN_REPRAPWORLD_KEYPAD_UP+REPRAPWORLD_BTN_OFFSET))
|
||||
#define EN_REPRAPWORLD_KEYPAD_RIGHT (_BV(BLEN_REPRAPWORLD_KEYPAD_RIGHT+REPRAPWORLD_BTN_OFFSET))
|
||||
#define EN_REPRAPWORLD_KEYPAD_MIDDLE (_BV(BLEN_REPRAPWORLD_KEYPAD_MIDDLE+REPRAPWORLD_BTN_OFFSET))
|
||||
#define EN_REPRAPWORLD_KEYPAD_DOWN (_BV(BLEN_REPRAPWORLD_KEYPAD_DOWN+REPRAPWORLD_BTN_OFFSET))
|
||||
#define EN_REPRAPWORLD_KEYPAD_LEFT (_BV(BLEN_REPRAPWORLD_KEYPAD_LEFT+REPRAPWORLD_BTN_OFFSET))
|
||||
|
||||
//#define LCD_CLICKED ((buttons&EN_C) || (buttons&EN_REPRAPWORLD_KEYPAD_F1))
|
||||
//#define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons&EN_REPRAPWORLD_KEYPAD_DOWN)
|
||||
//#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons&EN_REPRAPWORLD_KEYPAD_UP)
|
||||
//#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons&EN_REPRAPWORLD_KEYPAD_MIDDLE)
|
||||
// REPRAPWORLD_KEYPAD defined in ultralcd.h
|
||||
|
||||
#elif ENABLED(NEWPANEL)
|
||||
#define LCD_CLICKED (buttons&EN_C)
|
||||
|
@ -739,9 +716,9 @@ static void lcd_implementation_status_screen() {
|
|||
|
||||
lcd.setCursor(LCD_WIDTH - 6, 2);
|
||||
lcd.print(LCD_STR_CLOCK[0]);
|
||||
if (print_job_start_ms != 0) {
|
||||
uint16_t time = (((print_job_stop_ms > print_job_start_ms)
|
||||
? print_job_stop_ms : millis()) - print_job_start_ms) / 60000;
|
||||
|
||||
uint16_t time = print_job_timer.duration() / 60;
|
||||
if (time != 0) {
|
||||
lcd.print(itostr2(time / 60));
|
||||
lcd.print(':');
|
||||
lcd.print(itostr2(time % 60));
|
||||
|
@ -873,6 +850,7 @@ void lcd_implementation_drawedit(const char* pstr, const char* value) {
|
|||
#if ENABLED(SDSUPPORT)
|
||||
|
||||
static void lcd_implementation_drawmenu_sd(bool sel, uint8_t row, const char* pstr, const char* filename, char* longFilename, uint8_t concat, char post_char) {
|
||||
UNUSED(pstr);
|
||||
char c;
|
||||
uint8_t n = LCD_WIDTH - concat;
|
||||
lcd.setCursor(0, row);
|
||||
|
@ -899,7 +877,7 @@ void lcd_implementation_drawedit(const char* pstr, const char* value) {
|
|||
|
||||
#endif //SDSUPPORT
|
||||
|
||||
#define lcd_implementation_drawmenu_back(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
|
||||
#define lcd_implementation_drawmenu_back(sel, row, pstr) lcd_implementation_drawmenu_generic(sel, row, pstr, LCD_STR_UPLEVEL[0], LCD_STR_UPLEVEL[0])
|
||||
#define lcd_implementation_drawmenu_submenu(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', LCD_STR_ARROW_RIGHT[0])
|
||||
#define lcd_implementation_drawmenu_gcode(sel, row, pstr, gcode) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
|
||||
#define lcd_implementation_drawmenu_function(sel, row, pstr, data) lcd_implementation_drawmenu_generic(sel, row, pstr, '>', ' ')
|
||||
|
|
Loading…
Reference in a new issue