M166 Gradients, LCD Menu for 2-channel Mixer (Geeetech A10M/A20M) (#13022)
parent
7ee35c2611
commit
6de3d34378
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,100 @@
|
||||
/**
|
||||
* 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 "../../../inc/MarlinConfig.h"
|
||||
|
||||
#if ENABLED(GRADIENT_MIX)
|
||||
|
||||
#include "../../gcode.h"
|
||||
#include "../../../module/motion.h"
|
||||
#include "../../../module/planner.h"
|
||||
#include "../../../feature/mixing.h"
|
||||
|
||||
inline void echo_mix() {
|
||||
SERIAL_ECHOPAIR(" (", int(mixer.mix[0]));
|
||||
SERIAL_ECHOPAIR("%|", int(mixer.mix[1]));
|
||||
SERIAL_ECHOPGM("%)");
|
||||
}
|
||||
|
||||
inline void echo_zt(const int t, const float &z) {
|
||||
mixer.update_mix_from_vtool(t);
|
||||
SERIAL_ECHOPAIR(" Z", z);
|
||||
SERIAL_ECHOPAIR(" T", t);
|
||||
echo_mix();
|
||||
}
|
||||
|
||||
/**
|
||||
* M166: Set a simple gradient mix for a two-component mixer
|
||||
* based on the Geeetech A10M implementation by Jone Liu.
|
||||
*
|
||||
* S[bool] - Enable / disable gradients
|
||||
* A[float] - Starting Z for the gradient
|
||||
* Z[float] - Ending Z for the gradient. (Must be greater than the starting Z.)
|
||||
* I[index] - V-Tool to use as the starting mix.
|
||||
* J[index] - V-Tool to use as the ending mix.
|
||||
*
|
||||
* T[index] - A V-Tool index to use as an alias for the Gradient (Requires GRADIENT_VTOOL)
|
||||
* T with no index clears the setting. Note: This can match the I or J value.
|
||||
*
|
||||
* Example: M166 S1 A0 Z20 I0 J1
|
||||
*/
|
||||
void GcodeSuite::M166() {
|
||||
if (parser.seenval('A')) mixer.gradient.start_z = parser.value_float();
|
||||
if (parser.seenval('Z')) mixer.gradient.end_z = parser.value_float();
|
||||
if (parser.seenval('I')) mixer.gradient.start_vtool = (uint8_t)constrain(parser.value_int(), 0, MIXING_VIRTUAL_TOOLS);
|
||||
if (parser.seenval('J')) mixer.gradient.end_vtool = (uint8_t)constrain(parser.value_int(), 0, MIXING_VIRTUAL_TOOLS);
|
||||
|
||||
#if ENABLED(GRADIENT_VTOOL)
|
||||
if (parser.seen('T')) mixer.gradient.vtool_index = parser.byteval('T', -1);
|
||||
#endif
|
||||
|
||||
if (parser.seen('S')) mixer.gradient.enabled = parser.value_bool();
|
||||
|
||||
SERIAL_ECHOPGM("Gradient Mix ");
|
||||
serialprint_onoff(mixer.gradient.enabled);
|
||||
|
||||
if (mixer.gradient.enabled) {
|
||||
|
||||
mixer.refresh_gradient();
|
||||
|
||||
#if ENABLED(GRADIENT_VTOOL)
|
||||
if (mixer.gradient.vtool_index >= 0) {
|
||||
SERIAL_ECHOPAIR(" (T", int(mixer.gradient.vtool_index));
|
||||
SERIAL_CHAR(')');
|
||||
}
|
||||
#endif
|
||||
|
||||
SERIAL_ECHOPGM(" ; Start");
|
||||
echo_zt(mixer.gradient.start_vtool, mixer.gradient.start_z);
|
||||
|
||||
SERIAL_ECHOPGM(" ; End");
|
||||
echo_zt(mixer.gradient.end_vtool, mixer.gradient.end_z);
|
||||
|
||||
mixer.update_mix_from_gradient();
|
||||
SERIAL_ECHOPAIR(" ; Current Z", planner.get_axis_position_mm(Z_AXIS));
|
||||
echo_mix();
|
||||
}
|
||||
|
||||
SERIAL_EOL();
|
||||
}
|
||||
|
||||
#endif // GRADIENT_MIX
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue