diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index 83944ab032..3405dfbffe 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -403,6 +403,9 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th // SF send wrong arc g-codes when using Arc Point as fillet procedure //#define SF_ARC_FIX +// Support for the BariCUDA Paste Extruder. +//#define BARICUDA + #include "Configuration_adv.h" #include "thermistortables.h" diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h index af3f517c86..551a553907 100644 --- a/Marlin/Marlin.h +++ b/Marlin/Marlin.h @@ -186,8 +186,10 @@ extern float add_homeing[3]; extern float min_pos[3]; extern float max_pos[3]; extern int fanSpeed; +#ifdef BARICUDA extern int ValvePressure; extern int EtoPPressure; +#endif #ifdef FWRETRACT extern bool autoretract_enabled; diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 3d966bf1d7..0a528ea058 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -172,8 +172,10 @@ float extruder_offset[2][EXTRUDERS] = { #endif uint8_t active_extruder = 0; int fanSpeed=0; +#ifdef BARICUDA int ValvePressure=0; int EtoPPressure=0; +#endif #ifdef FWRETRACT bool autoretract_enabled=true; @@ -1174,37 +1176,37 @@ void process_commands() fanSpeed = 0; break; #endif //FAN_PIN - + #ifdef BARICUDA // PWM for HEATER_1_PIN - #if HEATER_1_PIN > -1 - case 126: //M126 valve open - if (code_seen('S')){ - ValvePressure=constrain(code_value(),0,255); - } - else { - ValvePressure=255; - } - break; - case 127: //M127 valve closed - ValvePressure = 0; - break; - #endif //HEATER_1_PIN - - // PWM for HEATER_2_PIN - #if HEATER_2_PIN > -1 - case 128: //M128 valve open - if (code_seen('S')){ - EtoPPressure=constrain(code_value(),0,255); - } - else { - EtoPPressure=255; - } - break; - case 129: //M129 valve closed - EtoPPressure = 0; - break; - #endif //HEATER_2_PIN + #if HEATER_1_PIN > -1 + case 126: //M126 valve open + if (code_seen('S')){ + ValvePressure=constrain(code_value(),0,255); + } + else { + ValvePressure=255; + } + break; + case 127: //M127 valve closed + ValvePressure = 0; + break; + #endif //HEATER_1_PIN + // PWM for HEATER_2_PIN + #if HEATER_2_PIN > -1 + case 128: //M128 valve open + if (code_seen('S')){ + EtoPPressure=constrain(code_value(),0,255); + } + else { + EtoPPressure=255; + } + break; + case 129: //M129 valve closed + EtoPPressure = 0; + break; + #endif //HEATER_2_PIN + #endif #if (PS_ON_PIN > -1) case 80: // M80 - ATX Power On diff --git a/Marlin/pins.h b/Marlin/pins.h index ac25dea4cf..a13c522f71 100644 --- a/Marlin/pins.h +++ b/Marlin/pins.h @@ -1474,7 +1474,11 @@ #define HEATER_1_PIN 7 #define TEMP_1_PIN 1 +#ifdef BARICUDA #define HEATER_2_PIN 6 +#else +#define HEATER_2_PIN -1 +#endif #define TEMP_2_PIN -1 #define E0_STEP_PIN 34 diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index 0bf59593e1..1a37cecb47 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -439,18 +439,22 @@ void check_axes_activity() unsigned char z_active = 0; unsigned char e_active = 0; unsigned char tail_fan_speed = fanSpeed; + #ifdef BARICUDA unsigned char valve_pressure = 0; unsigned char e_to_p_pressure = 0; unsigned char tail_valve_pressure = 0; unsigned char tail_e_to_p_pressure = 0; + #endif block_t *block; if(block_buffer_tail != block_buffer_head) { uint8_t block_index = block_buffer_tail; tail_fan_speed = block_buffer[block_index].fan_speed; + #ifdef BARICUDA tail_valve_pressure = block_buffer[block_index].valve_pressure; tail_e_to_p_pressure = block_buffer[block_index].e_to_p_pressure; + #endif while(block_index != block_buffer_head) { block = &block_buffer[block_index]; @@ -493,7 +497,8 @@ void check_axes_activity() getHighESpeed(); #endif -#if HEATER_1_PIN > -1 +#ifdef BARICUDA + #if HEATER_1_PIN > -1 if (ValvePressure != 0){ analogWrite(HEATER_1_PIN,ValvePressure); // If buffer is empty use current valve pressure } @@ -505,9 +510,9 @@ void check_axes_activity() if (ValvePressure != 0 && tail_valve_pressure !=0) { analogWrite(HEATER_1_PIN,tail_valve_pressure); } -#endif + #endif -#if HEATER_2_PIN > -1 + #if HEATER_2_PIN > -1 if (EtoPPressure != 0){ analogWrite(HEATER_2_PIN,EtoPPressure); // If buffer is empty use current EtoP pressure } @@ -519,6 +524,7 @@ void check_axes_activity() if (EtoPPressure != 0 && tail_e_to_p_pressure !=0) { analogWrite(HEATER_2_PIN,tail_e_to_p_pressure); } + #endif #endif } @@ -593,8 +599,10 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa } block->fan_speed = fanSpeed; + #ifdef BARICUDA block->valve_pressure = ValvePressure; block->e_to_p_pressure = EtoPPressure; + #endif // Compute direction bits for this block block->direction_bits = 0; diff --git a/Marlin/planner.h b/Marlin/planner.h index 4af72a475e..703646eb13 100644 --- a/Marlin/planner.h +++ b/Marlin/planner.h @@ -60,8 +60,10 @@ typedef struct { unsigned long final_rate; // The minimal rate at exit unsigned long acceleration_st; // acceleration steps/sec^2 unsigned long fan_speed; + #ifdef BARICUDA unsigned long valve_pressure; unsigned long e_to_p_pressure; + #endif volatile char busy; } block_t;