Commit e31f6b71 authored by MagoKimbra's avatar MagoKimbra

Update v4.2.82

Add DONDOLO bowden dual extruder
parent b671d4f3
### Version 4.2.82
* Add DONDOLO_DUAL_MOTOR for DONDOLO bowden and dual extruder
### Version 4.2.81 ### Version 4.2.81
* Fix serial protocol for Repetier Host * Fix serial protocol for Repetier Host
* Bug fix * Bug fix
......
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
* * * *
***********************************************************************/ ***********************************************************************/
//#define HOTEND_WATTS (12.0*12.0/6.7) // P=I^2/R //#define HOTEND_WATTS (12.0*12.0/6.7) // P=I^2/R
//#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R //#define BED_WATTS (12.0*12.0/1.1) // P=I^2/R
/***********************************************************************/ /***********************************************************************/
...@@ -484,6 +484,8 @@ ...@@ -484,6 +484,8 @@
*********************************************************************** ***********************************************************************
* * * *
* Setting for multiextruder DONDOLO 1.0b by Gianni Franci * * Setting for multiextruder DONDOLO 1.0b by Gianni Franci *
* Enable DONDOLO SINGLE MOTOR for original DONDOLO by Gianni Franci *
* Enable DONDOLO DUAL MOTOR for bowden and dual EXTRUDER *
* http://www.thingiverse.com/thing:673816 * * http://www.thingiverse.com/thing:673816 *
* For function set NUM_SERVOS +1 if you use for endstop or probe * * For function set NUM_SERVOS +1 if you use for endstop or probe *
* Set DONDOLO SERVO INDEX for servo you use for DONDOLO * * Set DONDOLO SERVO INDEX for servo you use for DONDOLO *
...@@ -492,7 +494,9 @@ ...@@ -492,7 +494,9 @@
* Remember set HOTEND OFFSET X Y Z * * Remember set HOTEND OFFSET X Y Z *
* * * *
***********************************************************************/ ***********************************************************************/
//#define DONDOLO //#define DONDOLO_SINGLE_MOTOR
//#define DONDOLO_DUAL_MOTOR
#define DONDOLO_SERVO_INDEX 0 #define DONDOLO_SERVO_INDEX 0
#define DONDOLO_SERVOPOS_E0 120 #define DONDOLO_SERVOPOS_E0 120
#define DONDOLO_SERVOPOS_E1 10 #define DONDOLO_SERVOPOS_E1 10
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
#define CONFIGURATION_VERSION_H #define CONFIGURATION_VERSION_H
#define FIRMWARE_NAME "MK" #define FIRMWARE_NAME "MK"
#define SHORT_BUILD_VERSION "4.2.81_dev" #define SHORT_BUILD_VERSION "4.2.82_dev"
#define BUILD_VERSION FIRMWARE_NAME "_" SHORT_BUILD_VERSION #define BUILD_VERSION FIRMWARE_NAME "_" SHORT_BUILD_VERSION
#define STRING_DISTRIBUTION_DATE __DATE__ " " __TIME__ // build date and time #define STRING_DISTRIBUTION_DATE __DATE__ " " __TIME__ // build date and time
// It might also be appropriate to define a location where additional information can be found // It might also be appropriate to define a location where additional information can be found
......
...@@ -582,7 +582,7 @@ bool enqueue_and_echo_command(const char* cmd, bool say_ok/*=false*/) { ...@@ -582,7 +582,7 @@ bool enqueue_and_echo_command(const char* cmd, bool say_ok/*=false*/) {
servo[3].detach(); servo[3].detach();
#endif #endif
#if ENABLED(DONDOLO) #if HAS(DONDOLO)
servo[DONDOLO_SERVO_INDEX].attach(0); servo[DONDOLO_SERVO_INDEX].attach(0);
servo[DONDOLO_SERVO_INDEX].write(DONDOLO_SERVOPOS_E0); servo[DONDOLO_SERVO_INDEX].write(DONDOLO_SERVOPOS_E0);
delay_ms(DONDOLO_SERVO_DELAY); delay_ms(DONDOLO_SERVO_DELAY);
...@@ -591,7 +591,7 @@ bool enqueue_and_echo_command(const char* cmd, bool say_ok/*=false*/) { ...@@ -591,7 +591,7 @@ bool enqueue_and_echo_command(const char* cmd, bool say_ok/*=false*/) {
// Set position of Servo Endstops that are defined // Set position of Servo Endstops that are defined
#if HAS(SERVO_ENDSTOPS) #if HAS(SERVO_ENDSTOPS)
#if ENABLED(DONDOLO) #if HAS(DONDOLO)
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
if (servo_endstop_id[i] >= 0 && servo_endstop_id[i] != DONDOLO_SERVO_INDEX) if (servo_endstop_id[i] >= 0 && servo_endstop_id[i] != DONDOLO_SERVO_INDEX)
servo[servo_endstop_id[i]].write(servo_endstop_angle[i][1]); servo[servo_endstop_id[i]].write(servo_endstop_angle[i][1]);
...@@ -1926,6 +1926,8 @@ inline void do_blocking_move_to_z(float z) { do_blocking_move_to(current_positio ...@@ -1926,6 +1926,8 @@ inline void do_blocking_move_to_z(float z) { do_blocking_move_to(current_positio
static void deploy_z_probe() { static void deploy_z_probe() {
if (DEBUGGING(INFO)) DEBUG_POS("deploy_z_probe", current_position);
if (endstops.z_probe_enabled) return; if (endstops.z_probe_enabled) return;
#if HAS(SERVO_ENDSTOPS) #if HAS(SERVO_ENDSTOPS)
...@@ -1961,6 +1963,8 @@ inline void do_blocking_move_to_z(float z) { do_blocking_move_to(current_positio ...@@ -1961,6 +1963,8 @@ inline void do_blocking_move_to_z(float z) { do_blocking_move_to(current_positio
static void retract_z_probe() { static void retract_z_probe() {
if (DEBUGGING(INFO)) DEBUG_POS("retract_z_probe", current_position);
if (!endstops.z_probe_enabled) return; if (!endstops.z_probe_enabled) return;
#if HAS(SERVO_ENDSTOPS) #if HAS(SERVO_ENDSTOPS)
...@@ -6134,7 +6138,7 @@ inline void gcode_M226() { ...@@ -6134,7 +6138,7 @@ inline void gcode_M226() {
inline void gcode_M280() { inline void gcode_M280() {
int servo_index = code_seen('P') ? code_value_short() : -1; int servo_index = code_seen('P') ? code_value_short() : -1;
int servo_position = 0; int servo_position = 0;
#if ENABLED(DONDOLO) #if HAS(DONDOLO)
if (code_seen('S')) { if (code_seen('S')) {
servo_position = code_value_short(); servo_position = code_value_short();
if (servo_index >= 0 && servo_index < NUM_SERVOS && servo_index != DONDOLO_SERVO_INDEX) { if (servo_index >= 0 && servo_index < NUM_SERVOS && servo_index != DONDOLO_SERVO_INDEX) {
...@@ -7588,7 +7592,7 @@ inline void gcode_T(uint8_t tmp_extruder) { ...@@ -7588,7 +7592,7 @@ inline void gcode_T(uint8_t tmp_extruder) {
old_color = active_extruder = target_extruder; old_color = active_extruder = target_extruder;
active_driver = 0; active_driver = 0;
ECHO_LMV(DB, SERIAL_ACTIVE_COLOR, (int)active_extruder); ECHO_LMV(DB, SERIAL_ACTIVE_COLOR, (int)active_extruder);
#elif ENABLED(DONDOLO) #elif HAS(DONDOLO)
st_synchronize(); st_synchronize();
servo[DONDOLO_SERVO_INDEX].attach(0); servo[DONDOLO_SERVO_INDEX].attach(0);
if (target_extruder == 0) { if (target_extruder == 0) {
...@@ -7600,8 +7604,12 @@ inline void gcode_T(uint8_t tmp_extruder) { ...@@ -7600,8 +7604,12 @@ inline void gcode_T(uint8_t tmp_extruder) {
delay_ms(DONDOLO_SERVO_DELAY); delay_ms(DONDOLO_SERVO_DELAY);
servo[DONDOLO_SERVO_INDEX].detach(); servo[DONDOLO_SERVO_INDEX].detach();
previous_extruder = active_extruder; previous_extruder = active_extruder;
active_extruder = target_extruder; #if ENABLED(DONDOLO_SINGLE_MOTOR)
active_driver = 0; active_extruder = target_extruder;
active_driver = 0;
#elif ENABLED(DONDOLO_DUAL_MOTOR)
active_driver = active_extruder = target_extruder;
#endif
set_stepper_direction(true); set_stepper_direction(true);
ECHO_LMV(DB, SERIAL_ACTIVE_DRIVER, (int)active_driver); ECHO_LMV(DB, SERIAL_ACTIVE_DRIVER, (int)active_driver);
ECHO_LMV(DB, SERIAL_ACTIVE_EXTRUDER, (int)active_extruder); ECHO_LMV(DB, SERIAL_ACTIVE_EXTRUDER, (int)active_extruder);
......
...@@ -267,12 +267,16 @@ ...@@ -267,12 +267,16 @@
/** /**
* DONDOLO * DONDOLO
*/ */
#if ENABLED(DONDOLO) #if ENABLED(DONDOLO_SINGLE_MOTOR)
#undef SINGLENOZZLE #undef SINGLENOZZLE
#undef ADVANCE #undef ADVANCE
#undef DRIVER_EXTRUDERS #undef DRIVER_EXTRUDERS
#define DRIVER_EXTRUDERS 1 #define DRIVER_EXTRUDERS 1
#endif #endif
#if ENABLED(DONDOLO_DUAL_MOTOR)
#undef SINGLENOZZLE
#undef ADVANCE
#endif
/** /**
* SINGLENOZZLE * SINGLENOZZLE
...@@ -289,7 +293,7 @@ ...@@ -289,7 +293,7 @@
/** /**
* DRIVER_EXTRUDERS * DRIVER_EXTRUDERS
*/ */
#if DISABLED(MKR4) && DISABLED(NPR2) && DISABLED(DONDOLO) && DISABLED(COLOR_MIXING_EXTRUDER) #if DISABLED(MKR4) && DISABLED(NPR2) && DISABLED(DONDOLO_SINGLE_MOTOR) && DISABLED(COLOR_MIXING_EXTRUDER)
#undef DRIVER_EXTRUDERS #undef DRIVER_EXTRUDERS
#define DRIVER_EXTRUDERS EXTRUDERS // This defines the number of Driver extruder #define DRIVER_EXTRUDERS EXTRUDERS // This defines the number of Driver extruder
#endif #endif
...@@ -749,6 +753,8 @@ ...@@ -749,6 +753,8 @@
#define HAS_MOTOR_CURRENT_PWM_XY (PIN_EXISTS(MOTOR_CURRENT_PWM_XY)) #define HAS_MOTOR_CURRENT_PWM_XY (PIN_EXISTS(MOTOR_CURRENT_PWM_XY))
#define HAS_SDSUPPORT (ENABLED(SDSUPPORT)) #define HAS_SDSUPPORT (ENABLED(SDSUPPORT))
#define HAS_DONDOLO (ENABLED(DONDOLO_SINGLE_MOTOR) || ENABLED(DONDOLO_DUAL_MOTOR))
#define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS)) #define HAS_DIGIPOTSS (PIN_EXISTS(DIGIPOTSS))
#define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675)) #define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
......
...@@ -42,6 +42,9 @@ ...@@ -42,6 +42,9 @@
#define MSG_AUTOSTART "Autostart" #define MSG_AUTOSTART "Autostart"
#define MSG_DISABLE_STEPPERS "Disable steppers" #define MSG_DISABLE_STEPPERS "Disable steppers"
#define MSG_AUTO_HOME "Auto home" #define MSG_AUTO_HOME "Auto home"
#define MSG_AUTO_HOME_X "Home X"
#define MSG_AUTO_HOME_Y "Home Y"
#define MSG_AUTO_HOME_Z "Home Z"
#define MSG_MBL_SETTING "Manual Bed Leveling" #define MSG_MBL_SETTING "Manual Bed Leveling"
#define MSG_MBL_BUTTON " Press the button " #define MSG_MBL_BUTTON " Press the button "
#define MSG_MBL_INTRO " Leveling bed... " #define MSG_MBL_INTRO " Leveling bed... "
......
...@@ -701,6 +701,16 @@ static void lcd_tune_fixstep() { ...@@ -701,6 +701,16 @@ static void lcd_tune_fixstep() {
#endif #endif
#endif // !THERMAL_PROTECTION_HOTENDS #endif // !THERMAL_PROTECTION_HOTENDS
#if ENABLED(THERMAL_PROTECTION_BED)
#if TEMP_SENSOR_BED != 0
void watch_temp_callback_bed() { start_watching_bed(); }
#endif
#else
#if TEMP_SENSOR_BED != 0
void watch_temp_callback_bed() {}
#endif
#endif
/** /**
* *
* "Tune" submenu * "Tune" submenu
...@@ -749,7 +759,7 @@ static void lcd_tune_menu() { ...@@ -749,7 +759,7 @@ static void lcd_tune_menu() {
// 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_CALLBACK(int3, MSG_BED, &target_temperature_bed, 0, BED_MAXTEMP - 15, watch_temp_callback_bed);
#endif #endif
// //
...@@ -827,6 +837,11 @@ static void lcd_tune_menu() { ...@@ -827,6 +837,11 @@ static void lcd_tune_menu() {
} }
#endif // EASY_LOAD #endif // EASY_LOAD
/**
*
* "Prepare" submenu items
*
*/
void _lcd_preheat(int endnum, const float temph, const float tempb, const int fan) { void _lcd_preheat(int endnum, const float temph, const float tempb, const int fan) {
if (temph > 0) setTargetHotend(temph, endnum); if (temph > 0) setTargetHotend(temph, endnum);
#if TEMP_SENSOR_BED != 0 #if TEMP_SENSOR_BED != 0
...@@ -980,6 +995,9 @@ static void lcd_prepare_menu() { ...@@ -980,6 +995,9 @@ static void lcd_prepare_menu() {
// Auto Home // Auto Home
// //
MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28")); MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
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"));
// //
// Set Home Offsets // Set Home Offsets
......
...@@ -237,7 +237,7 @@ ...@@ -237,7 +237,7 @@
#define REV_E_DIR() { if(extruder_duplication_enabled) { E0_DIR_WRITE( INVERT_E0_DIR); E1_DIR_WRITE( INVERT_E1_DIR); } else if(current_block->active_driver == 1) { E1_DIR_WRITE( INVERT_E1_DIR); } else { E0_DIR_WRITE( INVERT_E0_DIR); }} #define REV_E_DIR() { if(extruder_duplication_enabled) { E0_DIR_WRITE( INVERT_E0_DIR); E1_DIR_WRITE( INVERT_E1_DIR); } else if(current_block->active_driver == 1) { E1_DIR_WRITE( INVERT_E1_DIR); } else { E0_DIR_WRITE( INVERT_E0_DIR); }}
#endif #endif
#else #else
#if ENABLED(DONDOLO) #if ENABLED(DONDOLO_SINGLE_MOTOR)
#define E_STEP_WRITE(v) E0_STEP_WRITE(v) #define E_STEP_WRITE(v) E0_STEP_WRITE(v)
#define NORM_E_DIR() { switch(active_extruder) { case 1: E0_DIR_WRITE( INVERT_E0_DIR); break; case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; }} #define NORM_E_DIR() { switch(active_extruder) { case 1: E0_DIR_WRITE( INVERT_E0_DIR); break; case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; }}
#define REV_E_DIR() { switch(active_extruder) { case 1: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; }} #define REV_E_DIR() { switch(active_extruder) { case 1: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; }}
......
...@@ -1750,8 +1750,16 @@ ...@@ -1750,8 +1750,16 @@
#error DEPENDENCY ERROR: You have to set E_MIN_PIN to a valid pin if you enable NPR2 #error DEPENDENCY ERROR: You have to set E_MIN_PIN to a valid pin if you enable NPR2
#endif #endif
#if ENABLED(DONDOLO) && NUM_SERVOS < 1 #if (ENABLED(DONDOLO_SINGLE_MOTOR) || ENABLED(DONDOLO_DUAL_MOTOR)) && HASNT(SERVOS)
#error DEPENDENCY ERROR: You must set NUM_SERVOS > 0 for DONDOLO #error DEPENDENCY ERROR: You must enabled ENABLE_SERVOS and set NUM_SERVOS > 0 for DONDOLO MULTI EXTRUDER
#endif
#if ENABLED(DONDOLO_SINGLE_MOTOR) && ENABLED(DONDOLO_DUAL_MOTOR)
#error DEPENDENCY ERROR: You must enabled only one for DONDOLO_SINGLE_MOTOR and DONDOLO_DUAL_MOTOR
#endif
#if (ENABLED(DONDOLO_SINGLE_MOTOR) || ENABLED(DONDOLO_DUAL_MOTOR)) && EXTRUDERS != 2
#error DEPENDENCY ERROR: You must set EXTRUDERS = 2 for DONDOLO
#endif #endif
#if ENABLED(LASERBEAM) && (!PIN_EXISTS(LASER_PWR) || !PIN_EXISTS(LASER_TTL)) #if ENABLED(LASERBEAM) && (!PIN_EXISTS(LASER_PWR) || !PIN_EXISTS(LASER_TTL))
......
<img align="right" src="Documentation/Logo/MarlinKimbra%20Logo%20GitHub.png" /> <img align="right" src="Documentation/Logo/MarlinKimbra%20Logo%20GitHub.png" />
# MarlinKimbra 3D Printer Firmware for Arduino # MarlinKimbra 3D Printer Firmware for Arduino
## Version 4.2.81 dev ## Version 4.2.82 dev
### Special thanks ### Special thanks
* all Marlin8bit-developers. * all Marlin8bit-developers.
......
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