#define Y_MAX_LENGTH 185
#define Z_MAX_LENGTH 90
+// The position of the homing switches. Use MAX_LENGTH * -0.5 if the center should be 0, 0, 0
+#define X_HOME_POS 0
+#define Y_HOME_POS 0
+#define Z_HOME_POS 0
+
//// MOVEMENT SETTINGS
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
#define HOMING_FEEDRATE {1500, 1500, 80, 0} // {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min)
//#define ULTRA_LCD //general lcd support, also 16x2
#define SDSUPPORT // Enable SD Card Support in Hardware Console
-//#define ULTIPANEL
+#define ULTIPANEL
#ifdef ULTIPANEL
#define NEWPANEL //enable this if you have a click-encoder panel
#define SDSUPPORT
feedrate = homing_feedrate[LETTER##_AXIS]/2 ; \
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); \
\
- current_position[LETTER##_AXIS] = (LETTER##_HOME_DIR == -1) ? 0 : LETTER##_MAX_LENGTH;\
+ current_position[LETTER##_AXIS] = (LETTER##_HOME_DIR == -1) ? LETTER##_HOME_POS : LETTER##_MAX_LENGTH;\
destination[LETTER##_AXIS] = current_position[LETTER##_AXIS];\
feedrate = 0.0;\
st_synchronize();\
feedrate =homing_feedrate[Y_AXIS];
prepare_move();
- current_position[X_AXIS] = (X_HOME_DIR == -1) ? 0 : X_MAX_LENGTH;
- current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? 0 : Y_MAX_LENGTH;
+ current_position[X_AXIS] = (X_HOME_DIR == -1) ? X_HOME_POS : X_MAX_LENGTH;
+ current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? Y_HOME_POS : Y_MAX_LENGTH;
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
destination[X_AXIS] = current_position[X_AXIS];
destination[Y_AXIS] = current_position[Y_AXIS];
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
+ #define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
+ #define MSG_XSTEPS " Xsteps/mm:"
+ #define MSG_YSTEPS " Ysteps/mm:"
+ #define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
+ #define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
+ #define MSG_XSTEPS " Xsteps/mm:"
+ #define MSG_YSTEPS " Ysteps/mm:"
+ #define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
+ #define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
+ #define MSG_XSTEPS " Xsteps/mm:"
+ #define MSG_YSTEPS " Ysteps/mm:"
+ #define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
+ #define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
+ #define MSG_XSTEPS " Xsteps/mm:"
+ #define MSG_YSTEPS " Ysteps/mm:"
+ #define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
+ #define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
+ #define MSG_XSTEPS " Xsteps/mm:"
+ #define MSG_YSTEPS " Ysteps/mm:"
+ #define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
#endif
-#endif // ifndef LANGUAGE_H
\ No newline at end of file
+#endif // ifndef LANGUAGE_H
if (min_software_endstops) {
- if (x < 0) x = 0;
- if (y < 0) y = 0;
- if (z < 0) z = 0;
+ if (x < X_HOME_POS) x = X_HOME_POS;
+ if (y < Y_HOME_POS) y = Y_HOME_POS;
+ if (z < Z_HOME_POS) z = Z_HOME_POS;
}
if (max_software_endstops) {
if((currentz!=oldzpos)||force_lcd_update)
{
lcd.setCursor(10,1);
- lcdprintPGM("Z:");lcd.print(ftostr32(current_position[2]));
+ lcdprintPGM("Z:");lcd.print(ftostr52(current_position[2]));
oldzpos=currentz;
}
static int oldfeedmultiply=0;
lcd.setCursor(7,2);
lcd.print(itostr3((int)percent));
lcdprintPGM("%SD");
-
}
#else //smaller LCDS----------------------------------
MENUITEM( lcdprintPGM(MSG_DISABLE_STEPPERS) , BLOCK;enquecommand("M84");beepshort(); ) ;
break;
case ItemP_home:
- MENUITEM( lcdprintPGM(MSG_AUTO_HOME) , BLOCK;enquecommand("G28 X0 Y0 Z0");beepshort(); ) ;
+ MENUITEM( lcdprintPGM(MSG_AUTO_HOME) , BLOCK;enquecommand("G28");beepshort(); ) ;
break;
case ItemP_origin:
MENUITEM( lcdprintPGM(MSG_SET_ORIGIN) , BLOCK;enquecommand("G92 X0 Y0 Z0");beepshort(); ) ;
// MENUITEM( lcdprintPGM(" Extrude") , BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E50");beepshort(); ) ;
// break;
case ItemP_move:
- MENUITEM( lcdprintPGM(" Move Axis \x7E") , BLOCK;status=Sub_PrepareMove;beepshort(); );
+ MENUITEM( lcdprintPGM(MSG_MOVE_AXIS) , BLOCK;status=Sub_PrepareMove;beepshort(); );
break;
default:
break;
}
break;
case ItemAM_E:
- MENUITEM( lcdprintPGM(" Extrude") , BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E5");beepshort(); ) ;
+ MENUITEM( lcdprintPGM(MSG_EXTRUDE) , BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E5");beepshort(); ) ;
break;
default:
break;
if((activeline!=line) )
break;
- if(CLICKED) //nalogWrite(FAN_PIN, fanpwm);
+ if(CLICKED) //AnalogWrite(FAN_PIN, fanpwm);
{
linechanging=!linechanging;
if(linechanging)
{
if(force_lcd_update)
{
- lcd.setCursor(0,line);lcdprintPGM(" X steps/mm:");
+ lcd.setCursor(0,line);lcdprintPGM(MSG_XSTEPS);
lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[0]));
}
linechanging=!linechanging;
if(linechanging)
{
- encoderpos=(int)axis_steps_per_unit[0];
+ encoderpos=(int)(axis_steps_per_unit[0]*100.0);
}
else
{
- float factor=float(encoderpos)/100/float(axis_steps_per_unit[0]);
+ float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[0]);
position[X_AXIS]=lround(position[X_AXIS]*factor);
//current_position[3]*=factor;
axis_steps_per_unit[X_AXIS]= encoderpos/100.0;
{
if(force_lcd_update)
{
- lcd.setCursor(0,line);lcdprintPGM(" Y steps/mm:");
- lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[1]));
+ lcd.setCursor(0,line);lcdprintPGM(MSG_YSTEPS);
+ lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[1]));
}
if((activeline!=line) )
linechanging=!linechanging;
if(linechanging)
{
- encoderpos=(int)axis_steps_per_unit[1];
+ encoderpos=(int)(axis_steps_per_unit[1]*100.0);
}
else
{
- float factor=float(encoderpos)/float(axis_steps_per_unit[1]);
+ float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[1]);
position[Y_AXIS]=lround(position[Y_AXIS]*factor);
//current_position[3]*=factor;
- axis_steps_per_unit[Y_AXIS]= encoderpos;
+ axis_steps_per_unit[Y_AXIS]= encoderpos/100.0;
encoderpos=activeline*lcdslow;
}
{
if(encoderpos<5) encoderpos=5;
if(encoderpos>9999) encoderpos=9999;
- lcd.setCursor(13,line);lcd.print(itostr4(encoderpos));
+ lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0));
}
}break;
{
if(force_lcd_update)
{
- lcd.setCursor(0,line);lcdprintPGM(" Z steps/mm:");
- lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[2]));
+ lcd.setCursor(0,line);lcdprintPGM(MSG_ZSTEPS);
+ lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[2]));
}
if((activeline!=line) )
linechanging=!linechanging;
if(linechanging)
{
- encoderpos=(int)axis_steps_per_unit[2];
+ encoderpos=(int)(axis_steps_per_unit[2]*100.0);
}
else
{
- float factor=float(encoderpos)/float(axis_steps_per_unit[2]);
+ float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[2]);
position[Z_AXIS]=lround(position[Z_AXIS]*factor);
//current_position[3]*=factor;
- axis_steps_per_unit[Z_AXIS]= encoderpos;
+ axis_steps_per_unit[Z_AXIS]= encoderpos/100.0;
encoderpos=activeline*lcdslow;
}
{
if(encoderpos<5) encoderpos=5;
if(encoderpos>9999) encoderpos=9999;
- lcd.setCursor(13,line);lcd.print(itostr4(encoderpos));
+ lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0));
}
}break;
if(force_lcd_update)
{
lcd.setCursor(0,line);lcdprintPGM(MSG_ESTEPS);
- lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[3]));
+ lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[3]));
}
if((activeline!=line) )
linechanging=!linechanging;
if(linechanging)
{
- encoderpos=(int)axis_steps_per_unit[3];
+ encoderpos=(int)(axis_steps_per_unit[3]*100.0);
}
else
{
- float factor=float(encoderpos)/float(axis_steps_per_unit[3]);
+ float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[3]);
position[E_AXIS]=lround(position[E_AXIS]*factor);
//current_position[3]*=factor;
- axis_steps_per_unit[E_AXIS]= encoderpos;
+ axis_steps_per_unit[E_AXIS]= encoderpos/100.0;
encoderpos=activeline*lcdslow;
}
{
if(encoderpos<5) encoderpos=5;
if(encoderpos>9999) encoderpos=9999;
- lcd.setCursor(13,line);lcd.print(itostr4(encoderpos));
+ lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0));
}
}break;