Commit 81e4f5c9 authored by Franco (nextime) Lanza's avatar Franco (nextime) Lanza

Merge remote-tracking branch 'upstream/dev' into dev

parents aa1b69a7 2dfd21c9
Pipeline #51 skipped
...@@ -138,7 +138,7 @@ ...@@ -138,7 +138,7 @@
* M595 - Set hotend AD595 offset and gain * M595 - Set hotend AD595 offset and gain
* M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal] * M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
* M605 - Set dual x-carriage movement mode: Smode [ X<duplication x-offset> Rduplication temp offset ] * M605 - Set dual x-carriage movement mode: Smode [ X<duplication x-offset> Rduplication temp offset ]
* M649 - laser set options * M649 - Set laser options. S<intensity> L<duration> P<ppm> B<set mode> R<raster mm per pulse> F<feedrate>
* M666 - Set z probe offset or Endstop and delta geometry adjustment. M666 L for list command * M666 - Set z probe offset or Endstop and delta geometry adjustment. M666 L for list command
* M906 - Set motor currents XYZ T0-4 E * M906 - Set motor currents XYZ T0-4 E
* M907 - Set digital trimpot motor current using axis codes. * M907 - Set digital trimpot motor current using axis codes.
......
### Version 4.2.83 ### Version 4.2.83
* Add Cooler and Hot Chamber * Add Cooler and Hot Chamber
* Add Laser Beam PWM and raster base64 ONLY ARDUINO MEGA * Add Laser Beam PWM and raster base64
### Version 4.2.82 ### Version 4.2.82
* Add DONDOLO_DUAL_MOTOR for DONDOLO bowden and dual extruder * Add DONDOLO_DUAL_MOTOR for DONDOLO bowden and dual extruder
......
...@@ -7687,7 +7687,7 @@ inline void gcode_M503() { ...@@ -7687,7 +7687,7 @@ inline void gcode_M503() {
if (code_seen('D') && IsRunning()) laser.diagnostics = (bool) code_value(); if (code_seen('D') && IsRunning()) laser.diagnostics = (bool) code_value();
// Wait for the rest // Wait for the rest
//st_synchronize(); // st_synchronize();
if (code_seen('S') && IsRunning()) { if (code_seen('S') && IsRunning()) {
laser.intensity = (float) code_value(); laser.intensity = (float) code_value();
laser.rasterlaserpower = laser.intensity; laser.rasterlaserpower = laser.intensity;
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
/** /**
* laser.cpp - Laser control library for Arduino using 16 bit timers- Version 1 * laser.cpp - Laser control library for Arduino using 16 bit timers- Version 1
* Copyright (c) 2013 Timothy Schmidt. All right reserved. * Copyright (c) 2013 Timothy Schmidt. All right reserved.
* Copyright (c) 2016 Franco (nextime) Lanza
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
...@@ -304,7 +305,7 @@ ...@@ -304,7 +305,7 @@
#if ENABLED(LASER_PERIPHERALS) #if ENABLED(LASER_PERIPHERALS)
bool laser_peripherals_ok() { return !digitalRead(LASER_PERIPHERALS_STATUS_PIN); } bool laser_peripherals_ok() { return !digitalRead(LASER_PERIPHERALS_STATUS_PIN); }
void laser_peripherals_on() { void laser_peripherals_on() {
digitalWrite(LASER_PERIPHERALS_PIN, LOW); digitalWrite(LASER_PERIPHERALS_PIN, LOW);
if (laser.diagnostics) if (laser.diagnostics)
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
/** /**
* laser.cpp - Laser control library for Arduino using 16 bit timers- Version 1 * laser.cpp - Laser control library for Arduino using 16 bit timers- Version 1
* Copyright (c) 2013 Timothy Schmidt. All right reserved. * Copyright (c) 2013 Timothy Schmidt. All right reserved.
* Copyright (c) 2016 Franco (nextime) Lanza
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public * modify it under the terms of the GNU Lesser General Public
......
...@@ -67,8 +67,8 @@ ...@@ -67,8 +67,8 @@
#undef USE_BIG_EDIT_FONT #undef USE_BIG_EDIT_FONT
#endif #endif
#if ENABLED(LASER) #if ENABLED(LASERBEAM)
#include "../laser/laserbitmaps.h" #include "../laser/laserbitmaps.h"
#endif #endif
#if ENABLED(USE_SMALL_INFOFONT) #if ENABLED(USE_SMALL_INFOFONT)
...@@ -374,7 +374,7 @@ static void lcd_implementation_status_screen() { ...@@ -374,7 +374,7 @@ static void lcd_implementation_status_screen() {
bool blink = lcd_blink(); bool blink = lcd_blink();
#if ENABLED(LASER) #if ENABLED(LASERBEAM)
#if ENABLED(LASER_PERIPHERALS) #if ENABLED(LASER_PERIPHERALS)
if (laser_peripherals_ok()) { if (laser_peripherals_ok()) {
u8g.drawBitmapP(29,4, LASERENABLE_BYTEWIDTH, LASERENABLE_HEIGHT, laserenable_bmp); u8g.drawBitmapP(29,4, LASERENABLE_BYTEWIDTH, LASERENABLE_HEIGHT, laserenable_bmp);
...@@ -474,14 +474,15 @@ static void lcd_implementation_status_screen() { ...@@ -474,14 +474,15 @@ static void lcd_implementation_status_screen() {
} }
#endif #endif
#if DISABLED(LASER) #if DISABLED(LASERBEAM)
// Hotends // Hotends
for (int i = 0; i < HOTENDS; i++) _draw_heater_status(6 + i * 25, i); for (int i = 0; i < HOTENDS; i++) _draw_heater_status(6 + i * 25, i);
// Heated bed // Heated bed
#if HOTENDS < 4 && HAS(TEMP_BED) #if HOTENDS < 4 && HAS(TEMP_BED)
_draw_heater_status(81, -1); _draw_heater_status(81, -1);
#endif #endif
#endif // !LASERBEAM
#endif // DISABLED LASER #endif // DISABLED LASER
// Fan // Fan
......
...@@ -12,11 +12,11 @@ ...@@ -12,11 +12,11 @@
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
* *
*/ */
...@@ -88,28 +88,27 @@ char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kan ...@@ -88,28 +88,27 @@ char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kan
#define LCD_Printpos(x, y) lcd.setCursor(x, y) #define LCD_Printpos(x, y) lcd.setCursor(x, y)
#endif #endif
#if ENABLED(LASER) #if ENABLED(LASERBEAM)
static void lcd_laser_focus_menu(); static void lcd_laser_focus_menu();
static void lcd_laser_menu(); static void lcd_laser_menu();
static void lcd_laser_test_fire_menu(); static void lcd_laser_test_fire_menu();
static void laser_test_fire(uint8_t power, int dwell); static void laser_test_fire(uint8_t power, int dwell);
static void laser_set_focus(float f_length); static void laser_set_focus(float f_length);
static void action_laser_focus_custom(); static void action_laser_focus_custom();
static void action_laser_focus_1mm(); static void action_laser_focus_1mm();
static void action_laser_focus_2mm(); static void action_laser_focus_2mm();
static void action_laser_focus_3mm(); static void action_laser_focus_3mm();
static void action_laser_focus_4mm(); static void action_laser_focus_4mm();
static void action_laser_focus_5mm(); static void action_laser_focus_5mm();
static void action_laser_focus_6mm(); static void action_laser_focus_6mm();
static void action_laser_focus_7mm(); static void action_laser_focus_7mm();
static void action_laser_test_20_50ms(); static void action_laser_test_20_50ms();
static void action_laser_test_20_100ms(); static void action_laser_test_20_100ms();
static void action_laser_test_100_50ms(); static void action_laser_test_100_50ms();
static void action_laser_test_100_100ms(); static void action_laser_test_100_100ms();
static void action_laser_test_warm(); static void action_laser_test_warm();
static void action_laser_acc_on(); static void action_laser_acc_on();
static void action_laser_acc_off(); static void action_laser_acc_off();
#endif #endif
// The main status screen // The main status screen
...@@ -127,7 +126,7 @@ static void lcd_status_screen(); ...@@ -127,7 +126,7 @@ static void lcd_status_screen();
static void lcd_move_menu(); static void lcd_move_menu();
static void lcd_control_menu(); static void lcd_control_menu();
static void lcd_stats_menu(); static void lcd_stats_menu();
#if DISABLED(LASER) #if DISABLED(LASERBEAM)
static void lcd_control_temperature_menu(); static void lcd_control_temperature_menu();
static void lcd_control_temperature_preheat_pla_settings_menu(); static void lcd_control_temperature_preheat_pla_settings_menu();
static void lcd_control_temperature_preheat_abs_settings_menu(); static void lcd_control_temperature_preheat_abs_settings_menu();
...@@ -135,7 +134,7 @@ static void lcd_status_screen(); ...@@ -135,7 +134,7 @@ static void lcd_status_screen();
#endif #endif
static void lcd_control_motion_menu(); static void lcd_control_motion_menu();
#if DISABLED(LASER) #if DISABLED(LASERBEAM)
static void lcd_control_volumetric_menu(); static void lcd_control_volumetric_menu();
#endif #endif
...@@ -218,34 +217,34 @@ static void lcd_status_screen(); ...@@ -218,34 +217,34 @@ static void lcd_status_screen();
/** /**
* START_MENU generates the init code for a menu function * START_MENU generates the init code for a menu function
*/ */
#if ENABLED(BTN_BACK) && BTN_BACK > 0 #if ENABLED(BTN_BACK) && BTN_BACK > 0
#define START_MENU() do { \ #define START_MENU() do { \
ENCODER_DIRECTION_MENUS(); \ ENCODER_DIRECTION_MENUS(); \
encoderRateMultiplierEnabled = false; \ encoderRateMultiplierEnabled = false; \
if (encoderPosition > 0x8000) encoderPosition = 0; \ if (encoderPosition > 0x8000) encoderPosition = 0; \
uint8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \ uint8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \
NOMORE(currentMenuViewOffset, encoderLine); \ NOMORE(currentMenuViewOffset, encoderLine); \
uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \ uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \
bool wasClicked = LCD_CLICKED, itemSelected; \ bool wasClicked = LCD_CLICKED, itemSelected; \
bool wasBackClicked = LCD_BACK_CLICKED; \ bool wasBackClicked = LCD_BACK_CLICKED; \
if (wasBackClicked) { \ if (wasBackClicked) { \
lcd_quick_feedback(); \ lcd_quick_feedback(); \
menu_action_back(); \ menu_action_back(); \
return; } \ return; } \
for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \ for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \
_menuItemNr = 0; _menuItemNr = 0;
#else #else
#define START_MENU() do { \ #define START_MENU() do { \
ENCODER_DIRECTION_MENUS(); \ ENCODER_DIRECTION_MENUS(); \
encoderRateMultiplierEnabled = false; \ encoderRateMultiplierEnabled = false; \
if (encoderPosition > 0x8000) encoderPosition = 0; \ if (encoderPosition > 0x8000) encoderPosition = 0; \
uint8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \ uint8_t encoderLine = encoderPosition / ENCODER_STEPS_PER_MENU_ITEM; \
NOMORE(currentMenuViewOffset, encoderLine); \ NOMORE(currentMenuViewOffset, encoderLine); \
uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \ uint8_t _lineNr = currentMenuViewOffset, _menuItemNr; \
bool wasClicked = LCD_CLICKED, itemSelected; \ bool wasClicked = LCD_CLICKED, itemSelected; \
for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \ for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \
_menuItemNr = 0; _menuItemNr = 0;
#endif #endif
/** /**
* MENU_ITEM generates draw & handler code for a menu item, potentially calling: * MENU_ITEM generates draw & handler code for a menu item, potentially calling:
...@@ -555,14 +554,21 @@ inline void line_to_current(AxisEnum axis) { ...@@ -555,14 +554,21 @@ inline void line_to_current(AxisEnum axis) {
#if ENABLED(SDSUPPORT) #if ENABLED(SDSUPPORT)
static void lcd_sdcard_pause() { card.pausePrint(); } static void lcd_sdcard_pause() {
card.pausePrint();
print_job_counter.pause();
}
static void lcd_sdcard_resume() { card.startPrint(); } static void lcd_sdcard_resume() {
card.startPrint();
print_job_counter.start();
}
static void lcd_sdcard_stop() { static void lcd_sdcard_stop() {
quickStop(); quickStop();
card.sdprinting = false; card.sdprinting = false;
card.closeFile(); card.closeFile();
print_job_counter.stop();
autotempShutdown(); autotempShutdown();
cancel_heatup = true; cancel_heatup = true;
lcd_setstatus(MSG_PRINT_ABORTED, true); lcd_setstatus(MSG_PRINT_ABORTED, true);
...@@ -577,24 +583,26 @@ inline void line_to_current(AxisEnum axis) { ...@@ -577,24 +583,26 @@ inline void line_to_current(AxisEnum axis) {
*/ */
static void lcd_main_menu() { static void lcd_main_menu() {
START_MENU(); START_MENU();
MENU_ITEM(back, MSG_WATCH); MENU_ITEM(back, MSG_WATCH);
#if ENABLED(LASER)
if (!(movesplanned() || IS_SD_PRINTING)) { #if ENABLED(LASERBEAM)
MENU_ITEM(submenu, "Laser Functions", lcd_laser_menu); if (!(movesplanned() || IS_SD_PRINTING)) {
} MENU_ITEM(submenu, "Laser Functions", lcd_laser_menu);
#endif }
if (movesplanned() || IS_SD_PRINTING) { #endif
MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu);
} if (movesplanned() || IS_SD_PRINTING) {
else { MENU_ITEM(submenu, MSG_TUNE, lcd_tune_menu);
MENU_ITEM(submenu, MSG_PREPARE, lcd_prepare_menu); }
#if MECH(DELTA) else {
MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu); MENU_ITEM(submenu, MSG_PREPARE, lcd_prepare_menu);
#endif #if MECH(DELTA)
} MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu);
MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu); #endif
MENU_ITEM(submenu, MSG_STATS, lcd_stats_menu); }
MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu);
MENU_ITEM(submenu, MSG_STATS, lcd_stats_menu);
#if ENABLED(SDSUPPORT) #if ENABLED(SDSUPPORT)
if (card.cardOK) { if (card.cardOK) {
...@@ -770,6 +778,13 @@ MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_multiplier, 10, 999); ...@@ -770,6 +778,13 @@ MENU_ITEM_EDIT(int3, MSG_SPEED, &feedrate_multiplier, 10, 999);
MENU_ITEM_EDIT(int3, MSG_COOLER, &target_temperature_cooler, 0, COOLER_MAXTEMP - 15); MENU_ITEM_EDIT(int3, MSG_COOLER, &target_temperature_cooler, 0, COOLER_MAXTEMP - 15);
#endif #endif
//
// Laser:
//
#if ENABLED(LASERBEAM) && HAS(COOLER)
MENU_ITEM_EDIT(int3, MSG_COOLER, &target_temperature_cooler, 0, COOLER_MAXTEMP - 15);
#endif
// //
// Bed: // Bed:
// //
...@@ -987,10 +1002,10 @@ static void lcd_preheat_gum_menu() { ...@@ -987,10 +1002,10 @@ static void lcd_preheat_gum_menu() {
#endif // TEMP_SENSOR_0 && (TEMP_SENSOR_1 || TEMP_SENSOR_2 || TEMP_SENSOR_3 || TEMP_SENSOR_BED) #endif // TEMP_SENSOR_0 && (TEMP_SENSOR_1 || TEMP_SENSOR_2 || TEMP_SENSOR_3 || TEMP_SENSOR_BED)
void lcd_cooldown() { void lcd_cooldown() {
disable_all_heaters(); disable_all_heaters();
disable_all_coolers(); disable_all_coolers();
fanSpeed = 0; fanSpeed = 0;
lcd_return_to_status(); lcd_return_to_status();
} }
/** /**
...@@ -1010,9 +1025,9 @@ static void lcd_prepare_menu() { ...@@ -1010,9 +1025,9 @@ static void lcd_prepare_menu() {
// //
// Auto Home // Auto Home
// //
#if ENABLED(LASER) #if ENABLED(LASERBEAM)
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28 X Y F2000")); MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28 X Y F2000"));
# else #else
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
#if !MECH(DELTA) #if !MECH(DELTA)
MENU_ITEM(gcode, MSG_AUTO_HOME_X, PSTR("G28 X")); MENU_ITEM(gcode, MSG_AUTO_HOME_X, PSTR("G28 X"));
...@@ -1048,45 +1063,37 @@ static void lcd_prepare_menu() { ...@@ -1048,45 +1063,37 @@ static void lcd_prepare_menu() {
// //
MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84")); MENU_ITEM(gcode, MSG_DISABLE_STEPPERS, PSTR("M84"));
// //
// Preheat PLA // Preheat PLA
// Preheat ABS // Preheat ABS
// Preheat GUM // Preheat GUM
// //
#if TEMP_SENSOR_0 != 0 && DISABLED(LASER) #if TEMP_SENSOR_0 != 0 && DISABLED(LASERBEAM)
#if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0 #if TEMP_SENSOR_1 != 0 || TEMP_SENSOR_2 != 0 || TEMP_SENSOR_3 != 0 || TEMP_SENSOR_BED != 0
MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu); MENU_ITEM(submenu, MSG_PREHEAT_PLA, lcd_preheat_pla_menu);
MENU_ITEM(submenu, MSG_PREHEAT_ABS, lcd_preheat_abs_menu); MENU_ITEM(submenu, MSG_PREHEAT_ABS, lcd_preheat_abs_menu);
MENU_ITEM(submenu, MSG_PREHEAT_GUM, lcd_preheat_gum_menu); MENU_ITEM(submenu, MSG_PREHEAT_GUM, lcd_preheat_gum_menu);
#else #else
MENU_ITEM(function, MSG_PREHEAT_PLA, lcd_preheat_pla0); MENU_ITEM(function, MSG_PREHEAT_PLA, lcd_preheat_pla0);
MENU_ITEM(function, MSG_PREHEAT_ABS, lcd_preheat_abs0); MENU_ITEM(function, MSG_PREHEAT_ABS, lcd_preheat_abs0);
MENU_ITEM(function, MSG_PREHEAT_GUM, lcd_preheat_gum0); MENU_ITEM(function, MSG_PREHEAT_GUM, lcd_preheat_gum0);
#endif #endif
#endif #endif
// //
// Easy Load // Easy Load
// //
#if ENABLED(EASY_LOAD) #if ENABLED(EASY_LOAD)
MENU_ITEM(function, MSG_E_BOWDEN_LENGTH, lcd_easy_load); MENU_ITEM(function, MSG_E_BOWDEN_LENGTH, lcd_easy_load);
MENU_ITEM(function, MSG_R_BOWDEN_LENGTH, lcd_easy_unload); MENU_ITEM(function, MSG_R_BOWDEN_LENGTH, lcd_easy_unload);
MENU_ITEM(function, MSG_PURGE_XMM, lcd_purge); MENU_ITEM(function, MSG_PURGE_XMM, lcd_purge);
MENU_ITEM(function, MSG_RETRACT_XMM, lcd_retract); MENU_ITEM(function, MSG_RETRACT_XMM, lcd_retract);
#endif // EASY_LOAD #endif // EASY_LOAD
// //
// LASER BEAM // Cooldown
// //
#if ENABLED(LASERBEAM) MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
MENU_ITEM_EDIT(int3, MSG_LASER, &laser_ttl_modulation, 0, 255);
if(laser_ttl_modulation == 0) {
WRITE(LASER_PWR_PIN, LOW);
}
else {
WRITE(LASER_PWR_PIN, HIGH);
}
#endif
// //
// Cooldown // Cooldown
...@@ -1295,12 +1302,12 @@ END_MENU(); ...@@ -1295,12 +1302,12 @@ END_MENU();
static void lcd_control_menu() { static void lcd_control_menu() {
START_MENU(); START_MENU();
MENU_ITEM(back, MSG_MAIN); MENU_ITEM(back, MSG_MAIN);
#if DISABLED(LASER) #if DISABLED(LASERBEAM)
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu); MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu);
#endif #endif
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu); MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu);
#if DISABLED(LASER) #if DISABLED(LASERBEAM)
MENU_ITEM(submenu, MSG_FILAMENT, lcd_control_volumetric_menu); MENU_ITEM(submenu, MSG_FILAMENT, lcd_control_volumetric_menu);
#endif #endif
#if HAS(LCD_CONTRAST) #if HAS(LCD_CONTRAST)
...@@ -1352,7 +1359,7 @@ static void lcd_stats_menu() { ...@@ -1352,7 +1359,7 @@ static void lcd_stats_menu() {
#if ENABLED(PID_AUTOTUNE_MENU) #if ENABLED(PID_AUTOTUNE_MENU)
#if ENABLED(PIDTEMP) #if ENABLED(PIDTEMP)
int autotune_temp[HOTENDS] = { 150 }; int autotune_temp[HOTENDS] = ARRAY_BY_HOTENDS1(150);
const int heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP); const int heater_maxtemp[HOTENDS] = ARRAY_BY_HOTENDS(HEATER_0_MAXTEMP, HEATER_1_MAXTEMP, HEATER_2_MAXTEMP, HEATER_3_MAXTEMP);
#endif #endif
...@@ -1413,206 +1420,201 @@ static void lcd_stats_menu() { ...@@ -1413,206 +1420,201 @@ static void lcd_stats_menu() {
#endif // PIDTEMP #endif // PIDTEMP
/** #if DISABLED(LASERBEAM)
*
* "Control" > "Temperature" submenu
*
*/
#if DISABLED(LASER)
static void lcd_control_temperature_menu() {
START_MENU();
//
// ^ Control
//
MENU_ITEM(back, MSG_CONTROL);
// /**
// Nozzle: *
// * "Control" > "Temperature" submenu
#if HOTENDS == 1 *
#if TEMP_SENSOR_0 != 0 */
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0); static void lcd_control_temperature_menu() {
#endif START_MENU();
#else // HOTENDS > 1
#if TEMP_SENSOR_0 != 0 //
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "0", &target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0); // ^ Control
#endif //
#if TEMP_SENSOR_1 != 0 MENU_ITEM(back, MSG_CONTROL);
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "1", &target_temperature[1], 0, HEATER_1_MAXTEMP - 15, watch_temp_callback_E1);
#endif //
#if HOTENDS > 2 // Nozzle:
#if TEMP_SENSOR_2 != 0 //
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "2", &target_temperature[2], 0, HEATER_2_MAXTEMP - 15, watch_temp_callback_E2); #if HOTENDS == 1
#if TEMP_SENSOR_0 != 0
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE, &target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0);
#endif #endif
#if HOTENDS > 3 #else // HOTENDS > 1
#if TEMP_SENSOR_3 != 0 #if TEMP_SENSOR_0 != 0
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "3", &target_temperature[3], 0, HEATER_3_MAXTEMP - 15, watch_temp_callback_E3); MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "0", &target_temperature[0], 0, HEATER_0_MAXTEMP - 15, watch_temp_callback_E0);
#endif
#if TEMP_SENSOR_1 != 0
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "1", &target_temperature[1], 0, HEATER_1_MAXTEMP - 15, watch_temp_callback_E1);
#endif
#if HOTENDS > 2
#if TEMP_SENSOR_2 != 0
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "2", &target_temperature[2], 0, HEATER_2_MAXTEMP - 15, watch_temp_callback_E2);
#endif #endif
#endif // HOTENDS > 3 #if HOTENDS > 3
#endif // HOTENDS > 2 #if TEMP_SENSOR_3 != 0
#endif // HOTENDS > 1 MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, MSG_NOZZLE "3", &target_temperature[3], 0, HEATER_3_MAXTEMP - 15, watch_temp_callback_E3);
#endif
#endif // HOTENDS > 3
#endif // HOTENDS > 2
#endif // HOTENDS > 1
// //
// Bed: // Bed:
// //
#if TEMP_SENSOR_BED != 0 #if TEMP_SENSOR_BED != 0
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15); MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15);
#endif #endif
// //
// Fan Speed: // Fan Speed:
// //
MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255); MENU_MULTIPLIER_ITEM_EDIT(int3, MSG_FAN_SPEED, &fanSpeed, 0, 255);
//
// Autotemp, Min, Max, Fact
//
#if ENABLED(AUTOTEMP) && (TEMP_SENSOR_0 != 0)
MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled);
MENU_ITEM_EDIT(float3, MSG_MIN, &autotemp_min, 0, HEATER_0_MAXTEMP - 15);
MENU_ITEM_EDIT(float3, MSG_MAX, &autotemp_max, 0, HEATER_0_MAXTEMP - 15);
MENU_ITEM_EDIT(float32, MSG_FACTOR, &autotemp_factor, 0.0, 1.0);
#endif
// //
// Autotemp, Min, Max, Fact // PID-P, PID-I, PID-D, PID-C, PID Autotune
// // PID-P H1, PID-I H1, PID-D H1, PID-C H1, PID Autotune H1
#if ENABLED(AUTOTEMP) && (TEMP_SENSOR_0 != 0) // PID-P H2, PID-I H2, PID-D H2, PID-C H2, PID Autotune H2
MENU_ITEM_EDIT(bool, MSG_AUTOTEMP, &autotemp_enabled); // PID-P H3, PID-I H3, PID-D H3, PID-C H3, PID Autotune H3
MENU_ITEM_EDIT(float3, MSG_MIN, &autotemp_min, 0, HEATER_0_MAXTEMP - 15); // PID-P H4, PID-I H4, PID-D H4, PID-C H4, PID Autotune H4
MENU_ITEM_EDIT(float3, MSG_MAX, &autotemp_max, 0, HEATER_0_MAXTEMP - 15); //
MENU_ITEM_EDIT(float32, MSG_FACTOR, &autotemp_factor, 0.0, 1.0); #if ENABLED(PIDTEMP)
#endif #define _PID_BASE_MENU_ITEMS(HLABEL, hindex) \
raw_Ki = unscalePID_i(PID_PARAM(Ki, hindex)); \
raw_Kd = unscalePID_d(PID_PARAM(Kd, hindex)); \
MENU_ITEM_EDIT(float52, MSG_PID_P HLABEL, &PID_PARAM(Kp, hindex), 1, 9990); \
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I HLABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_H ## hindex); \
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D HLABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_H ## hindex)
#if ENABLED(PID_ADD_EXTRUSION_RATE)
#define _PID_MENU_ITEMS(HLABEL, hindex) \
_PID_BASE_MENU_ITEMS(HLABEL, hindex); \
MENU_ITEM_EDIT(float3, MSG_PID_C HLABEL, &PID_PARAM(Kc, hindex), 1, 9990)
#else
#define _PID_MENU_ITEMS(HLABEL, hindex) _PID_BASE_MENU_ITEMS(HLABEL, hindex)
#endif
// #if ENABLED(PID_AUTOTUNE_MENU)
// PID-P, PID-I, PID-D, PID-C, PID Autotune #define PID_MENU_ITEMS(HLABEL, hindex) \
// PID-P H1, PID-I H1, PID-D H1, PID-C H1, PID Autotune H1 _PID_MENU_ITEMS(HLABEL, hindex); \
// PID-P H2, PID-I H2, PID-D H2, PID-C H2, PID Autotune H2 MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, SERIAL_PID_AUTOTUNE HLABEL, &autotune_temp[hindex], 150, heater_maxtemp[hindex] - 15, lcd_autotune_callback_H ## hindex)
// PID-P H3, PID-I H3, PID-D H3, PID-C H3, PID Autotune H3 #else
// PID-P H4, PID-I H4, PID-D H4, PID-C H4, PID Autotune H4 #define PID_MENU_ITEMS(HLABEL, hindex) _PID_MENU_ITEMS(HLABEL, hindex)
// #endif
#if ENABLED(PIDTEMP)
#define _PID_BASE_MENU_ITEMS(HLABEL, hindex) \
raw_Ki = unscalePID_i(PID_PARAM(Ki, hindex)); \
raw_Kd = unscalePID_d(PID_PARAM(Kd, hindex)); \
MENU_ITEM_EDIT(float52, MSG_PID_P HLABEL, &PID_PARAM(Kp, hindex), 1, 9990); \
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_I HLABEL, &raw_Ki, 0.01, 9990, copy_and_scalePID_i_H ## hindex); \
MENU_ITEM_EDIT_CALLBACK(float52, MSG_PID_D HLABEL, &raw_Kd, 1, 9990, copy_and_scalePID_d_H ## hindex)
#if ENABLED(PID_ADD_EXTRUSION_RATE)
#define _PID_MENU_ITEMS(HLABEL, hindex) \
_PID_BASE_MENU_ITEMS(HLABEL, hindex); \
MENU_ITEM_EDIT(float3, MSG_PID_C HLABEL, &PID_PARAM(Kc, hindex), 1, 9990)
#else
#define _PID_MENU_ITEMS(HLABEL, hindex) _PID_BASE_MENU_ITEMS(HLABEL, hindex)
#endif
#if ENABLED(PID_AUTOTUNE_MENU) PID_MENU_ITEMS("", 0);
#define PID_MENU_ITEMS(HLABEL, hindex) \ #if HOTENDS > 1
_PID_MENU_ITEMS(HLABEL, hindex); \ PID_MENU_ITEMS(MSG_H1, 1);
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(int3, SERIAL_PID_AUTOTUNE HLABEL, &autotune_temp[hindex], 150, heater_maxtemp[hindex] - 15, lcd_autotune_callback_H ## hindex) #if HOTENDS > 2
#else PID_MENU_ITEMS(MSG_H2, 2);
#define PID_MENU_ITEMS(HLABEL, hindex) _PID_MENU_ITEMS(HLABEL, hindex) #if HOTENDS > 3
PID_MENU_ITEMS(MSG_H3, 3);
#endif // HOTENDS > 3
#endif // HOTENDS > 2
#endif // HOTENDS > 1
#endif // PIDTEMP
//
// Idle oozing
//
#if ENABLED(IDLE_OOZING_PREVENT)
MENU_ITEM_EDIT(bool, MSG_IDLEOOZING, &IDLE_OOZING_enabled);
#endif #endif
PID_MENU_ITEMS("", 0); //
#if HOTENDS > 1 // Preheat PLA conf
PID_MENU_ITEMS(MSG_H1, 1); //
#if HOTENDS > 2 MENU_ITEM(submenu, MSG_PREHEAT_PLA_SETTINGS, lcd_control_temperature_preheat_pla_settings_menu);
PID_MENU_ITEMS(MSG_H2, 2);
#if HOTENDS > 3
PID_MENU_ITEMS(MSG_H3, 3);
#endif // HOTENDS > 3
#endif // HOTENDS > 2
#endif // HOTENDS > 1
#endif // PIDTEMP
// //
// Idle oozing // Preheat ABS conf
// //
#if ENABLED(IDLE_OOZING_PREVENT) MENU_ITEM(submenu, MSG_PREHEAT_ABS_SETTINGS, lcd_control_temperature_preheat_abs_settings_menu);
MENU_ITEM_EDIT(bool, MSG_IDLEOOZING, &IDLE_OOZING_enabled);
#endif
#if DISABLED(LASER) //
// // Preheat GUM conf
// Preheat PLA conf //
// MENU_ITEM(submenu, MSG_PREHEAT_GUM_SETTINGS, lcd_control_temperature_preheat_gum_settings_menu);
MENU_ITEM(submenu, MSG_PREHEAT_PLA_SETTINGS, lcd_control_temperature_preheat_pla_settings_menu); END_MENU();
}
// /**
// Preheat ABS conf *
// * "Temperature" > "Preheat PLA conf" submenu
MENU_ITEM(submenu, MSG_PREHEAT_ABS_SETTINGS, lcd_control_temperature_preheat_abs_settings_menu); *
*/
static void lcd_control_temperature_preheat_pla_settings_menu() {
START_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);
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT(int3, MSG_BED, &plaPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15);
#endif
#if ENABLED(EEPROM_SETTINGS)
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
#endif
END_MENU();
}
// /**
// Preheat GUM conf *
// * "Temperature" > "Preheat ABS conf" submenu
MENU_ITEM(submenu, MSG_PREHEAT_GUM_SETTINGS, lcd_control_temperature_preheat_gum_settings_menu); *
#endif */
END_MENU(); static void lcd_control_temperature_preheat_abs_settings_menu() {
} START_MENU();
#endif 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);
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT(int3, MSG_BED, &absPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15);
#endif
#if ENABLED(EEPROM_SETTINGS)
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
#endif
END_MENU();
}
/**
*
* "Temperature" > "Preheat GUM conf" submenu
*
*/
static void lcd_control_temperature_preheat_gum_settings_menu() {
START_MENU();
MENU_ITEM(back, MSG_TEMPERATURE);
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &gumPreheatFanSpeed, 0, 255);
#if TEMP_SENSOR_0 != 0
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &gumPreheatHotendTemp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15);
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT(int3, MSG_BED, &gumPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15);
#endif
#if ENABLED(EEPROM_SETTINGS)
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
#endif
END_MENU();
}
/** #endif // !LASERBEAM
*
* "Temperature" > "Preheat PLA conf" submenu
*
*/
#if DISABLED(LASER)
static void lcd_control_temperature_preheat_pla_settings_menu() {
START_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);
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT(int3, MSG_BED, &plaPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15);
#endif
#if ENABLED(EEPROM_SETTINGS)
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
#endif
END_MENU();
}
#endif
/**
*
* "Temperature" > "Preheat ABS conf" submenu
*
*/
#if DISABLED(LASER)
static void lcd_control_temperature_preheat_abs_settings_menu() {
START_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);
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT(int3, MSG_BED, &absPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15);
#endif
#if ENABLED(EEPROM_SETTINGS)
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
#endif
END_MENU();
}
#endif
/**
*
* "Temperature" > "Preheat GUM conf" submenu
*
*/
#if DISABLED(LASER)
static void lcd_control_temperature_preheat_gum_settings_menu() {
START_MENU();
MENU_ITEM(back, MSG_TEMPERATURE);
MENU_ITEM_EDIT(int3, MSG_FAN_SPEED, &gumPreheatFanSpeed, 0, 255);
#if TEMP_SENSOR_0 != 0
MENU_ITEM_EDIT(int3, MSG_NOZZLE, &gumPreheatHotendTemp, HEATER_0_MINTEMP, HEATER_0_MAXTEMP - 15);
#endif
#if TEMP_SENSOR_BED != 0
MENU_ITEM_EDIT(int3, MSG_BED, &gumPreheatHPBTemp, BED_MINTEMP, BED_MAXTEMP - 15);
#endif
#if ENABLED(EEPROM_SETTINGS)
MENU_ITEM(function, MSG_STORE_EPROM, Config_StoreSettings);
#endif
END_MENU();
}
#endif
/** /**
* *
* "Control" > "Motion" submenu * "Control" > "Motion" submenu
...@@ -1683,31 +1685,31 @@ static void lcd_control_motion_menu() { ...@@ -1683,31 +1685,31 @@ static void lcd_control_motion_menu() {
* "Control" > "Filament" submenu * "Control" > "Filament" submenu
* *
*/ */
#if DISABLED(LASER) #if DISABLED(LASERBEAM)
static void lcd_control_volumetric_menu() { static void lcd_control_volumetric_menu() {
START_MENU(); START_MENU();
MENU_ITEM(back, MSG_CONTROL); MENU_ITEM(back, MSG_CONTROL);
MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers); MENU_ITEM_EDIT_CALLBACK(bool, MSG_VOLUMETRIC_ENABLED, &volumetric_enabled, calculate_volumetric_multipliers);
if (volumetric_enabled) {
#if EXTRUDERS == 1
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER, &filament_size[0], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#else // EXTRUDERS > 1
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 0", &filament_size[0], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 1", &filament_size[1], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#if EXTRUDERS > 2
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 2", &filament_size[2], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#if EXTRUDERS > 3
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 3", &filament_size[3], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#endif // EXTRUDERS > 3
#endif // EXTRUDERS > 2
#endif // EXTRUDERS > 1
}
if (volumetric_enabled) { END_MENU();
#if EXTRUDERS == 1
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER, &filament_size[0], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#else // EXTRUDERS > 1
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 0", &filament_size[0], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 1", &filament_size[1], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#if EXTRUDERS > 2
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 2", &filament_size[2], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#if EXTRUDERS > 3
MENU_MULTIPLIER_ITEM_EDIT_CALLBACK(float43, MSG_FILAMENT_SIZE_EXTRUDER " 3", &filament_size[3], DEFAULT_NOMINAL_FILAMENT_DIA - .5, DEFAULT_NOMINAL_FILAMENT_DIA + .5, calculate_volumetric_multipliers);
#endif // EXTRUDERS > 3
#endif // EXTRUDERS > 2
#endif // EXTRUDERS > 1
} }
#endif // !LASERBEAM
END_MENU();
}
#endif
/** /**
* *
...@@ -1765,126 +1767,87 @@ static void lcd_control_volumetric_menu() { ...@@ -1765,126 +1767,87 @@ static void lcd_control_volumetric_menu() {
} }
#endif // FWRETRACT #endif // FWRETRACT
#if ENABLED(LASER) #if ENABLED(LASERBEAM)
static void lcd_laser_menu()
{
START_MENU();
MENU_ITEM(back, MSG_MAIN);
MENU_ITEM(submenu, "Set Focus", lcd_laser_focus_menu);
MENU_ITEM(submenu, "Test Fire", lcd_laser_test_fire_menu);
#ifdef LASER_PERIPHERALS
if (laser_peripherals_ok()) {
MENU_ITEM(function, "Turn On Pumps/Fans", action_laser_acc_on);
} else if (!(movesplanned() || IS_SD_PRINTING)) {
MENU_ITEM(function, "Turn Off Pumps/Fans", action_laser_acc_off);
}
#endif // LASER_PERIPHERALS
END_MENU();
}
static void lcd_laser_test_fire_menu() {
START_MENU();
MENU_ITEM(back, "Laser Functions");
MENU_ITEM(function, " 20% 50ms", action_laser_test_20_50ms);
MENU_ITEM(function, " 20% 100ms", action_laser_test_20_100ms);
MENU_ITEM(function, "100% 50ms", action_laser_test_100_50ms);
MENU_ITEM(function, "100% 100ms", action_laser_test_100_100ms);
MENU_ITEM(function, "Warm-up Laser 2sec", action_laser_test_warm);
END_MENU();
}
static void action_laser_acc_on() {
enqueue_and_echo_commands_P(PSTR("M80"));
}
static void action_laser_acc_off() {
enqueue_and_echo_commands_P(PSTR("M81"));
}
static void action_laser_test_20_50ms() {
laser_test_fire(20, 50);
}
static void action_laser_test_20_100ms() {
laser_test_fire(20, 100);
}
static void action_laser_test_100_50ms() { static void lcd_laser_menu() {
laser_test_fire(100, 50); START_MENU();
} MENU_ITEM(back, MSG_MAIN);
MENU_ITEM(submenu, "Set Focus", lcd_laser_focus_menu);
MENU_ITEM(submenu, "Test Fire", lcd_laser_test_fire_menu);
#if ENABLED(LASER_PERIPHERALS)
if (laser_peripherals_ok()) {
MENU_ITEM(function, "Turn On Pumps/Fans", action_laser_acc_on);
}
else if (!(movesplanned() || IS_SD_PRINTING)) {
MENU_ITEM(function, "Turn Off Pumps/Fans", action_laser_acc_off);
}
#endif // LASER_PERIPHERALS
END_MENU();
}
static void action_laser_test_100_100ms() { static void lcd_laser_test_fire_menu() {
laser_test_fire(100, 100); START_MENU();
} MENU_ITEM(back, "Laser Functions");
MENU_ITEM(function, " 20% 50ms", action_laser_test_20_50ms);
MENU_ITEM(function, " 20% 100ms", action_laser_test_20_100ms);
MENU_ITEM(function, "100% 50ms", action_laser_test_100_50ms);
MENU_ITEM(function, "100% 100ms", action_laser_test_100_100ms);
MENU_ITEM(function, "Warm-up Laser 2sec", action_laser_test_warm);
END_MENU();
}
static void action_laser_test_warm() { static void action_laser_acc_on() { enqueue_and_echo_commands_P(PSTR("M80")); }
laser_test_fire(15, 2000); static void action_laser_acc_off() { enqueue_and_echo_commands_P(PSTR("M81")); }
} static void action_laser_test_20_50ms() { laser_test_fire(20, 50); }
static void action_laser_test_20_100ms() { laser_test_fire(20, 100); }
static void action_laser_test_100_50ms() { laser_test_fire(100, 50); }
static void action_laser_test_100_100ms() { laser_test_fire(100, 100); }
static void action_laser_test_warm() { laser_test_fire(15, 2000); }
static void laser_test_fire(uint8_t power, int dwell) { static void laser_test_fire(uint8_t power, int dwell) {
enqueue_and_echo_commands_P(PSTR("M80")); // Enable laser accessories since we don't know if its been done (and there's no penalty for doing it again). enqueue_and_echo_commands_P(PSTR("M80")); // Enable laser accessories since we don't know if its been done (and there's no penalty for doing it again).
laser_fire(power); laser_fire(power);
delay(dwell); delay(dwell);
laser_extinguish(); laser_extinguish();
} }
float focalLength = 0;
static void lcd_laser_focus_menu() {
START_MENU();
MENU_ITEM(back, "Laser Functions");
MENU_ITEM(function, "1mm", action_laser_focus_1mm);
MENU_ITEM(function, "2mm", action_laser_focus_2mm);
MENU_ITEM(function, "3mm - 1/8in", action_laser_focus_3mm);
MENU_ITEM(function, "4mm", action_laser_focus_4mm);
MENU_ITEM(function, "5mm", action_laser_focus_5mm);
MENU_ITEM(function, "6mm - 1/4in", action_laser_focus_6mm);
MENU_ITEM(function, "7mm", action_laser_focus_7mm);
MENU_ITEM_EDIT_CALLBACK(float32, "Custom", &focalLength, 0, LASER_FOCAL_HEIGHT, action_laser_focus_custom);
END_MENU();
}
static void action_laser_focus_custom() {
laser_set_focus(focalLength);
}
static void action_laser_focus_1mm() {
laser_set_focus(1);
}
static void action_laser_focus_2mm() {
laser_set_focus(2);
}
static void action_laser_focus_3mm() {
laser_set_focus(3);
}
static void action_laser_focus_4mm() {
laser_set_focus(4);
}
static void action_laser_focus_5mm() {
laser_set_focus(5);
}
static void action_laser_focus_6mm() { float focalLength = 0;
laser_set_focus(6); static void lcd_laser_focus_menu() {
} START_MENU();
MENU_ITEM(back, "Laser Functions");
MENU_ITEM(function, "1mm", action_laser_focus_1mm);
MENU_ITEM(function, "2mm", action_laser_focus_2mm);
MENU_ITEM(function, "3mm - 1/8in", action_laser_focus_3mm);
MENU_ITEM(function, "4mm", action_laser_focus_4mm);
MENU_ITEM(function, "5mm", action_laser_focus_5mm);
MENU_ITEM(function, "6mm - 1/4in", action_laser_focus_6mm);
MENU_ITEM(function, "7mm", action_laser_focus_7mm);
MENU_ITEM_EDIT_CALLBACK(float32, "Custom", &focalLength, 0, LASER_FOCAL_HEIGHT, action_laser_focus_custom);
END_MENU();
}
static void action_laser_focus_7mm() { static void action_laser_focus_custom() { laser_set_focus(focalLength); }
laser_set_focus(7); static void action_laser_focus_1mm() { laser_set_focus(1); }
} static void action_laser_focus_2mm() { laser_set_focus(2); }
static void laser_set_focus(float f_length) { static void action_laser_focus_3mm() { laser_set_focus(3); }
if (!axis_homed[Z_AXIS]) { static void action_laser_focus_4mm() { laser_set_focus(4); }
static void action_laser_focus_5mm() { laser_set_focus(5); }
static void action_laser_focus_6mm() { laser_set_focus(6); }
static void action_laser_focus_7mm() { laser_set_focus(7); }
static void laser_set_focus(float f_length) {
if (!axis_homed[Z_AXIS]) {
enqueue_and_echo_commands_P(PSTR("G28 Z F150")); enqueue_and_echo_commands_P(PSTR("G28 Z F150"));
} }
focalLength = f_length; focalLength = f_length;
float focus = LASER_FOCAL_HEIGHT - f_length; float focus = LASER_FOCAL_HEIGHT - f_length;
char cmd[20]; char cmd[20];
sprintf_P(cmd, PSTR("G0 Z%s F150"), ftostr52(focus)); sprintf_P(cmd, PSTR("G0 Z%s F150"), ftostr52(focus));
enqueue_and_echo_commands_P(cmd); enqueue_and_echo_commands_P(cmd);
} }
#endif // LASER #endif // LASERBEAM
#if ENABLED(SDSUPPORT) #if ENABLED(SDSUPPORT)
......
...@@ -56,7 +56,7 @@ The current MarlinKimbra dev team consists of: ...@@ -56,7 +56,7 @@ The current MarlinKimbra dev team consists of:
- simonepri - Simone Primarosa (https://github.com/simonepri) - simonepri - Simone Primarosa (https://github.com/simonepri)
More features have been added by: More features have been added by:
- - Franco (nextime) Lanza
## License ## License
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment