* Adds config parameter `PID_PARAMS_PER_EXTRUDER` - allows single PID
parameters to be used where this would be preferable (e.g. dual
identical extruders)
* When disabled, will use `float Kp, Ki, Kd, Kc;` as before.
Preprocessor macros used to switch between.
* ultralcd.cpp defines extra menus for extra parameters only where
required
* M301 reports `e:xx` only if independent pid parameters enabled
* EEPROM structure still leaves space for 3 extruders worth, when undef
will save single parameter to all extruder positions, but only read the
first
* Switching off saves approx 330 B with no LCD enabled, 2634B with LCD
(RRD) enabled: this is significant.
* LCD modifications should be tested.
This change introduces an improvement to G29 command on Marlin.
Auto bed leveling operation's reliability is based on the repeatability of the Z-probe switch and the servo. This change introduces an option to G29 command. When the G29 command is sent with an "e" option, during auto bed levelling the servo is not retracted between probes which decreases the bias on auto bed levelling resulting from servo.
G29 command does the auto bed probing as it is.
G29 E command engages the servo on first probing point, probes all points and retracts the servo after probing the last point.
Please comment your opinions, test on your printer and check the code on a programmer's perspective. (I am not a good programmer.)
* Depending on extruder count, will add menu items for ultralcd to edit
individual PID parameters for each extruder
* Added menu items to each language_xx.h
* Builds OK, but recommend testing with typical LCD
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
Small changes (and formatting to confuse the diff’er) which first
allows DOGLCD and LCD_PROGRESS_BAR to be enabled in tandem, then a
#warning (rather than error) that the extra progress bar / message
options don’t apply to graphical displays at this time. This leaves
open perhaps combining the progress bar and message area in some future
(or forked custom) graphical LCD display arrangement (at which time the
relevant variables may be moved into ultralcd.cpp with externs in
ultralcd.h). I also added a conditional error that the progress bar and
the filament display may not work well together.
logo is now 110 pixels wide and starts 9 pixels in from top left corner and also 9 pixels down from same corner... this will give a 9 pixel border all way round
ver info is placed centered and there is a 9 pixel from bottom of display to ver info
The previous calc was wrong. Between N points there are only N-1 gaps,
not N.
So changing AUTO_BED_LEVELING_GRID_POINTS to
(AUTO_BED_LEVELING_GRID_POINTS-1)
For cartesian bots, the X_AXIS is the real X movement and same for
Y_AXIS.
But for corexy bots, that is not true. The "X_AXIS" and "Y_AXIS" motors
(that should be named to A_AXIS
and B_AXIS) cannot be used for X and Y length, because A=X+Y and B=X-Y.
So we need to create other 2 "AXIS", named X_HEAD and Y_HEAD, meaning
the real displacement of the Head.
Having the real displacement of the head, we can calculate the total
movement length and apply the desired speed.
try, try again.
If 'OK' is garbled on sending PC won't receive it. Both machines will
wait on each other forever. This resends OK if nothing is heard from PC
for a while to avoid this bad case.
The compiler does not support comparing float values: "error: floating constant in preprocessor expression"
The loss in X/Y precision shouldn't matter for Z probes, as most microswitches or inductive sensors are larger than 1mm square anyway.
The compiler does not support comparing float values: "error: floating constant in preprocessor expression"
The loss in X/Y precision shouldn't matter for Z probes, as most microswitches or inductive sensors are larger than 1mm square anyway.
Somehow the pin definitions for the MAX6675 Slave Select/Chip Select got changed back to the hardware SPI SS/CS.
Pin 49 cannot be used as that is used by the SD card socket to detect if an SD card is present.
Pin 53 is the Hardware SPI SS, which is dedicated, nicely, to the SD card SS and therefore cannot be used as the MAX6675 SS
Pin 66 is in Aux2 port adjacent to the Hardware SPI interface port on RAMPS 1.4, and is currently not used for anything.
This is the optimal code for a self-contained formatter, although the
original code is crafty in being smaller and simpler, and can be
evaluated as using the original output as a scratch pad for state,
making the final formatter more straightforward. While this code is
longer, all code-paths are minimal.
This is the optimal code for a self-contained formatter, although the
original code is crafty in being smaller and simpler, and can be
evaluated as using the original output as a scratch pad for state,
making the final formatter more straightforward. While this code is
longer, all code-paths are minimal.
No matter what LANGUAGE_CHOICE was set to it would always take the en branch.
I revamped it a bit to use a macro to create the language include file name. This required a slight tweak to the RU declaration since it's special-cased in a couple places in code.
This is an attempt to pull my changes from #1222 over.
void manage_inactivity(bool ignore_stepper_queue=false)
standard is false so it is not necessary to change additional code. this
change should be better, hopefully nophead like this :)
- Fixed issue when BAL area probing is shorter than it should be for
grid probing
- Warning when BAL activated with Delta Kinematics
- Fix XY_TRAVEL_SPEED when homing Z axis
Current defaults are all 255. If it makes sense to reduce them, they should come down together, and
be in a PID_INTEGRAL_DRIVE_MAX <= PID_MAX <- BANG_MAX relationship.
Moved PSTR() macro to correct place which was causing the " initializer fails to determine size of '__c' " when attempting to compile with BABYSTEPPING enabled.
in
G0 to G3 were previously acknowledged in the get_command method, causing
them to be possibly acknowledged before commands coming after them that
were acknowledged in process_commands.
This patch fixes this, moving the acknowledgement of G0 to G3 to the
process_commands method as well. These commands are therefore no
longer acknowledged when the enter the cmd_buffer but instead only
acknowledged when the enter the plan_buffer.
Guaranteeing that commands are acknowledged in the same order in which
they were received by the firmware allows host software to be able to
track the life cycle of commands and such a better management of the
firmware's serial buffers as well as better internal command processing
and response parsing without having to depend on throwing an epic
amount of regular expressions against each line received back from the
firmware.
FixesErikZalm/Marlin#1147
For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
For the MORE_RAM option we need to buffer both the short and long
names, even though long names are sometimes redundant. Worst case, all
the names are max length. We can save some RAM by not storing these. We
could save more RAM by only storing the visible part of the long name.
Tosh stepper drivers need to be driven slower, so the stepper code
was interleaved to separate the pin HIGH from the pin LOW. This adds
enough instructions to make it work, without needing nops.
Tosh stepper drivers need to be driven slower, so the stepper code
was interleaved to separate the pin HIGH from the pin LOW. This adds
enough instructions to make it work, without needing nops.
Here comes a compile-time operation to match the extruder symbols on the
info screen to the set number of extruders in configuration.h.
When only one extruder is selected, the "1" on the symbol will not be
displayed.
Added support to show the filament width on the status line of the
graphic LCD. The status will show for 5 sec and then switch over to
data. Status can be seen by clicking the button.
Changes to support displaying the real-time filament width and the
volume factor on a 20x4 LCD. The data is displayed on the 4th line.
First the status message is displayed for 5 seconds, and then the
filament data is displayed. The status message can be seen by
re-selecting the info screen in the menu.
Add another comment on configuration.h for the value of thermistor.
I make a pull request on thermistortables.h with my thermistor (12),but y see there is a comment on configuration with number 12 but it's not present on thermistortables.h ?
Thx
The serial protocol has to stay machine readable, without having
to cope with a ton of different human language variants. So
just leave it at the original english version.
Should fixErikZalm/Marlin#1052
Improvement to avoid reinitializing delay buffer with every print. Fixed
issues in buffer indexing and memory out of bounds due to floating point
imprecision. Simplified the code by avoiding conversion to standard
diameter and 1cu mm extrusion, which caused complications in determining
mm extruded.
chdkActive was set to false regardless of (millis() - chdkHigh) being bigger than the CHDK_DELAY or not. So if (millis() - chdkHigh) wasn't bigger than the delay the first time, the CHDK would never be set back to LOW.
Also, don't return from the function, as there might be other stuff to do, after the CHDK check.
This feature allows the printer to read the filament diameter
automatically and adjust the printer in real time. Added code to read
an analog voltage that represents a filament diameter measurement. This
measurement is delayed in a ring buffer to compensate for sensors that
are a distance away from the extruder. The measurement is used to
adjust the volumetric_multiplier for the extruder. Some additional g
codes (M404, M405, M406, M407) are used to set parameters and turn
on/off the control. g code M221 is updated. Pins for RAMPS1.4, RAMBO,
and Printrboard are identified for analog input. The configuration file
is updated with relevant user parameters.
Original code is using WRITE from fastio, but original used pinMode to
set pin direction and did not use the fastio SET_INPUT or SET_OUTPUT.
This caused an issue with the rotary encoder interface to boards based
on teensyduino, since for teensyduino pin numbers for fastio and the
usual Arduino IO are different.