Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
MarlinKimbra
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
machinery
MarlinKimbra
Commits
81e4f5c9
Commit
81e4f5c9
authored
May 31, 2016
by
Franco (nextime) Lanza
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/dev' into dev
parents
aa1b69a7
2dfd21c9
Pipeline
#51
skipped
Changes
8
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
413 additions
and
447 deletions
+413
-447
GCodes.md
Documentation/GCodes.md
+1
-1
changelog.md
Documentation/changelog.md
+1
-1
MK_Main.cpp
MK/module/MK_Main.cpp
+1
-1
laser.cpp
MK/module/laser/laser.cpp
+2
-1
laser.h
MK/module/laser/laser.h
+1
-0
dogm_lcd_implementation.h
MK/module/lcd/dogm_lcd_implementation.h
+7
-6
ultralcd.cpp
MK/module/lcd/ultralcd.cpp
+399
-436
README.md
README.md
+1
-1
No files found.
Documentation/GCodes.md
View file @
81e4f5c9
...
@@ -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.
...
...
Documentation/changelog.md
View file @
81e4f5c9
### 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
...
...
MK/module/MK_Main.cpp
View file @
81e4f5c9
...
@@ -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
;
...
...
MK/module/laser/laser.cpp
View file @
81e4f5c9
...
@@ -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
)
...
...
MK/module/laser/laser.h
View file @
81e4f5c9
...
@@ -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
...
...
MK/module/lcd/dogm_lcd_implementation.h
View file @
81e4f5c9
...
@@ -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(LASER
BEAM
)
#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(LASER
BEAM
)
#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(LASER
BEAM
)
// 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
...
...
MK/module/lcd/ultralcd.cpp
View file @
81e4f5c9
...
@@ -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(LASER
BEAM
)
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(LASER
BEAM
)
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(LASER
BEAM
)
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(LASER
BEAM
)
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(LASER
BEAM
)
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(LASER
BEAM
)
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 // LASER
BEAM
#if ENABLED(SDSUPPORT)
#if ENABLED(SDSUPPORT)
...
...
README.md
View file @
81e4f5c9
...
@@ -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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment