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
cfedb309
Commit
cfedb309
authored
Feb 23, 2015
by
MagoKimbra
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix M600 filament change
parent
d5c22cc8
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
36 deletions
+55
-36
Marlin_main.cpp
MarlinKimbra/Marlin_main.cpp
+55
-36
No files found.
MarlinKimbra/Marlin_main.cpp
View file @
cfedb309
...
@@ -2002,6 +2002,40 @@ void refresh_cmd_timeout(void)
...
@@ -2002,6 +2002,40 @@ void refresh_cmd_timeout(void)
}
}
#endif //Z_PROBE_SLED
#endif //Z_PROBE_SLED
inline
void
lcd_beep
(
int
number_beep
=
3
)
{
#ifdef LCD_USE_I2C_BUZZER
#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS)
for
(
int8_t
i
=
0
;
i
<
3
;
i
++
)
{
lcd_buzz
(
1000
/
6
,
100
);
}
#else
for
(
int8_t
i
=
0
;
i
<
number_beep
;
i
++
)
{
lcd_buzz
(
LCD_FEEDBACK_FREQUENCY_DURATION_MS
,
LCD_FEEDBACK_FREQUENCY_HZ
);
}
#endif
#elif defined(BEEPER) && BEEPER > -1
SET_OUTPUT
(
BEEPER
);
#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS)
for
(
int8_t
i
=
0
;
i
<
number_beep
;
i
++
)
{
WRITE
(
BEEPER
,
HIGH
);
delay
(
100
);
WRITE
(
BEEPER
,
LOW
);
delay
(
100
);
}
#else
for
(
int8_t
i
=
0
;
i
<
number_beep
;
i
++
)
{
WRITE
(
BEEPER
,
HIGH
);
delay
(
1000000
/
LCD_FEEDBACK_FREQUENCY_HZ
/
2
);
WRITE
(
BEEPER
,
LOW
);
delay
(
1000000
/
LCD_FEEDBACK_FREQUENCY_HZ
/
2
);
}
#endif
#endif
}
inline
void
wait_heater
()
inline
void
wait_heater
()
{
{
setWatch
();
setWatch
();
...
@@ -3557,9 +3591,10 @@ inline void gcode_G92() {
...
@@ -3557,9 +3591,10 @@ inline void gcode_G92() {
//disable extruder steppers so filament can be removed
//disable extruder steppers so filament can be removed
disable_e
();
disable_e
();
delay
(
100
);
delay
(
100
);
LCD_ALERTMESSAGEPGM
(
MSG_FILAMENTCHANGE
);
boolean
beep
=
true
;
boolean
beep
=
true
;
boolean
sleep
=
false
;
int
cnt
=
0
;
int
cnt
=
0
;
#ifndef SINGLENOZZLE
#ifndef SINGLENOZZLE
int
old_target_temperature
[
EXTRUDERS
]
=
{
0
};
int
old_target_temperature
[
EXTRUDERS
]
=
{
0
};
for
(
int8_t
e
=
0
;
e
<
EXTRUDERS
;
e
++
)
for
(
int8_t
e
=
0
;
e
<
EXTRUDERS
;
e
++
)
...
@@ -3572,50 +3607,27 @@ inline void gcode_G92() {
...
@@ -3572,50 +3607,27 @@ inline void gcode_G92() {
}
}
int
old_target_temperature_bed
=
target_temperature_bed
;
int
old_target_temperature_bed
=
target_temperature_bed
;
timer
.
set_max_delay
(
60000
);
// 1 minute
timer
.
set_max_delay
(
60000
);
// 1 minute
PRESSBUTTON:
LCD_ALERTMESSAGEPGM
(
MSG_FILAMENTCHANGE
);
while
(
!
lcd_clicked
())
{
while
(
!
lcd_clicked
())
{
manage_heater
();
manage_heater
();
manage_inactivity
(
true
);
manage_inactivity
(
true
);
lcd_update
();
lcd_update
();
if
(
timer
.
check
()
&&
cnt
<=
5
)
beep
=
true
;
if
(
timer
.
check
()
&&
cnt
<=
5
)
beep
=
true
;
if
(
cnt
>=
5
)
{
if
(
cnt
>=
5
&&
!
sleep
)
{
disable_heater
();
disable_heater
();
disable_x
();
disable_x
();
disable_y
();
disable_y
();
disable_z
();
disable_z
();
disable_e
();
disable_e
();
sleep
=
true
;
lcd_reset_alert_level
();
LCD_ALERTMESSAGEPGM
(
"Zzzz Zzzz Zzzz"
);
}
}
if
(
beep
)
{
if
(
beep
)
{
timer
.
set
();
timer
.
set
();
#ifdef LCD_USE_I2C_BUZZER
lcd_beep
(
3
);
#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS)
for
(
int8_t
i
=
0
;
i
<
3
;
i
++
)
{
lcd_buzz
(
1000
/
6
,
100
);
}
#else
for
(
int8_t
i
=
0
;
i
<
3
;
i
++
)
{
lcd_buzz
(
LCD_FEEDBACK_FREQUENCY_DURATION_MS
,
LCD_FEEDBACK_FREQUENCY_HZ
);
}
#endif
#elif defined(BEEPER) && BEEPER > -1
SET_OUTPUT
(
BEEPER
);
#if !defined(LCD_FEEDBACK_FREQUENCY_HZ) || !defined(LCD_FEEDBACK_FREQUENCY_DURATION_MS)
for
(
int8_t
i
=
0
;
i
<
3
;
i
++
)
{
WRITE
(
BEEPER
,
HIGH
);
delay
(
100
);
WRITE
(
BEEPER
,
LOW
);
delay
(
100
);
}
#else
for
(
int8_t
i
=
0
;
i
<
3
;
i
++
)
{
WRITE
(
BEEPER
,
HIGH
);
delay
(
1000000
/
LCD_FEEDBACK_FREQUENCY_HZ
/
2
);
WRITE
(
BEEPER
,
LOW
);
delay
(
1000000
/
LCD_FEEDBACK_FREQUENCY_HZ
/
2
);
}
#endif
#endif
beep
=
false
;
beep
=
false
;
cnt
+=
1
;
cnt
+=
1
;
}
}
...
@@ -3624,7 +3636,7 @@ inline void gcode_G92() {
...
@@ -3624,7 +3636,7 @@ inline void gcode_G92() {
//reset LCD alert message
//reset LCD alert message
lcd_reset_alert_level
();
lcd_reset_alert_level
();
if
(
cnt
>=
5
)
{
if
(
sleep
)
{
#ifndef SINGLENOZZLE
#ifndef SINGLENOZZLE
for
(
int8_t
e
=
0
;
e
<
EXTRUDERS
;
e
++
)
for
(
int8_t
e
=
0
;
e
<
EXTRUDERS
;
e
++
)
#else
#else
...
@@ -3638,6 +3650,10 @@ inline void gcode_G92() {
...
@@ -3638,6 +3650,10 @@ inline void gcode_G92() {
setTargetBed
(
old_target_temperature_bed
);
setTargetBed
(
old_target_temperature_bed
);
CooldownNoWait
=
true
;
CooldownNoWait
=
true
;
wait_bed
();
wait_bed
();
sleep
=
false
;
beep
=
true
;
cnt
=
0
;
goto
PRESSBUTTON
;
}
}
//return to normal
//return to normal
...
@@ -3660,13 +3676,16 @@ inline void gcode_G92() {
...
@@ -3660,13 +3676,16 @@ inline void gcode_G92() {
calculate_delta
(
lastpos
);
calculate_delta
(
lastpos
);
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
target
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//move xyz back
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
target
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//move xyz back
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
lastpos
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//final unretract
plan_buffer_line
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
lastpos
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//final unretract
for
(
int8_t
i
=
0
;
i
<
NUM_AXIS
;
i
++
)
current_position
[
i
]
=
lastpos
[
i
];
calculate_delta
(
current_position
);
plan_set_position
(
delta
[
X_AXIS
],
delta
[
Y_AXIS
],
delta
[
Z_AXIS
],
current_position
[
E_AXIS
]);
#else
#else
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
target
[
Z_AXIS
],
target
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//move xy back
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
target
[
Z_AXIS
],
target
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//move xy back
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
lastpos
[
Z_AXIS
],
target
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//move z back
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
lastpos
[
Z_AXIS
],
target
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//move z back
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
lastpos
[
Z_AXIS
],
lastpos
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//final unretract
plan_buffer_line
(
lastpos
[
X_AXIS
],
lastpos
[
Y_AXIS
],
lastpos
[
Z_AXIS
],
lastpos
[
E_AXIS
],
feedrate
/
60
,
active_extruder
,
active_driver
);
//final unretract
for
(
int8_t
i
=
0
;
i
<
NUM_AXIS
;
i
++
)
current_position
[
i
]
=
lastpos
[
i
];
plan_set_position
(
current_position
[
X_AXIS
],
current_position
[
Y_AXIS
],
current_position
[
Z_AXIS
],
current_position
[
E_AXIS
]);
#endif
#endif
for
(
int8_t
i
=
0
;
i
<
NUM_AXIS
;
i
++
)
current_position
[
i
]
=
lastpos
[
i
];
plan_set_position
(
current_position
[
X_AXIS
],
current_position
[
Y_AXIS
],
current_position
[
Z_AXIS
],
current_position
[
E_AXIS
]);
}
}
#endif //FILAMENTCHANGEENABLE
#endif //FILAMENTCHANGEENABLE
...
...
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