Merge github.com:ErikZalm/Marlin into Marlin_v1
Conflicts: Marlin/language.h
This commit is contained in:
commit
34da3a0a3f
@ -37,6 +37,7 @@
|
||||
// 63 = Melzi
|
||||
// 64 = STB V1.1
|
||||
// 65 = Azteeg X1
|
||||
// 66 = Melzi with ATmega1284 (MaKr3d version)
|
||||
// 7 = Ultimaker
|
||||
// 71 = Ultimaker (Older electronics. Pre 1.5.4. This is rare)
|
||||
// 77 = 3Drag Controller
|
||||
@ -126,6 +127,7 @@
|
||||
// 8 is 100k 0603 SMD Vishay NTCS0603E3104FXT (4.7k pullup)
|
||||
// 9 is 100k GE Sensing AL03006-58.2K-97-G1 (4.7k pullup)
|
||||
// 10 is 100k RS thermistor 198-961 (4.7k pullup)
|
||||
// 60 is 100k Maker's Tool Works Kapton Bed Thermister
|
||||
//
|
||||
// 1k ohm pullup tables - This is not normal, you would have to have changed out your 4.7k for 1k
|
||||
// (but gives greater accuracy and more stable PID)
|
||||
@ -258,12 +260,12 @@
|
||||
|
||||
#ifndef ENDSTOPPULLUPS
|
||||
// fine Enstop settings: Individual Pullups. will be ignored if ENDSTOPPULLUPS is defined
|
||||
#define ENDSTOPPULLUP_XMAX
|
||||
#define ENDSTOPPULLUP_YMAX
|
||||
#define ENDSTOPPULLUP_ZMAX
|
||||
#define ENDSTOPPULLUP_XMIN
|
||||
#define ENDSTOPPULLUP_YMIN
|
||||
//#define ENDSTOPPULLUP_ZMIN
|
||||
// #define ENDSTOPPULLUP_XMAX
|
||||
// #define ENDSTOPPULLUP_YMAX
|
||||
// #define ENDSTOPPULLUP_ZMAX
|
||||
// #define ENDSTOPPULLUP_XMIN
|
||||
// #define ENDSTOPPULLUP_YMIN
|
||||
// #define ENDSTOPPULLUP_ZMIN
|
||||
#endif
|
||||
|
||||
#ifdef ENDSTOPPULLUPS
|
||||
@ -394,6 +396,10 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
|
||||
//#define ULTIMAKERCONTROLLER //as available from the ultimaker online store.
|
||||
//#define ULTIPANEL //the ultipanel as on thingiverse
|
||||
|
||||
// The MaKr3d Makr-Panel with graphic controller and SD support
|
||||
// http://reprap.org/wiki/MaKr3d_MaKrPanel
|
||||
//#define MAKRPANEL
|
||||
|
||||
// The RepRapDiscount Smart Controller (white PCB)
|
||||
// http://reprap.org/wiki/RepRapDiscount_Smart_Controller
|
||||
//#define REPRAP_DISCOUNT_SMART_CONTROLLER
|
||||
@ -419,6 +425,14 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
|
||||
//#define RA_CONTROL_PANEL
|
||||
|
||||
//automatic expansion
|
||||
#if defined (MAKRPANEL)
|
||||
#define DOGLCD
|
||||
#define SDSUPPORT
|
||||
#define ULTIPANEL
|
||||
#define NEWPANEL
|
||||
#define DEFAULT_LCD_CONTRAST 17
|
||||
#endif
|
||||
|
||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||
#define DOGLCD
|
||||
#define U8GLIB_ST7920
|
||||
@ -505,6 +519,13 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// default LCD contrast for dogm-like LCD displays
|
||||
#ifdef DOGLCD
|
||||
# ifndef DEFAULT_LCD_CONTRAST
|
||||
# define DEFAULT_LCD_CONTRAST 32
|
||||
# endif
|
||||
#endif
|
||||
|
||||
// Increase the FAN pwm frequency. Removes the PWM noise but increases heating in the FET/Arduino
|
||||
//#define FAST_PWM_FAN
|
||||
|
||||
|
@ -37,7 +37,7 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
|
||||
// the default values are used whenever there is a change to the data, to prevent
|
||||
// wrong data being written to the variables.
|
||||
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
|
||||
#define EEPROM_VERSION "V07"
|
||||
#define EEPROM_VERSION "V08"
|
||||
|
||||
#ifdef EEPROM_SETTINGS
|
||||
void Config_StoreSettings()
|
||||
@ -78,6 +78,10 @@ void Config_StoreSettings()
|
||||
EEPROM_WRITE_VAR(i,dummy);
|
||||
EEPROM_WRITE_VAR(i,dummy);
|
||||
#endif
|
||||
#ifndef DOGLCD
|
||||
int lcd_contrast = 32;
|
||||
#endif
|
||||
EEPROM_WRITE_VAR(i,lcd_contrast);
|
||||
char ver2[4]=EEPROM_VERSION;
|
||||
i=EEPROM_OFFSET;
|
||||
EEPROM_WRITE_VAR(i,ver2); // validate data
|
||||
@ -198,6 +202,10 @@ void Config_RetrieveSettings()
|
||||
EEPROM_READ_VAR(i,Kp);
|
||||
EEPROM_READ_VAR(i,Ki);
|
||||
EEPROM_READ_VAR(i,Kd);
|
||||
#ifndef DOGLCD
|
||||
int lcd_contrast;
|
||||
#endif
|
||||
EEPROM_READ_VAR(i,lcd_contrast);
|
||||
|
||||
// Call updatePID (similar to when we have processed M301)
|
||||
updatePID();
|
||||
@ -244,6 +252,9 @@ void Config_ResetDefault()
|
||||
absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP;
|
||||
absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
||||
#endif
|
||||
#ifdef DOGLCD
|
||||
lcd_contrast = DEFAULT_LCD_CONTRAST;
|
||||
#endif
|
||||
#ifdef PIDTEMP
|
||||
Kp = DEFAULT_Kp;
|
||||
Ki = scalePID_i(DEFAULT_Ki);
|
||||
|
@ -18,12 +18,6 @@
|
||||
//#define WATCH_TEMP_PERIOD 40000 //40 seconds
|
||||
//#define WATCH_TEMP_INCREASE 10 //Heat up at least 10 degree in 20 seconds
|
||||
|
||||
// Wait for Cooldown
|
||||
// This defines if the M109 call should not block if it is cooling down.
|
||||
// example: From a current temp of 220, you set M109 S200.
|
||||
// if CooldownNoWait is defined M109 will not wait for the cooldown to finish
|
||||
#define CooldownNoWait true
|
||||
|
||||
#ifdef PIDTEMP
|
||||
// this adds an experimental additional term to the heatingpower, proportional to the extrusion speed.
|
||||
// if Kc is choosen well, the additional required power due to increased melting should be compensated.
|
||||
@ -152,6 +146,31 @@
|
||||
#define EXTRUDERS 1
|
||||
#endif
|
||||
|
||||
// Enable this for dual x-carriage printers.
|
||||
// A dual x-carriage design has the advantage that the inactive extruder can be parked which
|
||||
// prevents hot-end ooze contaminating the print. It also reduces the weight of each x-carriage
|
||||
// allowing faster printing speeds.
|
||||
//#define DUAL_X_CARRIAGE
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// Configuration for second X-carriage
|
||||
// Note: the first x-carriage is defined as the x-carriage which homes to the minimum endstop;
|
||||
// the second x-carriage always homes to the maximum endstop.
|
||||
#define X2_MIN_POS 88 // set minimum to ensure second x-carriage doesn't hit the parked first X-carriage
|
||||
#define X2_MAX_POS 350.45 // set maximum to the distance between toolheads when both heads are homed
|
||||
#define X2_HOME_DIR 1 // the second X-carriage always homes to the maximum endstop position
|
||||
#define X2_HOME_POS X2_MAX_POS // default home position is the maximum carriage position
|
||||
// However: In this mode the EXTRUDER_OFFSET_X value for the second extruder provides a software
|
||||
// override for X2_HOME_POS. This also allow recalibration of the distance between the two endstops
|
||||
// without modifying the firmware (through the "M218 T1 X???" command).
|
||||
// Remember: you should set the second extruder x-offset to 0 in your slicer.
|
||||
|
||||
// Pins for second x-carriage stepper driver (defined here to avoid further complicating pins.h)
|
||||
#define X2_ENABLE_PIN 29
|
||||
#define X2_STEP_PIN 25
|
||||
#define X2_DIR_PIN 23
|
||||
|
||||
#endif // DUAL_X_CARRIAGE
|
||||
|
||||
//homing hits the endstop, then retracts by this distance, before it tries to slowly bump again:
|
||||
#define X_HOME_RETRACT_MM 5
|
||||
#define Y_HOME_RETRACT_MM 5
|
||||
|
@ -114,6 +114,12 @@ MCU ?= atmega644p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),63)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega644p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),65)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),66)
|
||||
HARDWARE_VARIANT ?= Sanguino
|
||||
MCU ?= atmega1284p
|
||||
|
||||
#Ultimaker
|
||||
else ifeq ($(HARDWARE_MOTHERBOARD),7)
|
||||
|
@ -96,7 +96,11 @@ void process_commands();
|
||||
|
||||
void manage_inactivity();
|
||||
|
||||
#if defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1
|
||||
#if defined(DUAL_X_CARRIAGE) && defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1 \
|
||||
&& defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1
|
||||
#define enable_x() do { WRITE(X_ENABLE_PIN, X_ENABLE_ON); WRITE(X2_ENABLE_PIN, X_ENABLE_ON); } while (0)
|
||||
#define disable_x() do { WRITE(X_ENABLE_PIN,!X_ENABLE_ON); WRITE(X2_ENABLE_PIN,!X_ENABLE_ON); } while (0)
|
||||
#elif defined(X_ENABLE_PIN) && X_ENABLE_PIN > -1
|
||||
#define enable_x() WRITE(X_ENABLE_PIN, X_ENABLE_ON)
|
||||
#define disable_x() WRITE(X_ENABLE_PIN,!X_ENABLE_ON)
|
||||
#else
|
||||
|
@ -67,17 +67,9 @@
|
||||
// G91 - Use Relative Coordinates
|
||||
// G92 - Set current position to cordinates given
|
||||
|
||||
//RepRap M Codes
|
||||
// M Codes
|
||||
// M0 - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled)
|
||||
// M1 - Same as M0
|
||||
// M104 - Set extruder target temp
|
||||
// M105 - Read current temp
|
||||
// M106 - Fan on
|
||||
// M107 - Fan off
|
||||
// M109 - Wait for extruder current temp to reach target temp.
|
||||
// M114 - Display current position
|
||||
|
||||
//Custom M Codes
|
||||
// M17 - Enable/Power all stepper motors
|
||||
// M18 - Disable all stepper motors; same as M84
|
||||
// M20 - List SD card
|
||||
@ -92,6 +84,7 @@
|
||||
// M29 - Stop SD write
|
||||
// M30 - Delete file from SD (M30 filename.g)
|
||||
// M31 - Output time since last M109 or SD card start to serial
|
||||
// M32 - Select file and start SD print (Can be used when printing from SD card)
|
||||
// M42 - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used.
|
||||
// M80 - Turn on Power Supply
|
||||
// M81 - Turn off Power Supply
|
||||
@ -101,6 +94,12 @@
|
||||
// or use S<seconds> to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout.
|
||||
// M85 - Set inactivity shutdown timer with parameter S<seconds>. To disable set zero (default)
|
||||
// M92 - Set axis_steps_per_unit - same syntax as G92
|
||||
// M104 - Set extruder target temp
|
||||
// M105 - Read current temp
|
||||
// M106 - Fan on
|
||||
// M107 - Fan off
|
||||
// M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating
|
||||
// Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling
|
||||
// M114 - Output current position to serial port
|
||||
// M115 - Capabilities string
|
||||
// M117 - display message
|
||||
@ -110,7 +109,8 @@
|
||||
// M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
// M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
// M140 - Set bed target temp
|
||||
// M190 - Wait for bed current temp to reach target temp.
|
||||
// M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
|
||||
// Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
|
||||
// M200 - Set filament diameter
|
||||
// M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
|
||||
// M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
|
||||
@ -125,6 +125,7 @@
|
||||
// M220 S<factor in percent>- set speed factor override percentage
|
||||
// M221 S<factor in percent>- set extrude factor override percentage
|
||||
// M240 - Trigger a camera to take a photograph
|
||||
// M250 - Set LCD contrast C<contrast value> (value 0..63)
|
||||
// M280 - set servo position absolute. P: servo index, S: angle or microseconds
|
||||
// M300 - Play beepsound S<frequency Hz> P<duration ms>
|
||||
// M301 - Set PID parameters P I and D
|
||||
@ -245,6 +246,9 @@ bool Stopped=false;
|
||||
Servo servos[NUM_SERVOS];
|
||||
#endif
|
||||
|
||||
bool CooldownNoWait = true;
|
||||
bool target_direction;
|
||||
|
||||
//===========================================================================
|
||||
//=============================ROUTINES=============================
|
||||
//===========================================================================
|
||||
@ -425,6 +429,7 @@ void setup()
|
||||
servo_init();
|
||||
|
||||
lcd_init();
|
||||
_delay_ms(1000); // wait 1sec to display the splash screen
|
||||
|
||||
#if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1
|
||||
SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan
|
||||
@ -676,7 +681,44 @@ XYZ_CONSTS_FROM_CONFIG(float, max_length, MAX_LENGTH);
|
||||
XYZ_CONSTS_FROM_CONFIG(float, home_retract_mm, HOME_RETRACT_MM);
|
||||
XYZ_CONSTS_FROM_CONFIG(signed char, home_dir, HOME_DIR);
|
||||
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
#if EXTRUDERS == 1 || defined(COREXY) \
|
||||
|| !defined(X2_ENABLE_PIN) || !defined(X2_STEP_PIN) || !defined(X2_DIR_PIN) \
|
||||
|| !defined(X2_HOME_POS) || !defined(X2_MIN_POS) || !defined(X2_MAX_POS) \
|
||||
|| !defined(X_MAX_PIN) || X_MAX_PIN < 0
|
||||
#error "Missing or invalid definitions for DUAL_X_CARRIAGE mode."
|
||||
#endif
|
||||
#if X_HOME_DIR != -1 || X2_HOME_DIR != 1
|
||||
#error "Please use canonical x-carriage assignment" // the x-carriages are defined by their homing directions
|
||||
#endif
|
||||
|
||||
static float x_home_pos(int extruder) {
|
||||
if (extruder == 0)
|
||||
return base_home_pos(X_AXIS) + add_homeing[X_AXIS];
|
||||
else
|
||||
// In dual carriage mode the extruder offset provides an override of the
|
||||
// second X-carriage offset when homed - otherwise X2_HOME_POS is used.
|
||||
// This allow soft recalibration of the second extruder offset position without firmware reflash
|
||||
// (through the M218 command).
|
||||
return (extruder_offset[X_AXIS][1] > 0) ? extruder_offset[X_AXIS][1] : X2_HOME_POS;
|
||||
}
|
||||
|
||||
static int x_home_dir(int extruder) {
|
||||
return (extruder == 0) ? X_HOME_DIR : X2_HOME_DIR;
|
||||
}
|
||||
|
||||
static float inactive_x_carriage_pos = X2_MAX_POS;
|
||||
#endif
|
||||
|
||||
static void axis_is_at_home(int axis) {
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
if (axis == X_AXIS && active_extruder != 0) {
|
||||
current_position[X_AXIS] = x_home_pos(active_extruder);
|
||||
min_pos[X_AXIS] = X2_MIN_POS;
|
||||
max_pos[X_AXIS] = max(extruder_offset[X_AXIS][1], X2_MAX_POS);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
current_position[axis] = base_home_pos(axis) + add_homeing[axis];
|
||||
min_pos[axis] = base_min_pos(axis) + add_homeing[axis];
|
||||
max_pos[axis] = base_max_pos(axis) + add_homeing[axis];
|
||||
@ -685,30 +727,38 @@ static void axis_is_at_home(int axis) {
|
||||
static void homeaxis(int axis) {
|
||||
#define HOMEAXIS_DO(LETTER) \
|
||||
((LETTER##_MIN_PIN > -1 && LETTER##_HOME_DIR==-1) || (LETTER##_MAX_PIN > -1 && LETTER##_HOME_DIR==1))
|
||||
|
||||
if (axis==X_AXIS ? HOMEAXIS_DO(X) :
|
||||
axis==Y_AXIS ? HOMEAXIS_DO(Y) :
|
||||
axis==Z_AXIS ? HOMEAXIS_DO(Z) :
|
||||
0) {
|
||||
int axis_home_dir = home_dir(axis);
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
if (axis == X_AXIS)
|
||||
axis_home_dir = x_home_dir(active_extruder);
|
||||
#endif
|
||||
|
||||
// Engage Servo endstop if enabled
|
||||
#ifdef SERVO_ENDSTOPS[axis] > -1
|
||||
servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2]);
|
||||
#ifdef SERVO_ENDSTOPS
|
||||
if (SERVO_ENDSTOPS[axis] > -1) {
|
||||
servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2]);
|
||||
}
|
||||
#endif
|
||||
|
||||
current_position[axis] = 0;
|
||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||
destination[axis] = 1.5 * max_length(axis) * home_dir(axis);
|
||||
destination[axis] = 1.5 * max_length(axis) * axis_home_dir;
|
||||
feedrate = homing_feedrate[axis];
|
||||
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
current_position[axis] = 0;
|
||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||
destination[axis] = -home_retract_mm(axis) * home_dir(axis);
|
||||
destination[axis] = -home_retract_mm(axis) * axis_home_dir;
|
||||
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
||||
st_synchronize();
|
||||
|
||||
destination[axis] = 2*home_retract_mm(axis) * home_dir(axis);
|
||||
destination[axis] = 2*home_retract_mm(axis) * axis_home_dir;
|
||||
feedrate = homing_feedrate[axis]/2 ;
|
||||
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
|
||||
st_synchronize();
|
||||
@ -719,8 +769,10 @@ static void homeaxis(int axis) {
|
||||
endstops_hit_on_purpose();
|
||||
|
||||
// Retract Servo endstop if enabled
|
||||
#ifdef SERVO_ENDSTOPS[axis] > -1
|
||||
servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]);
|
||||
#ifdef SERVO_ENDSTOPS
|
||||
if (SERVO_ENDSTOPS[axis] > -1) {
|
||||
servos[servo_endstops[axis]].write(servo_endstop_angles[axis * 2 + 1]);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -846,7 +898,7 @@ void process_commands()
|
||||
|
||||
#else // NOT DELTA
|
||||
|
||||
home_all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2])));
|
||||
home_all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2])));
|
||||
|
||||
#if Z_HOME_DIR > 0 // If homing away from BED do Z first
|
||||
if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) {
|
||||
@ -859,8 +911,14 @@ void process_commands()
|
||||
{
|
||||
current_position[X_AXIS] = 0;current_position[Y_AXIS] = 0;
|
||||
|
||||
#ifndef DUAL_X_CARRIAGE
|
||||
int x_axis_home_dir = home_dir(X_AXIS);
|
||||
#else
|
||||
int x_axis_home_dir = x_home_dir(active_extruder);
|
||||
#endif
|
||||
|
||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||
destination[X_AXIS] = 1.5 * X_MAX_LENGTH * X_HOME_DIR;destination[Y_AXIS] = 1.5 * Y_MAX_LENGTH * Y_HOME_DIR;
|
||||
destination[X_AXIS] = 1.5 * max_length(X_AXIS) * x_axis_home_dir;destination[Y_AXIS] = 1.5 * max_length(Y_AXIS) * home_dir(Y_AXIS);
|
||||
feedrate = homing_feedrate[X_AXIS];
|
||||
if(homing_feedrate[Y_AXIS]<feedrate)
|
||||
feedrate =homing_feedrate[Y_AXIS];
|
||||
@ -885,6 +943,13 @@ void process_commands()
|
||||
|
||||
if((home_all_axis) || (code_seen(axis_codes[X_AXIS])))
|
||||
{
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
int tmp_extruder = active_extruder;
|
||||
active_extruder = !active_extruder;
|
||||
HOMEAXIS(X);
|
||||
inactive_x_carriage_pos = current_position[X_AXIS];
|
||||
active_extruder = tmp_extruder;
|
||||
#endif
|
||||
HOMEAXIS(X);
|
||||
}
|
||||
|
||||
@ -917,7 +982,7 @@ void process_commands()
|
||||
}
|
||||
}
|
||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||
#endif // DELTA
|
||||
#endif // else DELTA
|
||||
|
||||
#ifdef ENDSTOPS_ONLY_FOR_HOMING
|
||||
enable_endstops(false);
|
||||
@ -1057,6 +1122,19 @@ void process_commands()
|
||||
card.removeFile(strchr_pointer + 4);
|
||||
}
|
||||
break;
|
||||
case 32: //M32 - Select file and start SD print
|
||||
if(card.sdprinting) {
|
||||
st_synchronize();
|
||||
card.closefile();
|
||||
card.sdprinting = false;
|
||||
}
|
||||
starpos = (strchr(strchr_pointer + 4,'*'));
|
||||
if(starpos!=NULL)
|
||||
*(starpos-1)='\0';
|
||||
card.openFile(strchr_pointer + 4,true);
|
||||
card.startFileprint();
|
||||
starttime=millis();
|
||||
break;
|
||||
case 928: //M928 - Start SD write
|
||||
starpos = (strchr(strchr_pointer + 5,'*'));
|
||||
if(starpos != NULL){
|
||||
@ -1159,7 +1237,13 @@ void process_commands()
|
||||
#ifdef AUTOTEMP
|
||||
autotemp_enabled=false;
|
||||
#endif
|
||||
if (code_seen('S')) setTargetHotend(code_value(), tmp_extruder);
|
||||
if (code_seen('S')) {
|
||||
setTargetHotend(code_value(), tmp_extruder);
|
||||
CooldownNoWait = true;
|
||||
} else if (code_seen('R')) {
|
||||
setTargetHotend(code_value(), tmp_extruder);
|
||||
CooldownNoWait = false;
|
||||
}
|
||||
#ifdef AUTOTEMP
|
||||
if (code_seen('S')) autotemp_min=code_value();
|
||||
if (code_seen('B')) autotemp_max=code_value();
|
||||
@ -1174,7 +1258,7 @@ void process_commands()
|
||||
codenum = millis();
|
||||
|
||||
/* See if we are heating up or cooling down */
|
||||
bool target_direction = isHeatingHotend(tmp_extruder); // true if heating, false if cooling
|
||||
target_direction = isHeatingHotend(tmp_extruder); // true if heating, false if cooling
|
||||
|
||||
#ifdef TEMP_RESIDENCY_TIME
|
||||
long residencyStart;
|
||||
@ -1230,9 +1314,18 @@ void process_commands()
|
||||
case 190: // M190 - Wait for bed heater to reach target.
|
||||
#if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
|
||||
LCD_MESSAGEPGM(MSG_BED_HEATING);
|
||||
if (code_seen('S')) setTargetBed(code_value());
|
||||
if (code_seen('S')) {
|
||||
setTargetBed(code_value());
|
||||
CooldownNoWait = true;
|
||||
} else if (code_seen('R')) {
|
||||
setTargetBed(code_value());
|
||||
CooldownNoWait = false;
|
||||
}
|
||||
codenum = millis();
|
||||
while(isHeatingBed())
|
||||
|
||||
target_direction = isHeatingBed(); // true if heating, false if cooling
|
||||
|
||||
while ( target_direction ? (isHeatingBed()) : (isCoolingBed()&&(CooldownNoWait==false)) )
|
||||
{
|
||||
if(( millis() - codenum) > 1000 ) //Print Temp Reading every 1 second while heating up.
|
||||
{
|
||||
@ -1716,6 +1809,18 @@ void process_commands()
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
#ifdef DOGLCD
|
||||
case 250: // M250 Set LCD contrast value: C<value> (value 0..63)
|
||||
{
|
||||
if (code_seen('C')) {
|
||||
lcd_setcontrast( ((int)code_value())&63 );
|
||||
}
|
||||
SERIAL_PROTOCOLPGM("lcd contrast value: ");
|
||||
SERIAL_PROTOCOL(lcd_contrast);
|
||||
SERIAL_PROTOCOLLN("");
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef PREVENT_DANGEROUS_EXTRUDE
|
||||
case 302: // allow cold extrudes, or set the minimum extrude temperature
|
||||
{
|
||||
@ -1973,6 +2078,20 @@ void process_commands()
|
||||
if(tmp_extruder != active_extruder) {
|
||||
// Save current position to return to after applying extruder offset
|
||||
memcpy(destination, current_position, sizeof(destination));
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// only apply Y extruder offset in dual x carriage mode (x offset is already used in determining home pos)
|
||||
current_position[Y_AXIS] = current_position[Y_AXIS] -
|
||||
extruder_offset[Y_AXIS][active_extruder] +
|
||||
extruder_offset[Y_AXIS][tmp_extruder];
|
||||
|
||||
float tmp_x_pos = current_position[X_AXIS];
|
||||
|
||||
// Set the new active extruder and position
|
||||
active_extruder = tmp_extruder;
|
||||
axis_is_at_home(X_AXIS); //this function updates X min/max values.
|
||||
current_position[X_AXIS] = inactive_x_carriage_pos;
|
||||
inactive_x_carriage_pos = tmp_x_pos;
|
||||
#else
|
||||
// Offset extruder (only by XY)
|
||||
int i;
|
||||
for(i = 0; i < 2; i++) {
|
||||
@ -1982,6 +2101,7 @@ void process_commands()
|
||||
}
|
||||
// Set the new active extruder and position
|
||||
active_extruder = tmp_extruder;
|
||||
#endif //else DUAL_X_CARRIAGE
|
||||
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
|
||||
// Move to the old position if 'F' was in the parameters
|
||||
if(make_move && Stopped == false) {
|
||||
@ -2226,6 +2346,9 @@ void controllerFan()
|
||||
|| !READ(E2_ENABLE_PIN)
|
||||
#endif
|
||||
#if EXTRUDER > 1
|
||||
#if defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1
|
||||
|| !READ(X2_ENABLE_PIN)
|
||||
#endif
|
||||
|| !READ(E1_ENABLE_PIN)
|
||||
#endif
|
||||
|| !READ(E0_ENABLE_PIN)) //If any of the drivers are enabled...
|
||||
|
@ -206,7 +206,6 @@ void CardReader::startFileprint()
|
||||
if(cardOK)
|
||||
{
|
||||
sdprinting = true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,16 +74,28 @@
|
||||
|
||||
#define FONT_STATUSMENU u8g_font_6x9
|
||||
|
||||
int lcd_contrast;
|
||||
|
||||
// LCD selection
|
||||
#ifdef U8GLIB_ST7920
|
||||
//U8GLIB_ST7920_128X64_RRD u8g(0,0,0);
|
||||
U8GLIB_ST7920_128X64_RRD u8g(0);
|
||||
#elif defined(MAKRPANEL)
|
||||
// The MaKrPanel display, ST7565 controller as well
|
||||
U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
|
||||
#else
|
||||
// for regular DOGM128 display with HW-SPI
|
||||
U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0); // HW-SPI Com: CS, A0
|
||||
#endif
|
||||
|
||||
static void lcd_implementation_init()
|
||||
{
|
||||
#ifdef LCD_PIN_BL
|
||||
pinMode(LCD_PIN_BL, OUTPUT); // Enable LCD backlight
|
||||
digitalWrite(LCD_PIN_BL, HIGH);
|
||||
#endif
|
||||
|
||||
u8g.setContrast(lcd_contrast);
|
||||
// Uncomment this if you have the first generation (V1.10) of STBs board
|
||||
// pinMode(17, OUTPUT); // Enable LCD backlight
|
||||
// digitalWrite(17, HIGH);
|
||||
@ -117,14 +129,14 @@ static void lcd_implementation_init()
|
||||
u8g.setFont(u8g_font_6x10_marlin);
|
||||
u8g.drawStr(62,10,"MARLIN");
|
||||
u8g.setFont(u8g_font_5x8);
|
||||
u8g.drawStr(62,19,"V1.0.0 RC2");
|
||||
u8g.drawStr(62,19,"V1.0.0 RC2-mm");
|
||||
u8g.setFont(u8g_font_6x10_marlin);
|
||||
u8g.drawStr(62,28,"by ErikZalm");
|
||||
u8g.drawStr(62,41,"DOGM128 LCD");
|
||||
u8g.setFont(u8g_font_5x8);
|
||||
u8g.drawStr(62,48,"enhancements");
|
||||
u8g.setFont(u8g_font_5x8);
|
||||
u8g.drawStr(62,55,"by STB");
|
||||
u8g.drawStr(62,55,"by STB, MM");
|
||||
u8g.drawStr(62,61,"uses u");
|
||||
u8g.drawStr90(92,57,"8");
|
||||
u8g.drawStr(100,61,"glib");
|
||||
|
@ -103,6 +103,7 @@
|
||||
#define MSG_RECTRACT "Rectract"
|
||||
#define MSG_TEMPERATURE "Temperature"
|
||||
#define MSG_MOTION "Motion"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM "Store memory"
|
||||
#define MSG_LOAD_EPROM "Load memory"
|
||||
#define MSG_RESTORE_FAILSAFE "Restore Failsafe"
|
||||
@ -264,6 +265,7 @@
|
||||
#define MSG_RECTRACT "Wycofanie"
|
||||
#define MSG_TEMPERATURE "Temperatura"
|
||||
#define MSG_MOTION "Ruch"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM "Zapisz w pamieci"
|
||||
#define MSG_LOAD_EPROM "Wczytaj z pamieci"
|
||||
#define MSG_RESTORE_FAILSAFE " Ustawienia fabryczne"
|
||||
@ -429,6 +431,7 @@
|
||||
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
|
||||
#define MSG_TEMPERATURE_RTN " Temperature \003"
|
||||
#define MSG_MOTION_WIDE " Mouvement \x7E"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM " Sauvegarder memoire"
|
||||
#define MSG_LOAD_EPROM " Lire memoire"
|
||||
#define MSG_RESTORE_FAILSAFE " Restaurer memoire"
|
||||
@ -541,7 +544,7 @@
|
||||
|
||||
#define MSG_SD_INSERTED "SDKarte erkannt"
|
||||
#define MSG_SD_REMOVED "SDKarte entfernt"
|
||||
#define MSG_MAIN "Hauptmneü"
|
||||
#define MSG_MAIN "Hauptmenü"
|
||||
#define MSG_AUTOSTART "Autostart"
|
||||
#define MSG_DISABLE_STEPPERS "Stepper abschalten"
|
||||
#define MSG_AUTO_HOME "Auto Nullpunkt"
|
||||
@ -562,7 +565,7 @@
|
||||
#define MSG_NOZZLE2 "Düse3"
|
||||
#define MSG_BED "Bett"
|
||||
#define MSG_FAN_SPEED "Lüftergeschw."
|
||||
#define MSG_FLOW "Fluß"
|
||||
#define MSG_FLOW "Fluss"
|
||||
#define MSG_CONTROL "Einstellungen"
|
||||
#define MSG_MIN "\002 Min"
|
||||
#define MSG_MAX "\002 Max"
|
||||
@ -595,6 +598,7 @@
|
||||
#define MSG_WATCH "Beobachten"
|
||||
#define MSG_TEMPERATURE "Temperatur"
|
||||
#define MSG_MOTION "Bewegung"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM "EPROM speichern"
|
||||
#define MSG_LOAD_EPROM "EPROM laden"
|
||||
#define MSG_RESTORE_FAILSAFE "Standardkonfig."
|
||||
@ -700,93 +704,100 @@
|
||||
#if LANGUAGE_CHOICE == 5
|
||||
|
||||
// LCD Menu Messages
|
||||
#define WELCOME_MSG MACHINE_NAME " Lista."
|
||||
#define WELCOME_MSG MACHINE_NAME "Lista."
|
||||
#define MSG_SD_INSERTED "Tarjeta SD Colocada"
|
||||
#define MSG_SD_REMOVED "Tarjeta SD Retirada"
|
||||
#define MSG_MAIN " Menu Principal \003"
|
||||
#define MSG_MAIN "Menu Principal"
|
||||
#define MSG_AUTOSTART " Autostart"
|
||||
#define MSG_DISABLE_STEPPERS " Apagar Motores"
|
||||
#define MSG_AUTO_HOME " Llevar Ejes al Cero"
|
||||
#define MSG_SET_ORIGIN " Establecer Cero"
|
||||
#define MSG_COOLDOWN " Enfriar"
|
||||
#define MSG_DISABLE_STEPPERS "Apagar Motores"
|
||||
#define MSG_AUTO_HOME "Llevar al Origen" // "Llevar Ejes al Cero"
|
||||
#define MSG_SET_ORIGIN "Establecer Cero"
|
||||
#define MSG_PREHEAT_PLA "Precalentar PLA"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS "Ajustar temp. PLA"
|
||||
#define MSG_PREHEAT_ABS "Precalentar ABS"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS "Ajustar temp. ABS"
|
||||
#define MSG_COOLDOWN "Enfriar"
|
||||
#define MSG_SWITCH_PS_ON "Switch Power On"
|
||||
#define MSG_SWITCH_PS_OFF "Switch Power Off"
|
||||
#define MSG_EXTRUDE " Extruir"
|
||||
#define MSG_RETRACT " Retraer"
|
||||
#define MSG_PREHEAT_PLA " Precalentar PLA"
|
||||
#define MSG_PREHEAT_PLA_SETTINGS " Ajustar temp. PLA"
|
||||
#define MSG_PREHEAT_ABS " Precalentar ABS"
|
||||
#define MSG_PREHEAT_ABS_SETTINGS " Ajustar temp. ABS"
|
||||
#define MSG_MOVE_AXIS " Mover Ejes \x7E"
|
||||
#define MSG_SPEED " Velocidad:"
|
||||
#define MSG_NOZZLE " \002Fusor:"
|
||||
#define MSG_NOZZLE1 " \002Fusor2:"
|
||||
#define MSG_NOZZLE2 " \002Fusor3:"
|
||||
#define MSG_BED " \002Base:"
|
||||
#define MSG_FAN_SPEED " Ventilador:"
|
||||
#define MSG_FLOW " Flujo:"
|
||||
#define MSG_CONTROL " Control \003"
|
||||
#define MSG_MIN " \002 Min:"
|
||||
#define MSG_MAX " \002 Max:"
|
||||
#define MSG_FACTOR " \002 Fact:"
|
||||
#define MSG_AUTOTEMP " Autotemp:"
|
||||
#define MSG_ON "On "
|
||||
#define MSG_EXTRUDE "Extruir"
|
||||
#define MSG_RETRACT "Retraer"
|
||||
#define MSG_MOVE_AXIS "Mover Ejes"
|
||||
#define MSG_SPEED "Velocidad"
|
||||
#define MSG_NOZZLE "Nozzle"
|
||||
#define MSG_NOZZLE1 "Nozzle2"
|
||||
#define MSG_NOZZLE2 "Nozzle3"
|
||||
#define MSG_BED "Base"
|
||||
#define MSG_FAN_SPEED "Ventilador"
|
||||
#define MSG_FLOW "Flujo"
|
||||
#define MSG_CONTROL "Control"
|
||||
#define MSG_MIN "\002 Min"
|
||||
#define MSG_MAX "\002 Max"
|
||||
#define MSG_FACTOR "\002 Fact"
|
||||
#define MSG_AUTOTEMP "Autotemp"
|
||||
#define MSG_ON "On"
|
||||
#define MSG_OFF "Off"
|
||||
#define MSG_PID_P " PID-P: "
|
||||
#define MSG_PID_I " PID-I: "
|
||||
#define MSG_PID_D " PID-D: "
|
||||
#define MSG_PID_C " PID-C: "
|
||||
#define MSG_ACC " Acc:"
|
||||
#define MSG_VXY_JERK " Vxy-agit: "
|
||||
#define MSG_VZ_JERK "Vz-agit"
|
||||
#define MSG_VE_JERK "Ve-agit"
|
||||
#define MSG_VMAX " Vmax "
|
||||
#define MSG_X "x:"
|
||||
#define MSG_Y "y:"
|
||||
#define MSG_Z "z:"
|
||||
#define MSG_E "e:"
|
||||
#define MSG_VMIN " Vmin:"
|
||||
#define MSG_VTRAV_MIN " VTrav min:"
|
||||
#define MSG_AMAX " Amax "
|
||||
#define MSG_A_RETRACT " A-retrac.:"
|
||||
#define MSG_XSTEPS " Xpasos/mm:"
|
||||
#define MSG_YSTEPS " Ypasos/mm:"
|
||||
#define MSG_ZSTEPS " Zpasos/mm:"
|
||||
#define MSG_ESTEPS " Epasos/mm:"
|
||||
#define MSG_MAIN_WIDE " Menu Principal \003"
|
||||
#define MSG_RECTRACT_WIDE " Retraer \x7E"
|
||||
#define MSG_TEMPERATURE_WIDE " Temperatura \x7E"
|
||||
#define MSG_TEMPERATURE_RTN " Temperatura \003"
|
||||
#define MSG_MOTION_WIDE " Movimiento \x7E"
|
||||
#define MSG_STORE_EPROM " Guardar Memoria"
|
||||
#define MSG_LOAD_EPROM " Cargar Memoria"
|
||||
#define MSG_RESTORE_FAILSAFE " Rest. de emergencia"
|
||||
#define MSG_REFRESH "\004Volver a cargar"
|
||||
#define MSG_WATCH " Monitorizar \003"
|
||||
#define MSG_PREPARE " Preparar \x7E"
|
||||
#define MSG_PREPARE_ALT " Preparar \003"
|
||||
#define MSG_CONTROL_ARROW " Control \x7E"
|
||||
#define MSG_RETRACT_ARROW " Retraer \x7E"
|
||||
#define MSG_TUNE " Ajustar \x7E"
|
||||
#define MSG_PAUSE_PRINT " Pausar Impresion \x7E"
|
||||
#define MSG_RESUME_PRINT " Reanudar Impresion \x7E"
|
||||
#define MSG_STOP_PRINT " Detener Impresion \x7E"
|
||||
#define MSG_CARD_MENU " Menu de SD \x7E"
|
||||
#define MSG_NO_CARD " No hay Tarjeta SD"
|
||||
#define MSG_PID_P "PID-P"
|
||||
#define MSG_PID_I "PID-I"
|
||||
#define MSG_PID_D "PID-D"
|
||||
#define MSG_PID_C "PID-C"
|
||||
#define MSG_ACC "Acel"
|
||||
#define MSG_VXY_JERK "Vxy-jerk"
|
||||
#define MSG_VZ_JERK "Vz-jerk"
|
||||
#define MSG_VE_JERK "Ve-jerk"
|
||||
#define MSG_VMAX "Vmax"
|
||||
#define MSG_X "x"
|
||||
#define MSG_Y "y"
|
||||
#define MSG_Z "z"
|
||||
#define MSG_E "e"
|
||||
#define MSG_VMIN "Vmin"
|
||||
#define MSG_VTRAV_MIN "VTrav min"
|
||||
#define MSG_AMAX "Amax"
|
||||
#define MSG_A_RETRACT "A-retrac."
|
||||
#define MSG_XSTEPS "X pasos/mm"
|
||||
#define MSG_YSTEPS "Y pasos/mm"
|
||||
#define MSG_ZSTEPS "Z pasos/mm"
|
||||
#define MSG_ESTEPS "E pasos/mm"
|
||||
#define MSG_RECTRACT "Retraer"
|
||||
#define MSG_TEMPERATURE "Temperatura"
|
||||
#define MSG_MOTION "Movimiento"
|
||||
#define MSG_STORE_EPROM "Guardar Memoria"
|
||||
#define MSG_LOAD_EPROM "Cargar Memoria"
|
||||
#define MSG_RESTORE_FAILSAFE "Rest. de emergencia"
|
||||
#define MSG_REFRESH "Volver a cargar"
|
||||
#define MSG_WATCH "Monitorizar"
|
||||
#define MSG_PREPARE "Preparar"
|
||||
#define MSG_TUNE "Ajustar"
|
||||
#define MSG_PAUSE_PRINT "Pausar Impresion"
|
||||
#define MSG_RESUME_PRINT "Reanudar Impresion"
|
||||
#define MSG_STOP_PRINT "Detener Impresion"
|
||||
#define MSG_CARD_MENU "Menu de SD"
|
||||
#define MSG_NO_CARD "No hay Tarjeta SD"
|
||||
#define MSG_DWELL "Reposo..."
|
||||
#define MSG_USERWAIT "Esperando Ordenes..."
|
||||
#define MSG_RESUMING "Resumiendo Impresion"
|
||||
#define MSG_NO_MOVE "Sin movimiento"
|
||||
#define MSG_PART_RELEASE "Desacople Parcial"
|
||||
#define MSG_KILLED "PARADA DE EMERGENCIA. "
|
||||
#define MSG_STOPPED "PARADA. "
|
||||
#define MSG_STEPPER_RELEASED "Desacoplada."
|
||||
#define MSG_CONTROL_RETRACT " Retraer mm:"
|
||||
#define MSG_CONTROL_RETRACTF " Retraer F:"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT " Levantar mm:"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER " DesRet +mm:"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF " DesRet F:"
|
||||
#define MSG_AUTORETRACT " AutoRetr.:"
|
||||
#define MSG_STOPPED "PARADA."
|
||||
#define MSG_CONTROL_RETRACT "Retraer mm"
|
||||
#define MSG_CONTROL_RETRACTF "Retraer F"
|
||||
#define MSG_CONTROL_RETRACT_ZLIFT "Levantar mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVER "DesRet +mm"
|
||||
#define MSG_CONTROL_RETRACT_RECOVERF "DesRet F"
|
||||
#define MSG_AUTORETRACT "AutoRetr."
|
||||
#define MSG_FILAMENTCHANGE "Change filament"
|
||||
#define MSG_INIT_SDCARD "Iniciando. Tarjeta-SD"
|
||||
#define MSG_CNG_SDCARD "Cambiar Tarjeta-SD"
|
||||
#define MSG_RECTRACT_WIDE "Retraer"
|
||||
#define MSG_TEMPERATURE_WIDE "Temperatura"
|
||||
#define MSG_TEMPERATURE_RTN "Temperatura"
|
||||
#define MSG_MAIN_WIDE "Menu Principal"
|
||||
#define MSG_MOTION_WIDE "Movimiento"
|
||||
#define MSG_PREPARE_ALT "Preparar"
|
||||
#define MSG_CONTROL_ARROW "Control"
|
||||
#define MSG_RETRACT_ARROW "Retraer"
|
||||
#define MSG_PART_RELEASE "Desacople Parcial"
|
||||
#define MSG_STEPPER_RELEASED "Desacoplada."
|
||||
|
||||
// Serial Console Messages
|
||||
|
||||
#define MSG_Enqueing "En cola \""
|
||||
@ -831,11 +842,11 @@
|
||||
#define MSG_Y_MIN "y_min: "
|
||||
#define MSG_Y_MAX "y_max: "
|
||||
#define MSG_Z_MIN "z_min: "
|
||||
#define MSG_Z_MAX "z_max: "
|
||||
#define MSG_M119_REPORT "Comprobando fines de carrera."
|
||||
#define MSG_ENDSTOP_HIT "PULSADO"
|
||||
#define MSG_ENDSTOP_OPEN "abierto"
|
||||
#define MSG_HOTEND_OFFSET "Despl. Hotend:"
|
||||
|
||||
#define MSG_HOTEND_OFFSET "Hotend offsets:"
|
||||
#define MSG_SD_CANT_OPEN_SUBDIR "No se pudo abrir la subcarpeta."
|
||||
#define MSG_SD_INIT_FAIL "Fallo al iniciar la SD"
|
||||
#define MSG_SD_VOL_INIT_FAIL "Fallo al montar el volumen"
|
||||
@ -918,6 +929,7 @@
|
||||
#define MSG_RECTRACT " Откат подачи \x7E"
|
||||
#define MSG_TEMPERATURE " Температура \x7E"
|
||||
#define MSG_MOTION " Скорости \x7E"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM " Сохранить настройки"
|
||||
#define MSG_LOAD_EPROM " Загрузить настройки"
|
||||
#define MSG_RESTORE_FAILSAFE " Сброс настроек "
|
||||
@ -1075,6 +1087,7 @@
|
||||
#define MSG_RECTRACT "Ritrai"
|
||||
#define MSG_TEMPERATURE "Temperatura"
|
||||
#define MSG_MOTION "Movimento"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM "Salva in EEPROM"
|
||||
#define MSG_LOAD_EPROM "Carica da EEPROM"
|
||||
#define MSG_RESTORE_FAILSAFE "Impostaz. default"
|
||||
@ -1409,6 +1422,7 @@
|
||||
#define MSG_RECTRACT "Veda takaisin"
|
||||
#define MSG_TEMPERATURE "Lampotila"
|
||||
#define MSG_MOTION "Liike"
|
||||
#define MSG_CONTRAST "LCD contrast"
|
||||
#define MSG_STORE_EPROM "Tallenna muistiin"
|
||||
#define MSG_LOAD_EPROM "Lataa muistista"
|
||||
#define MSG_RESTORE_FAILSAFE "Palauta oletus"
|
||||
|
@ -856,13 +856,13 @@
|
||||
#if MOTHERBOARD == 64
|
||||
#define STB
|
||||
#endif
|
||||
#if MOTHERBOARD == 63
|
||||
#if MOTHERBOARD == 63 || MOTHERBOARD == 66
|
||||
#define MELZI
|
||||
#endif
|
||||
#if MOTHERBOARD == 65
|
||||
#define AZTEEG_X1
|
||||
#endif
|
||||
#if MOTHERBOARD == 62 || MOTHERBOARD == 63 || MOTHERBOARD == 64 || MOTHERBOARD == 65
|
||||
#if MOTHERBOARD == 62 || MOTHERBOARD == 63 || MOTHERBOARD == 64 || MOTHERBOARD == 65 || MOTHERBOARD == 66
|
||||
#undef MOTHERBOARD
|
||||
#define MOTHERBOARD 6
|
||||
#define SANGUINOLOLU_V_1_2
|
||||
@ -904,6 +904,8 @@
|
||||
|
||||
#ifdef STB
|
||||
#define FAN_PIN 4
|
||||
// Uncomment this if you have the first generation (V1.10) of STBs board
|
||||
#define LCD_PIN_BL 17 // LCD backlight LED
|
||||
#endif
|
||||
|
||||
#ifdef AZTEEG_X1
|
||||
@ -988,6 +990,27 @@
|
||||
#endif //Newpanel
|
||||
#endif //Ultipanel
|
||||
|
||||
#ifdef MAKRPANEL
|
||||
#define BEEPER 29
|
||||
// Pins for DOGM SPI LCD Support
|
||||
#define DOGLCD_A0 30
|
||||
#define DOGLCD_CS 17
|
||||
#define LCD_PIN_BL 28 // backlight LED on PA3
|
||||
// GLCD features
|
||||
#define LCD_CONTRAST 1
|
||||
// Uncomment screen orientation
|
||||
#define LCD_SCREEN_ROT_0
|
||||
// #define LCD_SCREEN_ROT_90
|
||||
// #define LCD_SCREEN_ROT_180
|
||||
// #define LCD_SCREEN_ROT_270
|
||||
//The encoder and click button
|
||||
#define BTN_EN1 11
|
||||
#define BTN_EN2 10
|
||||
#define BTN_ENC 16 //the click switch
|
||||
//not connected to a pin
|
||||
#define SDCARDDETECT -1
|
||||
#endif //Makrpanel
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -348,11 +348,21 @@ ISR(TIMER1_COMPA_vect)
|
||||
|
||||
// Set the direction bits (X_AXIS=A_AXIS and Y_AXIS=B_AXIS for COREXY)
|
||||
if((out_bits & (1<<X_AXIS))!=0){
|
||||
WRITE(X_DIR_PIN, INVERT_X_DIR);
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
if (active_extruder != 0)
|
||||
WRITE(X2_DIR_PIN,INVERT_X_DIR);
|
||||
else
|
||||
#endif
|
||||
WRITE(X_DIR_PIN, INVERT_X_DIR);
|
||||
count_direction[X_AXIS]=-1;
|
||||
}
|
||||
else{
|
||||
WRITE(X_DIR_PIN, !INVERT_X_DIR);
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
if (active_extruder != 0)
|
||||
WRITE(X2_DIR_PIN,!INVERT_X_DIR);
|
||||
else
|
||||
#endif
|
||||
WRITE(X_DIR_PIN, !INVERT_X_DIR);
|
||||
count_direction[X_AXIS]=1;
|
||||
}
|
||||
if((out_bits & (1<<Y_AXIS))!=0){
|
||||
@ -372,29 +382,41 @@ ISR(TIMER1_COMPA_vect)
|
||||
#endif
|
||||
CHECK_ENDSTOPS
|
||||
{
|
||||
#if defined(X_MIN_PIN) && X_MIN_PIN > -1
|
||||
bool x_min_endstop=(READ(X_MIN_PIN) != X_ENDSTOPS_INVERTING);
|
||||
if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0)) {
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_x_min_endstop = x_min_endstop;
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||
if ((active_extruder == 0 && X_HOME_DIR == -1) || (active_extruder != 0 && X2_HOME_DIR == -1))
|
||||
#endif
|
||||
{
|
||||
#if defined(X_MIN_PIN) && X_MIN_PIN > -1
|
||||
bool x_min_endstop=(READ(X_MIN_PIN) != X_ENDSTOPS_INVERTING);
|
||||
if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0)) {
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_x_min_endstop = x_min_endstop;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
else { // +direction
|
||||
CHECK_ENDSTOPS
|
||||
{
|
||||
#if defined(X_MAX_PIN) && X_MAX_PIN > -1
|
||||
bool x_max_endstop=(READ(X_MAX_PIN) != X_ENDSTOPS_INVERTING);
|
||||
if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0)){
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_x_max_endstop = x_max_endstop;
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
// with 2 x-carriages, endstops are only checked in the homing direction for the active extruder
|
||||
if ((active_extruder == 0 && X_HOME_DIR == 1) || (active_extruder != 0 && X2_HOME_DIR == 1))
|
||||
#endif
|
||||
{
|
||||
#if defined(X_MAX_PIN) && X_MAX_PIN > -1
|
||||
bool x_max_endstop=(READ(X_MAX_PIN) != X_ENDSTOPS_INVERTING);
|
||||
if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0)){
|
||||
endstops_trigsteps[X_AXIS] = count_position[X_AXIS];
|
||||
endstop_x_hit=true;
|
||||
step_events_completed = current_block->step_event_count;
|
||||
}
|
||||
old_x_max_endstop = x_max_endstop;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -507,10 +529,20 @@ ISR(TIMER1_COMPA_vect)
|
||||
|
||||
counter_x += current_block->steps_x;
|
||||
if (counter_x > 0) {
|
||||
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
if (active_extruder != 0)
|
||||
WRITE(X2_STEP_PIN,!INVERT_X_STEP_PIN);
|
||||
else
|
||||
#endif
|
||||
WRITE(X_STEP_PIN, !INVERT_X_STEP_PIN);
|
||||
counter_x -= current_block->step_event_count;
|
||||
count_position[X_AXIS]+=count_direction[X_AXIS];
|
||||
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
||||
#ifdef DUAL_X_CARRIAGE
|
||||
if (active_extruder != 0)
|
||||
WRITE(X2_STEP_PIN,INVERT_X_STEP_PIN);
|
||||
else
|
||||
#endif
|
||||
WRITE(X_STEP_PIN, INVERT_X_STEP_PIN);
|
||||
}
|
||||
|
||||
counter_y += current_block->steps_y;
|
||||
@ -685,6 +717,9 @@ void st_init()
|
||||
#if defined(X_DIR_PIN) && X_DIR_PIN > -1
|
||||
SET_OUTPUT(X_DIR_PIN);
|
||||
#endif
|
||||
#if defined(X2_DIR_PIN) && X2_DIR_PIN > -1
|
||||
SET_OUTPUT(X2_DIR_PIN);
|
||||
#endif
|
||||
#if defined(Y_DIR_PIN) && Y_DIR_PIN > -1
|
||||
SET_OUTPUT(Y_DIR_PIN);
|
||||
#endif
|
||||
@ -711,6 +746,10 @@ void st_init()
|
||||
SET_OUTPUT(X_ENABLE_PIN);
|
||||
if(!X_ENABLE_ON) WRITE(X_ENABLE_PIN,HIGH);
|
||||
#endif
|
||||
#if defined(X2_ENABLE_PIN) && X2_ENABLE_PIN > -1
|
||||
SET_OUTPUT(X2_ENABLE_PIN);
|
||||
if(!X_ENABLE_ON) WRITE(X2_ENABLE_PIN,HIGH);
|
||||
#endif
|
||||
#if defined(Y_ENABLE_PIN) && Y_ENABLE_PIN > -1
|
||||
SET_OUTPUT(Y_ENABLE_PIN);
|
||||
if(!Y_ENABLE_ON) WRITE(Y_ENABLE_PIN,HIGH);
|
||||
@ -788,6 +827,11 @@ void st_init()
|
||||
WRITE(X_STEP_PIN,INVERT_X_STEP_PIN);
|
||||
disable_x();
|
||||
#endif
|
||||
#if defined(X2_STEP_PIN) && (X2_STEP_PIN > -1)
|
||||
SET_OUTPUT(X2_STEP_PIN);
|
||||
WRITE(X2_STEP_PIN,INVERT_X_STEP_PIN);
|
||||
disable_x();
|
||||
#endif
|
||||
#if defined(Y_STEP_PIN) && (Y_STEP_PIN > -1)
|
||||
SET_OUTPUT(Y_STEP_PIN);
|
||||
WRITE(Y_STEP_PIN,INVERT_Y_STEP_PIN);
|
||||
|
@ -8,6 +8,8 @@
|
||||
#include "stepper.h"
|
||||
#include "ConfigurationStore.h"
|
||||
|
||||
int8_t encoderDiff; /* encoderDiff is updated from interrupt context and added to encoderPosition every LCD update */
|
||||
|
||||
/* Configuration settings */
|
||||
int plaPreheatHotendTemp;
|
||||
int plaPreheatHPBTemp;
|
||||
@ -48,6 +50,9 @@ static void lcd_control_temperature_menu();
|
||||
static void lcd_control_temperature_preheat_pla_settings_menu();
|
||||
static void lcd_control_temperature_preheat_abs_settings_menu();
|
||||
static void lcd_control_motion_menu();
|
||||
#ifdef DOGLCD
|
||||
static void lcd_set_contrast();
|
||||
#endif
|
||||
static void lcd_control_retract_menu();
|
||||
static void lcd_sdcard_menu();
|
||||
|
||||
@ -123,13 +128,11 @@ static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned l
|
||||
#ifndef REPRAPWORLD_KEYPAD
|
||||
volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
|
||||
#else
|
||||
volatile uint16_t buttons;//Contains the bits of the currently pressed buttons (extended).
|
||||
volatile uint8_t buttons_reprapworld_keypad; // to store the reprapworld_keypad shiftregister values
|
||||
#endif
|
||||
|
||||
uint8_t currentMenuViewOffset; /* scroll offset in the current menu */
|
||||
uint32_t blocking_enc;
|
||||
uint8_t lastEncoderBits;
|
||||
int8_t encoderDiff; /* encoderDiff is updated from interrupt context and added to encoderPosition every LCD update */
|
||||
uint32_t encoderPosition;
|
||||
#if (SDCARDDETECT > 0)
|
||||
bool lcd_oldcardstatus;
|
||||
@ -174,8 +177,8 @@ static void lcd_status_screen()
|
||||
}
|
||||
|
||||
// Dead zone at 100% feedrate
|
||||
if (feedmultiply < 100 && (feedmultiply + int(encoderPosition)) > 100 ||
|
||||
feedmultiply > 100 && (feedmultiply + int(encoderPosition)) < 100)
|
||||
if ((feedmultiply < 100 && (feedmultiply + int(encoderPosition)) > 100) ||
|
||||
(feedmultiply > 100 && (feedmultiply + int(encoderPosition)) < 100))
|
||||
{
|
||||
encoderPosition = 0;
|
||||
feedmultiply = 100;
|
||||
@ -364,9 +367,9 @@ static void lcd_move_x()
|
||||
if (encoderPosition != 0)
|
||||
{
|
||||
current_position[X_AXIS] += float((int)encoderPosition) * move_menu_scale;
|
||||
if (current_position[X_AXIS] < X_MIN_POS)
|
||||
if (min_software_endstops && current_position[X_AXIS] < X_MIN_POS)
|
||||
current_position[X_AXIS] = X_MIN_POS;
|
||||
if (current_position[X_AXIS] > X_MAX_POS)
|
||||
if (max_software_endstops && current_position[X_AXIS] > X_MAX_POS)
|
||||
current_position[X_AXIS] = X_MAX_POS;
|
||||
encoderPosition = 0;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600, active_extruder);
|
||||
@ -388,9 +391,9 @@ static void lcd_move_y()
|
||||
if (encoderPosition != 0)
|
||||
{
|
||||
current_position[Y_AXIS] += float((int)encoderPosition) * move_menu_scale;
|
||||
if (current_position[Y_AXIS] < Y_MIN_POS)
|
||||
if (min_software_endstops && current_position[Y_AXIS] < Y_MIN_POS)
|
||||
current_position[Y_AXIS] = Y_MIN_POS;
|
||||
if (current_position[Y_AXIS] > Y_MAX_POS)
|
||||
if (max_software_endstops && current_position[Y_AXIS] > Y_MAX_POS)
|
||||
current_position[Y_AXIS] = Y_MAX_POS;
|
||||
encoderPosition = 0;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600, active_extruder);
|
||||
@ -412,12 +415,12 @@ static void lcd_move_z()
|
||||
if (encoderPosition != 0)
|
||||
{
|
||||
current_position[Z_AXIS] += float((int)encoderPosition) * move_menu_scale;
|
||||
if (current_position[Z_AXIS] < Z_MIN_POS)
|
||||
if (min_software_endstops && current_position[Z_AXIS] < Z_MIN_POS)
|
||||
current_position[Z_AXIS] = Z_MIN_POS;
|
||||
if (current_position[Z_AXIS] > Z_MAX_POS)
|
||||
if (max_software_endstops && current_position[Z_AXIS] > Z_MAX_POS)
|
||||
current_position[Z_AXIS] = Z_MAX_POS;
|
||||
encoderPosition = 0;
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 60, active_extruder);
|
||||
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS]/60, active_extruder);
|
||||
lcdDrawUpdate = 1;
|
||||
}
|
||||
if (lcdDrawUpdate)
|
||||
@ -499,6 +502,10 @@ static void lcd_control_menu()
|
||||
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
|
||||
MENU_ITEM(submenu, MSG_TEMPERATURE, lcd_control_temperature_menu);
|
||||
MENU_ITEM(submenu, MSG_MOTION, lcd_control_motion_menu);
|
||||
#ifdef DOGLCD
|
||||
// MENU_ITEM_EDIT(int3, MSG_CONTRAST, &lcd_contrast, 0, 63);
|
||||
MENU_ITEM(submenu, MSG_CONTRAST, lcd_set_contrast);
|
||||
#endif
|
||||
#ifdef FWRETRACT
|
||||
MENU_ITEM(submenu, MSG_RETRACT, lcd_control_retract_menu);
|
||||
#endif
|
||||
@ -610,6 +617,31 @@ static void lcd_control_motion_menu()
|
||||
END_MENU();
|
||||
}
|
||||
|
||||
#ifdef DOGLCD
|
||||
static void lcd_set_contrast()
|
||||
{
|
||||
if (encoderPosition != 0)
|
||||
{
|
||||
lcd_contrast -= encoderPosition;
|
||||
if (lcd_contrast < 0) lcd_contrast = 0;
|
||||
else if (lcd_contrast > 63) lcd_contrast = 63;
|
||||
encoderPosition = 0;
|
||||
lcdDrawUpdate = 1;
|
||||
u8g.setContrast(lcd_contrast);
|
||||
}
|
||||
if (lcdDrawUpdate)
|
||||
{
|
||||
lcd_implementation_drawedit(PSTR("Contrast"), itostr2(lcd_contrast));
|
||||
}
|
||||
if (LCD_CLICKED)
|
||||
{
|
||||
lcd_quick_feedback();
|
||||
currentMenu = lcd_control_menu;
|
||||
encoderPosition = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FWRETRACT
|
||||
static void lcd_control_retract_menu()
|
||||
{
|
||||
@ -743,21 +775,39 @@ menu_edit_type(float, float52, ftostr52, 100)
|
||||
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
||||
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
static void reprapworld_keypad_move_y_down() {
|
||||
encoderPosition = 1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_y();
|
||||
}
|
||||
static void reprapworld_keypad_move_y_up() {
|
||||
encoderPosition = -1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_y();
|
||||
}
|
||||
static void reprapworld_keypad_move_home() {
|
||||
//enquecommand_P((PSTR("G28"))); // move all axis home
|
||||
// TODO gregor: move all axis home, i have currently only one axis on my prusa i3
|
||||
enquecommand_P((PSTR("G28 Y")));
|
||||
}
|
||||
static void reprapworld_keypad_move_z_up() {
|
||||
encoderPosition = 1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_z();
|
||||
}
|
||||
static void reprapworld_keypad_move_z_down() {
|
||||
encoderPosition = -1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_z();
|
||||
}
|
||||
static void reprapworld_keypad_move_x_left() {
|
||||
encoderPosition = -1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_x();
|
||||
}
|
||||
static void reprapworld_keypad_move_x_right() {
|
||||
encoderPosition = 1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_x();
|
||||
}
|
||||
static void reprapworld_keypad_move_y_down() {
|
||||
encoderPosition = 1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_y();
|
||||
}
|
||||
static void reprapworld_keypad_move_y_up() {
|
||||
encoderPosition = -1;
|
||||
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||
lcd_move_y();
|
||||
}
|
||||
static void reprapworld_keypad_move_home() {
|
||||
enquecommand_P((PSTR("G28"))); // move all axis home
|
||||
}
|
||||
#endif
|
||||
|
||||
/** End of menus **/
|
||||
@ -884,17 +934,29 @@ void lcd_update()
|
||||
if (lcd_next_update_millis < millis())
|
||||
{
|
||||
#ifdef ULTIPANEL
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) {
|
||||
reprapworld_keypad_move_y_down();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) {
|
||||
reprapworld_keypad_move_y_up();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_HOME) {
|
||||
reprapworld_keypad_move_home();
|
||||
}
|
||||
#endif
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) {
|
||||
reprapworld_keypad_move_z_up();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) {
|
||||
reprapworld_keypad_move_z_down();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) {
|
||||
reprapworld_keypad_move_x_left();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) {
|
||||
reprapworld_keypad_move_x_right();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) {
|
||||
reprapworld_keypad_move_y_down();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) {
|
||||
reprapworld_keypad_move_y_up();
|
||||
}
|
||||
if (REPRAPWORLD_KEYPAD_MOVE_HOME) {
|
||||
reprapworld_keypad_move_home();
|
||||
}
|
||||
#endif
|
||||
if (encoderDiff)
|
||||
{
|
||||
lcdDrawUpdate = 1;
|
||||
@ -969,6 +1031,14 @@ void lcd_reset_alert_level()
|
||||
lcd_status_message_level = 0;
|
||||
}
|
||||
|
||||
#ifdef DOGLCD
|
||||
void lcd_setcontrast(uint8_t value)
|
||||
{
|
||||
lcd_contrast = value & 63;
|
||||
u8g.setContrast(lcd_contrast);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ULTIPANEL
|
||||
/* Warning: This function is called from interrupt context */
|
||||
void lcd_buttons_update()
|
||||
@ -980,22 +1050,22 @@ void lcd_buttons_update()
|
||||
#if BTN_ENC > 0
|
||||
if((blocking_enc<millis()) && (READ(BTN_ENC)==0))
|
||||
newbutton |= EN_C;
|
||||
#endif
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
// for the reprapworld_keypad
|
||||
uint8_t newbutton_reprapworld_keypad=0;
|
||||
WRITE(SHIFT_LD,LOW);
|
||||
WRITE(SHIFT_LD,HIGH);
|
||||
for(int8_t i=0;i<8;i++) {
|
||||
newbutton_reprapworld_keypad = newbutton_reprapworld_keypad>>1;
|
||||
if(READ(SHIFT_OUT))
|
||||
newbutton_reprapworld_keypad|=(1<<7);
|
||||
WRITE(SHIFT_CLK,HIGH);
|
||||
WRITE(SHIFT_CLK,LOW);
|
||||
}
|
||||
newbutton |= ((~newbutton_reprapworld_keypad) << REPRAPWORLD_BTN_OFFSET); //invert it, because a pressed switch produces a logical 0
|
||||
#endif
|
||||
buttons = newbutton;
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
// for the reprapworld_keypad
|
||||
uint8_t newbutton_reprapworld_keypad=0;
|
||||
WRITE(SHIFT_LD,LOW);
|
||||
WRITE(SHIFT_LD,HIGH);
|
||||
for(int8_t i=0;i<8;i++) {
|
||||
newbutton_reprapworld_keypad = newbutton_reprapworld_keypad>>1;
|
||||
if(READ(SHIFT_OUT))
|
||||
newbutton_reprapworld_keypad|=(1<<7);
|
||||
WRITE(SHIFT_CLK,HIGH);
|
||||
WRITE(SHIFT_CLK,LOW);
|
||||
}
|
||||
buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
|
||||
#endif
|
||||
#else //read it from the shift register
|
||||
uint8_t newbutton=0;
|
||||
WRITE(SHIFT_LD,LOW);
|
||||
|
@ -12,6 +12,11 @@
|
||||
void lcd_setalertstatuspgm(const char* message);
|
||||
void lcd_reset_alert_level();
|
||||
|
||||
#ifdef DOGLCD
|
||||
extern int lcd_contrast;
|
||||
void lcd_setcontrast(uint8_t value);
|
||||
#endif
|
||||
|
||||
static unsigned char blink = 0; // Variable for visualisation of fan rotation in GLCD
|
||||
|
||||
#define LCD_MESSAGEPGM(x) lcd_setstatuspgm(PSTR(x))
|
||||
@ -22,6 +27,10 @@
|
||||
|
||||
#ifdef ULTIPANEL
|
||||
void lcd_buttons_update();
|
||||
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shiftregister values
|
||||
#endif
|
||||
#else
|
||||
FORCE_INLINE void lcd_buttons_update() {}
|
||||
#endif
|
||||
@ -37,6 +46,45 @@
|
||||
void lcd_buzz(long duration,uint16_t freq);
|
||||
bool lcd_clicked();
|
||||
|
||||
#ifdef NEWPANEL
|
||||
#define EN_C (1<<BLEN_C)
|
||||
#define EN_B (1<<BLEN_B)
|
||||
#define EN_A (1<<BLEN_A)
|
||||
|
||||
#define LCD_CLICKED (buttons&EN_C)
|
||||
#ifdef REPRAPWORLD_KEYPAD
|
||||
#define EN_REPRAPWORLD_KEYPAD_F3 (1<<BLEN_REPRAPWORLD_KEYPAD_F3)
|
||||
#define EN_REPRAPWORLD_KEYPAD_F2 (1<<BLEN_REPRAPWORLD_KEYPAD_F2)
|
||||
#define EN_REPRAPWORLD_KEYPAD_F1 (1<<BLEN_REPRAPWORLD_KEYPAD_F1)
|
||||
#define EN_REPRAPWORLD_KEYPAD_UP (1<<BLEN_REPRAPWORLD_KEYPAD_UP)
|
||||
#define EN_REPRAPWORLD_KEYPAD_RIGHT (1<<BLEN_REPRAPWORLD_KEYPAD_RIGHT)
|
||||
#define EN_REPRAPWORLD_KEYPAD_MIDDLE (1<<BLEN_REPRAPWORLD_KEYPAD_MIDDLE)
|
||||
#define EN_REPRAPWORLD_KEYPAD_DOWN (1<<BLEN_REPRAPWORLD_KEYPAD_DOWN)
|
||||
#define EN_REPRAPWORLD_KEYPAD_LEFT (1<<BLEN_REPRAPWORLD_KEYPAD_LEFT)
|
||||
|
||||
#define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1))
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Z_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F2)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Z_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F3)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_X_LEFT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_LEFT)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_X_RIGHT (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_RIGHT)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP)
|
||||
#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
|
||||
#endif //REPRAPWORLD_KEYPAD
|
||||
#else
|
||||
//atomatic, do not change
|
||||
#define B_LE (1<<BL_LE)
|
||||
#define B_UP (1<<BL_UP)
|
||||
#define B_MI (1<<BL_MI)
|
||||
#define B_DW (1<<BL_DW)
|
||||
#define B_RI (1<<BL_RI)
|
||||
#define B_ST (1<<BL_ST)
|
||||
#define EN_B (1<<BLEN_B)
|
||||
#define EN_A (1<<BLEN_A)
|
||||
|
||||
#define LCD_CLICKED ((buttons&B_MI)||(buttons&B_ST))
|
||||
#endif//NEWPANEL
|
||||
|
||||
#else //no lcd
|
||||
FORCE_INLINE void lcd_update() {}
|
||||
FORCE_INLINE void lcd_init() {}
|
||||
|
22
README.md
22
README.md
@ -41,6 +41,8 @@ Features:
|
||||
* Heater power reporting. Useful for PID monitoring.
|
||||
* PID tuning
|
||||
* CoreXY kinematics (www.corexy.com/theory.html)
|
||||
* Delta kinematics
|
||||
* Dual X-carriage support for multiple extruder systems
|
||||
* Configurable serial port to support connection of wireless adaptors.
|
||||
* Automatic operation of extruder/cold-end cooling fans based on nozzle temperature
|
||||
* RC Servo Support, specify angle or duration for continuous rotation servos.
|
||||
@ -142,17 +144,9 @@ Implemented G Codes:
|
||||
* G91 - Use Relative Coordinates
|
||||
* G92 - Set current position to cordinates given
|
||||
|
||||
RepRap M Codes
|
||||
M Codes
|
||||
* M0 - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled)
|
||||
* M1 - Same as M0
|
||||
* M104 - Set extruder target temp
|
||||
* M105 - Read current temp
|
||||
* M106 - Fan on
|
||||
* M107 - Fan off
|
||||
* M109 - Wait for extruder current temp to reach target temp.
|
||||
* M114 - Display current position
|
||||
|
||||
Custom M Codes
|
||||
* M17 - Enable/Power all stepper motors
|
||||
* M18 - Disable all stepper motors; same as M84
|
||||
* M20 - List SD card
|
||||
@ -167,6 +161,7 @@ Custom M Codes
|
||||
* M29 - Stop SD write
|
||||
* M30 - Delete file from SD (M30 filename.g)
|
||||
* M31 - Output time since last M109 or SD card start to serial
|
||||
* M32 - Select file and start SD print (Can be used when printing from SD card)
|
||||
* M42 - Change pin status via gcode Use M42 Px Sy to set pin x to value y, when omitting Px the onboard led will be used.
|
||||
* M80 - Turn on Power Supply
|
||||
* M81 - Turn off Power Supply
|
||||
@ -175,6 +170,12 @@ Custom M Codes
|
||||
* M84 - Disable steppers until next move, or use S<seconds> to specify an inactivity timeout, after which the steppers will be disabled. S0 to disable the timeout.
|
||||
* M85 - Set inactivity shutdown timer with parameter S<seconds>. To disable set zero (default)
|
||||
* M92 - Set axis_steps_per_unit - same syntax as G92
|
||||
* M104 - Set extruder target temp
|
||||
* M105 - Read current temp
|
||||
* M106 - Fan on
|
||||
* M107 - Fan off
|
||||
* M109 - Sxxx Wait for extruder current temp to reach target temp. Waits only when heating
|
||||
* Rxxx Wait for extruder current temp to reach target temp. Waits when heating and cooling
|
||||
* M114 - Output current position to serial port
|
||||
* M115 - Capabilities string
|
||||
* M117 - display message
|
||||
@ -184,7 +185,8 @@ Custom M Codes
|
||||
* M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
* M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
|
||||
* M140 - Set bed target temp
|
||||
* M190 - Wait for bed current temp to reach target temp.
|
||||
* M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
|
||||
* Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
|
||||
* M200 - Set filament diameter
|
||||
* M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
|
||||
* M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
|
||||
|
Loading…
Reference in New Issue
Block a user