Add IR sensor test.
This commit is contained in:
parent
f292a6ca7a
commit
a92d9c782b
|
|
@ -450,10 +450,11 @@ void mmu_command(uint8_t cmd)
|
||||||
mmu_ready = false;
|
mmu_ready = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mmu_load_step() {
|
void mmu_load_step(bool synchronize)
|
||||||
|
{
|
||||||
current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1;
|
current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1;
|
||||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
|
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
|
||||||
st_synchronize();
|
if (synchronize) st_synchronize();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool mmu_get_response(uint8_t move)
|
bool mmu_get_response(uint8_t move)
|
||||||
|
|
@ -554,6 +555,14 @@ bool mmu_get_response(uint8_t move)
|
||||||
return response;*/
|
return response;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void mmu_wait_for_heater_blocking()
|
||||||
|
{
|
||||||
|
while ((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5)
|
||||||
|
{
|
||||||
|
delay_keep_alive(1000);
|
||||||
|
lcd_wait_for_heater();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
||||||
{
|
{
|
||||||
|
|
@ -648,11 +657,7 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
|
||||||
lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature..."));
|
lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature..."));
|
||||||
delay_keep_alive(3000);
|
delay_keep_alive(3000);
|
||||||
}
|
}
|
||||||
while ((degTargetHotend(active_extruder) - degHotend(active_extruder)) > 5)
|
mmu_wait_for_heater_blocking();
|
||||||
{
|
|
||||||
delay_keep_alive(1000);
|
|
||||||
lcd_wait_for_heater();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (move_axes) {
|
if (move_axes) {
|
||||||
lcd_clear();
|
lcd_clear();
|
||||||
|
|
@ -955,7 +960,7 @@ static const E_step ramming_sequence[] PROGMEM =
|
||||||
};
|
};
|
||||||
|
|
||||||
//! @brief Unload sequence to optimize shape of the tip of the unloaded filament
|
//! @brief Unload sequence to optimize shape of the tip of the unloaded filament
|
||||||
static void filament_ramming()
|
void mmu_filament_ramming()
|
||||||
{
|
{
|
||||||
for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i)
|
for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i)
|
||||||
{
|
{
|
||||||
|
|
@ -987,7 +992,7 @@ void extr_unload()
|
||||||
if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" ");
|
if (mmu_extruder == MMU_FILAMENT_UNKNOWN) lcd_print(" ");
|
||||||
else lcd_print(mmu_extruder + 1);
|
else lcd_print(mmu_extruder + 1);
|
||||||
|
|
||||||
filament_ramming();
|
mmu_filament_ramming();
|
||||||
|
|
||||||
mmu_command(MMU_CMD_U0);
|
mmu_command(MMU_CMD_U0);
|
||||||
// get response
|
// get response
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,8 @@
|
||||||
//! @file
|
//! @file
|
||||||
|
|
||||||
|
#ifndef MMU_H
|
||||||
|
#define MMU_H
|
||||||
|
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -119,3 +122,8 @@ extern void mmu_eject_fil_2();
|
||||||
extern void mmu_eject_fil_3();
|
extern void mmu_eject_fil_3();
|
||||||
extern void mmu_eject_fil_4();
|
extern void mmu_eject_fil_4();
|
||||||
extern void mmu_continue_loading();
|
extern void mmu_continue_loading();
|
||||||
|
extern void mmu_filament_ramming();
|
||||||
|
extern void mmu_wait_for_heater_blocking();
|
||||||
|
extern void mmu_load_step(bool synchronize = true);
|
||||||
|
|
||||||
|
#endif //MMU_H
|
||||||
|
|
|
||||||
|
|
@ -163,6 +163,7 @@ static void lcd_selftest_screen_step(int _row, int _col, int _state, const char
|
||||||
static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite);
|
static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite);
|
||||||
static bool lcd_selftest_fan_dialog(int _fan);
|
static bool lcd_selftest_fan_dialog(int _fan);
|
||||||
static bool lcd_selftest_fsensor();
|
static bool lcd_selftest_fsensor();
|
||||||
|
static bool selftest_irsensor();
|
||||||
static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2);
|
static void lcd_selftest_error(int _error_no, const char *_error_1, const char *_error_2);
|
||||||
static void lcd_colorprint_change();
|
static void lcd_colorprint_change();
|
||||||
#ifdef SNMM
|
#ifdef SNMM
|
||||||
|
|
@ -6421,17 +6422,20 @@ bool lcd_selftest()
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef FILAMENT_SENSOR
|
#ifdef FILAMENT_SENSOR
|
||||||
if (mmu_enabled == false)
|
if (_result)
|
||||||
{
|
{
|
||||||
if (_result)
|
_progress = lcd_selftest_screen(9, _progress, 3, true, 2000); //check filaments sensor
|
||||||
|
if (mmu_enabled)
|
||||||
|
{
|
||||||
|
_result = selftest_irsensor();
|
||||||
|
} else
|
||||||
{
|
{
|
||||||
_progress = lcd_selftest_screen(9, _progress, 3, true, 2000); //check filaments sensor
|
|
||||||
_result = lcd_selftest_fsensor();
|
_result = lcd_selftest_fsensor();
|
||||||
}
|
}
|
||||||
if (_result)
|
}
|
||||||
{
|
if (_result)
|
||||||
_progress = lcd_selftest_screen(10, _progress, 3, true, 2000); //fil sensor OK
|
{
|
||||||
}
|
_progress = lcd_selftest_screen(10, _progress, 3, true, 2000); //fil sensor OK
|
||||||
}
|
}
|
||||||
#endif // FILAMENT_SENSOR
|
#endif // FILAMENT_SENSOR
|
||||||
|
|
||||||
|
|
@ -6991,6 +6995,49 @@ static bool lcd_selftest_fsensor(void)
|
||||||
}
|
}
|
||||||
return (!fsensor_not_responding);
|
return (!fsensor_not_responding);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool selftest_irsensor()
|
||||||
|
{
|
||||||
|
class TempBackup
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TempBackup():
|
||||||
|
m_temp(degTargetHotend(active_extruder)),
|
||||||
|
m_extruder(active_extruder){}
|
||||||
|
~TempBackup(){setTargetHotend(m_temp,m_extruder);}
|
||||||
|
private:
|
||||||
|
float m_temp;
|
||||||
|
uint8_t m_extruder;
|
||||||
|
};
|
||||||
|
|
||||||
|
TempBackup tempBackup;
|
||||||
|
setTargetHotend(PLA_PREHEAT_HOTEND_TEMP,active_extruder);
|
||||||
|
mmu_wait_for_heater_blocking();
|
||||||
|
lcd_selftest_screen(9, 0, 3, true, 0);
|
||||||
|
mmu_filament_ramming();
|
||||||
|
|
||||||
|
for(uint_least8_t i = 0; i < 200; ++i)
|
||||||
|
{
|
||||||
|
mmu_load_step(false);
|
||||||
|
while (blocks_queued())
|
||||||
|
{
|
||||||
|
if (PIN_GET(MMU_IDLER_SENSOR_PIN) == 0) return false;
|
||||||
|
#ifdef TMC2130
|
||||||
|
manage_heater();
|
||||||
|
// Vojtech: Don't disable motors inside the planner!
|
||||||
|
if (!tmc2130_update_sg())
|
||||||
|
{
|
||||||
|
manage_inactivity(true);
|
||||||
|
}
|
||||||
|
#else //TMC2130
|
||||||
|
manage_heater();
|
||||||
|
// Vojtech: Don't disable motors inside the planner!
|
||||||
|
manage_inactivity(true);
|
||||||
|
#endif //TMC2130
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#endif //FILAMENT_SENSOR
|
#endif //FILAMENT_SENSOR
|
||||||
|
|
||||||
static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite)
|
static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue