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
28b011e5
Commit
28b011e5
authored
May 31, 2016
by
MagoKimbra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix Laser & LCD
parent
4c2e2ab6
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
432 additions
and
270 deletions
+432
-270
GCodes.md
Documentation/GCodes.md
+1
-0
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
+40
-14
ultralcd.cpp
MK/module/lcd/ultralcd.cpp
+386
-253
No files found.
Documentation/GCodes.md
View file @
28b011e5
...
...
@@ -137,6 +137,7 @@
*
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
]
*
M605 - Set dual x-carriage movement mode: Smode
[
X<duplication x-offset> Rduplication temp offset
]
*
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
*
M906 - Set motor currents XYZ T0-4 E
*
M907 - Set digital trimpot motor current using axis codes.
...
...
Documentation/changelog.md
View file @
28b011e5
### Version 4.2.83
*
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
*
Add DONDOLO_DUAL_MOTOR for DONDOLO bowden and dual extruder
...
...
MK/module/MK_Main.cpp
View file @
28b011e5
...
...
@@ -7688,7 +7688,7 @@ inline void gcode_M503() {
if
(
code_seen
(
'D'
)
&&
IsRunning
())
laser
.
diagnostics
=
(
bool
)
code_value
();
// Wait for the rest
//st_synchronize();
//
st_synchronize();
if
(
code_seen
(
'S'
)
&&
IsRunning
())
{
laser
.
intensity
=
(
float
)
code_value
();
laser
.
rasterlaserpower
=
laser
.
intensity
;
...
...
MK/module/laser/laser.cpp
View file @
28b011e5
...
...
@@ -23,6 +23,7 @@
/**
* laser.cpp - Laser control library for Arduino using 16 bit timers- Version 1
* 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
* modify it under the terms of the GNU Lesser General Public
...
...
MK/module/laser/laser.h
View file @
28b011e5
...
...
@@ -23,6 +23,7 @@
/**
* laser.cpp - Laser control library for Arduino using 16 bit timers- Version 1
* 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
* modify it under the terms of the GNU Lesser General Public
...
...
MK/module/lcd/dogm_lcd_implementation.h
View file @
28b011e5
...
...
@@ -67,6 +67,10 @@
#undef USE_BIG_EDIT_FONT
#endif
#if ENABLED(LASERBEAM)
#include "../laser/laserbitmaps.h"
#endif
#if ENABLED(USE_SMALL_INFOFONT)
#include "dogm_font_data_6x9_marlin.h"
#define FONT_STATUSMENU_NAME u8g_font_6x9
...
...
@@ -370,6 +374,25 @@ static void lcd_implementation_status_screen() {
bool
blink
=
lcd_blink
();
#if ENABLED(LASERBEAM)
#if ENABLED(LASER_PERIPHERALS)
if
(
laser_peripherals_ok
())
{
u8g
.
drawBitmapP
(
29
,
4
,
LASERENABLE_BYTEWIDTH
,
LASERENABLE_HEIGHT
,
laserenable_bmp
);
}
#endif
lcd_setFont
(
FONT_STATUSMENU
);
u8g
.
setColorIndex
(
1
);
u8g
.
setPrintPos
(
3
,
6
);
if
(
current_block
->
laser_status
==
LASER_ON
)
{
u8g
.
drawBitmapP
(
5
,
14
,
ICON_BYTEWIDTH
,
ICON_HEIGHT
,
laseron_bmp
);
u8g
.
print
(
itostr3
(
current_block
->
laser_intensity
));
lcd_printPGM
(
PSTR
(
"%"
));
}
else
{
u8g
.
drawBitmapP
(
5
,
14
,
ICON_BYTEWIDTH
,
ICON_HEIGHT
,
laseroff_bmp
);
lcd_printPGM
(
PSTR
(
"---%"
));
}
#else
// Symbols menu graphics, animated fan
u8g
.
drawBitmapP
(
9
,
1
,
STATUS_SCREENBYTEWIDTH
,
STATUS_SCREENHEIGHT
,
#if HAS(FAN)
...
...
@@ -378,6 +401,7 @@ static void lcd_implementation_status_screen() {
status_screen0_bmp
#endif
);
#endif
// Status Menu Font for SD info, Heater status, Fan, XYZ
lcd_setFont
(
FONT_STATUSMENU
);
...
...
@@ -434,7 +458,7 @@ static void lcd_implementation_status_screen() {
u8g
.
setPrintPos
(
90
,
47
);
if
(
end_time
>
1380
||
end_time
==
0
)
u8g
.
print
(
'
E
--:--
'
);
lcd_printPGM
(
PSTR
(
"E--:--"
)
);
else
if
(
end_time
>
0
)
{
u8g
.
print
(
'E'
);
u8g
.
print
(
itostr2
(
end_time
/
60
));
...
...
@@ -450,6 +474,7 @@ static void lcd_implementation_status_screen() {
}
#endif
#if DISABLED(LASERBEAM)
// Hotends
for
(
int
i
=
0
;
i
<
HOTENDS
;
i
++
)
_draw_heater_status
(
6
+
i
*
25
,
i
);
...
...
@@ -457,6 +482,7 @@ static void lcd_implementation_status_screen() {
#if HOTENDS < 4 && HAS(TEMP_BED)
_draw_heater_status
(
81
,
-
1
);
#endif
#endif // !LASERBEAM
// Fan
u8g
.
setPrintPos
(
104
,
27
);
...
...
MK/module/lcd/ultralcd.cpp
View file @
28b011e5
...
...
@@ -88,6 +88,29 @@ char lcd_status_message[3 * (LCD_WIDTH) + 1] = WELCOME_MSG; // worst case is kan
#define LCD_Printpos(x, y) lcd.setCursor(x, y)
#endif
#if ENABLED(LASERBEAM)
static
void
lcd_laser_focus_menu
();
static
void
lcd_laser_menu
();
static
void
lcd_laser_test_fire_menu
();
static
void
laser_test_fire
(
uint8_t
power
,
int
dwell
);
static
void
laser_set_focus
(
float
f_length
);
static
void
action_laser_focus_custom
();
static
void
action_laser_focus_1mm
();
static
void
action_laser_focus_2mm
();
static
void
action_laser_focus_3mm
();
static
void
action_laser_focus_4mm
();
static
void
action_laser_focus_5mm
();
static
void
action_laser_focus_6mm
();
static
void
action_laser_focus_7mm
();
static
void
action_laser_test_20_50ms
();
static
void
action_laser_test_20_100ms
();
static
void
action_laser_test_100_50ms
();
static
void
action_laser_test_100_100ms
();
static
void
action_laser_test_warm
();
static
void
action_laser_acc_on
();
static
void
action_laser_acc_off
();
#endif
// The main status screen
static
void
lcd_status_screen
();
...
...
@@ -103,12 +126,17 @@ static void lcd_status_screen();
static
void
lcd_move_menu
();
static
void
lcd_control_menu
();
static
void
lcd_stats_menu
();
#if DISABLED(LASERBEAM)
static
void
lcd_control_temperature_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_gum_settings_menu
();
#endif
static
void
lcd_control_motion_menu
();
#if DISABLED(LASERBEAM)
static
void
lcd_control_volumetric_menu
();
#endif
#if ENABLED(FILAMENT_CHANGE_FEATURE)
static
void
lcd_filament_change_option_menu
();
...
...
@@ -189,7 +217,7 @@ static void lcd_status_screen();
/**
* 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 { \
ENCODER_DIRECTION_MENUS(); \
encoderRateMultiplierEnabled = false; \
...
...
@@ -205,7 +233,7 @@ static void lcd_status_screen();
return; } \
for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \
_menuItemNr = 0;
#else
#else
#define START_MENU() do { \
ENCODER_DIRECTION_MENUS(); \
encoderRateMultiplierEnabled = false; \
...
...
@@ -216,7 +244,7 @@ static void lcd_status_screen();
bool wasClicked = LCD_CLICKED, itemSelected; \
for (uint8_t _drawLineNr = 0; _drawLineNr < LCD_HEIGHT; _drawLineNr++, _lineNr++) { \
_menuItemNr = 0;
#endif
#endif
/**
* MENU_ITEM generates draw & handler code for a menu item, potentially calling:
...
...
@@ -526,14 +554,21 @@ inline void line_to_current(AxisEnum axis) {
#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
()
{
quickStop
();
card
.
sdprinting
=
false
;
card
.
closeFile
();
print_job_counter
.
stop
();
autotempShutdown
();
cancel_heatup
=
true
;
lcd_setstatus
(
MSG_PRINT_ABORTED
,
true
);
...
...
@@ -550,6 +585,13 @@ inline void line_to_current(AxisEnum axis) {
static
void
lcd_main_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_WATCH
);
#if ENABLED(LASERBEAM)
if
(
!
(
movesplanned
()
||
IS_SD_PRINTING
))
{
MENU_ITEM
(
submenu
,
"Laser Functions"
,
lcd_laser_menu
);
}
#endif
if
(
movesplanned
()
||
IS_SD_PRINTING
)
{
MENU_ITEM
(
submenu
,
MSG_TUNE
,
lcd_tune_menu
);
}
...
...
@@ -755,6 +797,13 @@ static void lcd_tune_menu() {
#endif // HOTENDS > 2
#endif // HOTENDS > 1
//
// Laser:
//
#if ENABLED(LASERBEAM) && HAS(COOLER)
MENU_ITEM_EDIT
(
int3
,
MSG_COOLER
,
&
target_temperature_cooler
,
0
,
COOLER_MAXTEMP
-
15
);
#endif
//
// Bed:
//
...
...
@@ -973,6 +1022,7 @@ void _lcd_preheat(int endnum, const float temph, const float tempb, const int fa
void
lcd_cooldown
()
{
disable_all_heaters
();
disable_all_coolers
();
fanSpeed
=
0
;
lcd_return_to_status
();
}
...
...
@@ -994,12 +1044,16 @@ static void lcd_prepare_menu() {
//
// Auto Home
//
#if ENABLED(LASERBEAM)
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME
,
PSTR
(
"G28 X Y F2000"
));
#else
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME
,
PSTR
(
"G28"
));
#if !MECH(DELTA)
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME_X
,
PSTR
(
"G28 X"
));
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME_Y
,
PSTR
(
"G28 Y"
));
MENU_ITEM
(
gcode
,
MSG_AUTO_HOME_Z
,
PSTR
(
"G28 Z"
));
#endif
#endif
//
// Set Home Offsets
...
...
@@ -1033,7 +1087,7 @@ static void lcd_prepare_menu() {
// Preheat ABS
// Preheat GUM
//
#if TEMP_SENSOR_0 != 0
#if TEMP_SENSOR_0 != 0
&& DISABLED(LASERBEAM)
#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_ABS
,
lcd_preheat_abs_menu
);
...
...
@@ -1055,19 +1109,6 @@ static void lcd_prepare_menu() {
MENU_ITEM
(
function
,
MSG_RETRACT_XMM
,
lcd_retract
);
#endif // EASY_LOAD
//
// LASER BEAM
//
#if ENABLED(LASERBEAM)
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
//
...
...
@@ -1275,9 +1316,13 @@ static void lcd_move_menu() {
static
void
lcd_control_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_MAIN
);
#if DISABLED(LASERBEAM)
MENU_ITEM
(
submenu
,
MSG_TEMPERATURE
,
lcd_control_temperature_menu
);
#endif
MENU_ITEM
(
submenu
,
MSG_MOTION
,
lcd_control_motion_menu
);
#if DISABLED(LASERBEAM)
MENU_ITEM
(
submenu
,
MSG_FILAMENT
,
lcd_control_volumetric_menu
);
#endif
#if HAS(LCD_CONTRAST)
//MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
...
...
@@ -1328,7 +1373,7 @@ static void lcd_stats_menu() {
#if ENABLED(PID_AUTOTUNE_MENU)
#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
);
#endif
...
...
@@ -1389,12 +1434,14 @@ static void lcd_stats_menu() {
#endif // PIDTEMP
/**
#if DISABLED(LASERBEAM)
/**
*
* "Control" > "Temperature" submenu
*
*/
static
void
lcd_control_temperature_menu
()
{
static
void
lcd_control_temperature_menu
()
{
START_MENU
();
//
...
...
@@ -1515,14 +1562,14 @@ static void lcd_control_temperature_menu() {
//
MENU_ITEM
(
submenu
,
MSG_PREHEAT_GUM_SETTINGS
,
lcd_control_temperature_preheat_gum_settings_menu
);
END_MENU
();
}
}
/**
/**
*
* "Temperature" > "Preheat PLA conf" submenu
*
*/
static
void
lcd_control_temperature_preheat_pla_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
);
...
...
@@ -1536,14 +1583,14 @@ static void lcd_control_temperature_preheat_pla_settings_menu() {
MENU_ITEM
(
function
,
MSG_STORE_EPROM
,
Config_StoreSettings
);
#endif
END_MENU
();
}
}
/**
/**
*
* "Temperature" > "Preheat ABS conf" submenu
*
*/
static
void
lcd_control_temperature_preheat_abs_settings_menu
()
{
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
);
...
...
@@ -1557,14 +1604,14 @@ static void lcd_control_temperature_preheat_abs_settings_menu() {
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
()
{
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
);
...
...
@@ -1578,7 +1625,9 @@ static void lcd_control_temperature_preheat_gum_settings_menu() {
MENU_ITEM
(
function
,
MSG_STORE_EPROM
,
Config_StoreSettings
);
#endif
END_MENU
();
}
}
#endif // !LASERBEAM
/**
*
...
...
@@ -1650,7 +1699,8 @@ static void lcd_control_motion_menu() {
* "Control" > "Filament" submenu
*
*/
static
void
lcd_control_volumetric_menu
()
{
#if DISABLED(LASERBEAM)
static
void
lcd_control_volumetric_menu
()
{
START_MENU
();
MENU_ITEM
(
back
,
MSG_CONTROL
);
...
...
@@ -1672,7 +1722,8 @@ static void lcd_control_volumetric_menu() {
}
END_MENU
();
}
}
#endif // !LASERBEAM
/**
*
...
...
@@ -1730,6 +1781,88 @@ static void lcd_control_volumetric_menu() {
}
#endif // FWRETRACT
#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
);
#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
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
()
{
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
)
{
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
);
delay
(
dwell
);
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
()
{
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"
));
}
focalLength
=
f_length
;
float
focus
=
LASER_FOCAL_HEIGHT
-
f_length
;
char
cmd
[
20
];
sprintf_P
(
cmd
,
PSTR
(
"G0 Z%s F150"
),
ftostr52
(
focus
));
enqueue_and_echo_commands_P
(
cmd
);
}
#endif // LASERBEAM
#if ENABLED(SDSUPPORT)
#if !PIN_EXISTS(SD_DETECT)
...
...
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