ソースを参照

Merge remote-tracking branch 'origin/Marlin_v1' into add/M665-set-delta-configuration

Conflicts:
	Marlin/Marlin_main.cpp
Jim Morris 11年前
コミット
8ea5665ee2

+ 44
- 15
Marlin/Configuration.h ファイルの表示

@@ -335,11 +335,49 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
335 335
 
336 336
 #ifdef ENABLE_AUTO_BED_LEVELING
337 337
 
338
-  // these are the positions on the bed to do the probing
339
-  #define LEFT_PROBE_BED_POSITION 15
340
-  #define RIGHT_PROBE_BED_POSITION 170
341
-  #define BACK_PROBE_BED_POSITION 180
342
-  #define FRONT_PROBE_BED_POSITION 20
338
+// There are 2 different ways to pick the X and Y locations to probe:
339
+
340
+//  - "grid" mode
341
+//    Probe every point in a rectangular grid
342
+//    You must specify the rectangle, and the density of sample points
343
+//    This mode is preferred because there are more measurements.
344
+//    It used to be called ACCURATE_BED_LEVELING but "grid" is more descriptive
345
+
346
+//  - "3-point" mode
347
+//    Probe 3 arbitrary points on the bed (that aren't colinear)
348
+//    You must specify the X & Y coordinates of all 3 points
349
+
350
+  #define AUTO_BED_LEVELING_GRID
351
+  // with AUTO_BED_LEVELING_GRID, the bed is sampled in a
352
+  // AUTO_BED_LEVELING_GRID_POINTSxAUTO_BED_LEVELING_GRID_POINTS grid
353
+  // and least squares solution is calculated
354
+  // Note: this feature occupies 10'206 byte
355
+  #ifdef AUTO_BED_LEVELING_GRID
356
+
357
+    // set the rectangle in which to probe
358
+    #define LEFT_PROBE_BED_POSITION 15
359
+    #define RIGHT_PROBE_BED_POSITION 170
360
+    #define BACK_PROBE_BED_POSITION 180
361
+    #define FRONT_PROBE_BED_POSITION 20
362
+
363
+     // set the number of grid points per dimension
364
+     // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
365
+    #define AUTO_BED_LEVELING_GRID_POINTS 2
366
+
367
+
368
+  #else  // not AUTO_BED_LEVELING_GRID
369
+    // with no grid, just probe 3 arbitrary points.  A simple cross-product
370
+    // is used to esimate the plane of the print bed
371
+
372
+      #define ABL_PROBE_PT_1_X 15
373
+      #define ABL_PROBE_PT_1_Y 180
374
+      #define ABL_PROBE_PT_2_X 15
375
+      #define ABL_PROBE_PT_2_Y 20
376
+      #define ABL_PROBE_PT_3_X 170
377
+      #define ABL_PROBE_PT_3_Y 20
378
+
379
+  #endif // AUTO_BED_LEVELING_GRID
380
+
343 381
 
344 382
   // these are the offsets to the probe relative to the extruder tip (Hotend - Probe)
345 383
   #define X_PROBE_OFFSET_FROM_EXTRUDER -25
@@ -379,16 +417,7 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of
379 417
 
380 418
   #endif
381 419
 
382
-  // with accurate bed leveling, the bed is sampled in a ACCURATE_BED_LEVELING_POINTSxACCURATE_BED_LEVELING_POINTS grid and least squares solution is calculated
383
-  // Note: this feature occupies 10'206 byte
384
-  #define ACCURATE_BED_LEVELING
385
-
386
-  #ifdef ACCURATE_BED_LEVELING
387
-     // I wouldn't see a reason to go above 3 (=9 probing points on the bed)
388
-    #define ACCURATE_BED_LEVELING_POINTS 2
389
-  #endif
390
-
391
-#endif
420
+#endif // ENABLE_AUTO_BED_LEVELING
392 421
 
393 422
 
394 423
 // The position of the homing switches

+ 8
- 2
Marlin/Configuration_adv.h ファイルの表示

@@ -399,8 +399,14 @@ const unsigned int dropsegments=5; //everything with less than this number of st
399 399
 // the moves are than replaced by the firmware controlled ones.
400 400
 
401 401
 // #define FWRETRACT  //ONLY PARTIALLY TESTED
402
-#define MIN_RETRACT 0.1 //minimum extruded mm to accept a automatic gcode retraction attempt
403
-
402
+#ifdef FWRETRACT
403
+  #define MIN_RETRACT 0.1                //minimum extruded mm to accept a automatic gcode retraction attempt
404
+  #define RETRACT_LENGTH 3               //default retract length (positive mm)
405
+  #define RETRACT_FEEDRATE 80*60         //default feedrate for retracting
406
+  #define RETRACT_ZLIFT 0                //default retract Z-lift
407
+  #define RETRACT_RECOVER_LENGTH 0       //default additional recover length (mm, added to retract length when recovering)
408
+  #define RETRACT_RECOVER_FEEDRATE 8*60  //default feedrate for recovering from retraction
409
+#endif
404 410
 
405 411
 //adds support for experimental filament exchange support M600; requires display
406 412
 #ifdef ULTIPANEL

バイナリ
Marlin/LCD Menu Tree.pdf ファイルの表示


+ 5
- 5
Marlin/Marlin.h ファイルの表示

@@ -1,5 +1,5 @@
1 1
 // Tonokip RepRap firmware rewrite based off of Hydra-mmm firmware.
2
-// Licence: GPL
2
+// License: GPL
3 3
 
4 4
 #ifndef MARLIN_H
5 5
 #define MARLIN_H
@@ -30,7 +30,7 @@
30 30
 # include "Arduino.h"
31 31
 #else
32 32
 # include "WProgram.h"
33
-  //Arduino < 1.0.0 does not define this, so we need to do it ourselfs
33
+  //Arduino < 1.0.0 does not define this, so we need to do it ourselves
34 34
 # define analogInputToDigitalPin(p) ((p) + A0)
35 35
 #endif
36 36
 
@@ -87,7 +87,7 @@ void serial_echopair_P(const char *s_P, double v);
87 87
 void serial_echopair_P(const char *s_P, unsigned long v);
88 88
 
89 89
 
90
-//things to write to serial from Programmemory. saves 400 to 2k of RAM.
90
+//Things to write to serial from Program memory. Saves 400 to 2k of RAM.
91 91
 FORCE_INLINE void serialprintPGM(const char *str)
92 92
 {
93 93
   char ch=pgm_read_byte(str);
@@ -184,8 +184,8 @@ void Stop();
184 184
 
185 185
 bool IsStopped();
186 186
 
187
-void enquecommand(const char *cmd); //put an ascii command at the end of the current buffer.
188
-void enquecommand_P(const char *cmd); //put an ascii command at the end of the current buffer, read from flash
187
+void enquecommand(const char *cmd); //put an ASCII command at the end of the current buffer.
188
+void enquecommand_P(const char *cmd); //put an ASCII command at the end of the current buffer, read from flash
189 189
 void prepare_arc_move(char isclockwise);
190 190
 void clamp_to_software_endstops(float target[3]);
191 191
 

+ 126
- 136
Marlin/Marlin_main.cpp ファイルの表示

@@ -31,7 +31,7 @@
31 31
 
32 32
 #ifdef ENABLE_AUTO_BED_LEVELING
33 33
 #include "vector_3.h"
34
-  #ifdef ACCURATE_BED_LEVELING
34
+  #ifdef AUTO_BED_LEVELING_GRID
35 35
     #include "qr_solve.h"
36 36
   #endif
37 37
 #endif // ENABLE_AUTO_BED_LEVELING
@@ -63,7 +63,7 @@
63 63
 
64 64
 #define VERSION_STRING  "1.0.0"
65 65
 
66
-// look here for descriptions of gcodes: http://linuxcnc.org/handbook/gcode/g-code.html
66
+// look here for descriptions of G-codes: http://linuxcnc.org/handbook/gcode/g-code.html
67 67
 // http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes
68 68
 
69 69
 //Implemented Codes
@@ -76,11 +76,11 @@
76 76
 // G10 - retract filament according to settings of M207
77 77
 // G11 - retract recover filament according to settings of M208
78 78
 // G28 - Home all Axis
79
-// G29 - Detailed Z-Probe, probes the bed at 3 points.  You must de at the home position for this to work correctly.
79
+// G29 - Detailed Z-Probe, probes the bed at 3 or more points.  Will fail if you haven't homed yet.
80 80
 // G30 - Single Z Probe, probes bed at current XY location.
81 81
 // G90 - Use Absolute Coordinates
82 82
 // G91 - Use Relative Coordinates
83
-// G92 - Set current position to cordinates given
83
+// G92 - Set current position to coordinates given
84 84
 
85 85
 // M Codes
86 86
 // M0   - Unconditional stop - Wait for user to press a button on the LCD (Only if ULTRA_LCD is enabled)
@@ -101,7 +101,7 @@
101 101
 // M31  - Output time since last M109 or SD card start to serial
102 102
 // M32  - Select file and start SD print (Can be used _while_ printing from SD card files):
103 103
 //        syntax "M32 /path/filename#", or "M32 S<startpos bytes> !filename#"
104
-//        Call gcode file : "M32 P !filename#" and return to caller file after finishing (simiarl to #include).
104
+//        Call gcode file : "M32 P !filename#" and return to caller file after finishing (similar to #include).
105 105
 //        The '#' is necessary when calling from within sd files, as it stops buffer prereading
106 106
 // 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.
107 107
 // M80  - Turn on Power Supply
@@ -127,18 +127,18 @@
127 127
 // M128 - EtoP Open (BariCUDA EtoP = electricity to air pressure transducer by jmil)
128 128
 // M129 - EtoP Closed (BariCUDA EtoP = electricity to air pressure transducer by jmil)
129 129
 // M140 - Set bed target temp
130
-// M150 - Set BlinkM Colour Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work.
130
+// M150 - Set BlinkM Color Output R: Red<0-255> U(!): Green<0-255> B: Blue<0-255> over i2c, G for green does not work.
131 131
 // M190 - Sxxx Wait for bed current temp to reach target temp. Waits only when heating
132 132
 //        Rxxx Wait for bed current temp to reach target temp. Waits when heating and cooling
133 133
 // M200 D<millimeters>- set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters).
134 134
 // M201 - Set max acceleration in units/s^2 for print moves (M201 X1000 Y1000)
135 135
 // M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!
136 136
 // M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec
137
-// M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2  also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate
137
+// M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) in mm/sec^2  also sets minimum segment time in ms (B20000) to prevent buffer under-runs and M20 minimum feedrate
138 138
 // M205 -  advanced settings:  minimum travel speed S=while printing T=travel only,  B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk
139
-// M206 - set additional homeing offset
139
+// M206 - set additional homing offset
140 140
 // M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop], stays in mm regardless of M200 setting
141
-// M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/min]
141
+// M208 - set recover=unretract length S[positive mm surplus to the M207 S*] F[feedrate mm/sec]
142 142
 // M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.
143 143
 // M218 - set hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>
144 144
 // M220 S<factor in percent>- set speed factor override percentage
@@ -147,7 +147,7 @@
147 147
 // M240 - Trigger a camera to take a photograph
148 148
 // M250 - Set LCD contrast C<contrast value> (value 0..63)
149 149
 // M280 - set servo position absolute. P: servo index, S: angle or microseconds
150
-// M300 - Play beepsound S<frequency Hz> P<duration ms>
150
+// M300 - Play beep sound S<frequency Hz> P<duration ms>
151 151
 // M301 - Set PID parameters P I and D
152 152
 // M302 - Allow cold extrudes, or set the minimum extrude S<temperature>.
153 153
 // M303 - PID relay autotune S<temperature> sets the target temperature. (default target temperature = 150C)
@@ -155,14 +155,14 @@
155 155
 // M400 - Finish all moves
156 156
 // M401 - Lower z-probe if present
157 157
 // M402 - Raise z-probe if present
158
-// M500 - stores paramters in EEPROM
158
+// M500 - stores parameters in EEPROM
159 159
 // M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
160 160
 // M502 - reverts to the default "factory settings".  You still need to store them in EEPROM afterwards if you want to.
161
-// M503 - print the current settings (from memory not from eeprom)
161
+// M503 - print the current settings (from memory not from EEPROM)
162 162
 // M540 - Use S[0|1] to enable or disable the stop SD card print on endstop hit (requires ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED)
163 163
 // M600 - Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
164 164
 // M665 - set delta configurations
165
-// M666 - set delta endstop adjustemnt
165
+// M666 - set delta endstop adjustment
166 166
 // M605 - Set dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ]
167 167
 // M907 - Set digital trimpot motor current using axis codes.
168 168
 // M908 - Control digital trimpot directly.
@@ -232,10 +232,13 @@ int EtoPPressure=0;
232 232
 #endif
233 233
 
234 234
 #ifdef FWRETRACT
235
-  bool autoretract_enabled=true;
235
+  bool autoretract_enabled=false;
236 236
   bool retracted=false;
237
-  float retract_length=3, retract_feedrate=17*60, retract_zlift=0.8;
238
-  float retract_recover_length=0, retract_recover_feedrate=8*60;
237
+  float retract_length = RETRACT_LENGTH;
238
+  float retract_feedrate = RETRACT_FEEDRATE;
239
+  float retract_zlift = RETRACT_ZLIFT;
240
+  float retract_recover_length = RETRACT_RECOVER_LENGTH;
241
+  float retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE;
239 242
 #endif
240 243
 
241 244
 #ifdef ULTIPANEL
@@ -264,7 +267,7 @@ int EtoPPressure=0;
264 267
 #endif					
265 268
 
266 269
 //===========================================================================
267
-//=============================private variables=============================
270
+//=============================Private Variables=============================
268 271
 //===========================================================================
269 272
 const char axis_codes[NUM_AXIS] = {'X', 'Y', 'Z', 'E'};
270 273
 static float destination[NUM_AXIS] = {  0.0, 0.0, 0.0, 0.0};
@@ -284,7 +287,7 @@ static int buflen = 0;
284 287
 static char serial_char;
285 288
 static int serial_count = 0;
286 289
 static boolean comment_mode = false;
287
-static char *strchr_pointer; // just a pointer to find chars in the cmd string like X, Y, Z, E, etc
290
+static char *strchr_pointer; // just a pointer to find chars in the command string like X, Y, Z, E, etc
288 291
 
289 292
 const int sensitive_pins[] = SENSITIVE_PINS; // Sensitive pin list for M42
290 293
 
@@ -312,7 +315,7 @@ bool CooldownNoWait = true;
312 315
 bool target_direction;
313 316
 
314 317
 //===========================================================================
315
-//=============================ROUTINES=============================
318
+//=============================Routines======================================
316 319
 //===========================================================================
317 320
 
318 321
 void get_arc_coordinates();
@@ -349,7 +352,7 @@ void enquecommand(const char *cmd)
349 352
 {
350 353
   if(buflen < BUFSIZE)
351 354
   {
352
-    //this is dangerous if a mixing of serial and this happsens
355
+    //this is dangerous if a mixing of serial and this happens
353 356
     strcpy(&(cmdbuffer[bufindw][0]),cmd);
354 357
     SERIAL_ECHO_START;
355 358
     SERIAL_ECHOPGM("enqueing \"");
@@ -364,7 +367,7 @@ void enquecommand_P(const char *cmd)
364 367
 {
365 368
   if(buflen < BUFSIZE)
366 369
   {
367
-    //this is dangerous if a mixing of serial and this happsens
370
+    //this is dangerous if a mixing of serial and this happens
368 371
     strcpy_P(&(cmdbuffer[bufindw][0]),cmd);
369 372
     SERIAL_ECHO_START;
370 373
     SERIAL_ECHOPGM("enqueing \"");
@@ -671,9 +674,9 @@ void get_command()
671 674
     return;
672 675
   }
673 676
 
674
-  //'#' stops reading from sd to the buffer prematurely, so procedural macro calls are possible
675
-  // if it occures, stop_buffering is triggered and the buffer is ran dry.
676
-  // this character _can_ occure in serial com, due to checksums. however, no checksums are used in sd printing
677
+  //'#' stops reading from SD to the buffer prematurely, so procedural macro calls are possible
678
+  // if it occurs, stop_buffering is triggered and the buffer is ran dry.
679
+  // this character _can_ occur in serial com, due to checksums. however, no checksums are used in SD printing
677 680
 
678 681
   static bool stop_buffering=false;
679 682
   if(buflen==0) stop_buffering=false;
@@ -832,7 +835,7 @@ static void axis_is_at_home(int axis) {
832 835
 }
833 836
 
834 837
 #ifdef ENABLE_AUTO_BED_LEVELING
835
-#ifdef ACCURATE_BED_LEVELING
838
+#ifdef AUTO_BED_LEVELING_GRID
836 839
 static void set_bed_level_equation_lsq(double *plane_equation_coefficients)
837 840
 {
838 841
     vector_3 planeNormal = vector_3(-plane_equation_coefficients[0], -plane_equation_coefficients[1], 1);
@@ -856,42 +859,36 @@ static void set_bed_level_equation_lsq(double *plane_equation_coefficients)
856 859
     plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
857 860
 }
858 861
 
859
-#else
860
-static void set_bed_level_equation(float z_at_xLeft_yFront, float z_at_xRight_yFront, float z_at_xLeft_yBack) {
861
-    plan_bed_level_matrix.set_to_identity();
862
+#else // not AUTO_BED_LEVELING_GRID
862 863
 
863
-    vector_3 xLeftyFront = vector_3(LEFT_PROBE_BED_POSITION, FRONT_PROBE_BED_POSITION, z_at_xLeft_yFront);
864
-    vector_3 xLeftyBack = vector_3(LEFT_PROBE_BED_POSITION, BACK_PROBE_BED_POSITION, z_at_xLeft_yBack);
865
-    vector_3 xRightyFront = vector_3(RIGHT_PROBE_BED_POSITION, FRONT_PROBE_BED_POSITION, z_at_xRight_yFront);
864
+static void set_bed_level_equation_3pts(float z_at_pt_1, float z_at_pt_2, float z_at_pt_3) {
866 865
 
867
-    vector_3 xPositive = (xRightyFront - xLeftyFront).get_normal();
868
-    vector_3 yPositive = (xLeftyBack - xLeftyFront).get_normal();
869
-    vector_3 planeNormal = vector_3::cross(xPositive, yPositive).get_normal();
866
+    plan_bed_level_matrix.set_to_identity();
870 867
 
871
-    //planeNormal.debug("planeNormal");
872
-    //yPositive.debug("yPositive");
873
-    plan_bed_level_matrix = matrix_3x3::create_look_at(planeNormal);
874
-    //bedLevel.debug("bedLevel");
868
+    vector_3 pt1 = vector_3(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, z_at_pt_1);
869
+    vector_3 pt2 = vector_3(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, z_at_pt_2);
870
+    vector_3 pt3 = vector_3(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, z_at_pt_3);
875 871
 
876
-    //plan_bed_level_matrix.debug("bed level before");
877
-    //vector_3 uncorrected_position = plan_get_position_mm();
878
-    //uncorrected_position.debug("position before");
872
+    vector_3 from_2_to_1 = (pt1 - pt2).get_normal();
873
+    vector_3 from_2_to_3 = (pt3 - pt2).get_normal();
874
+    vector_3 planeNormal = vector_3::cross(from_2_to_1, from_2_to_3).get_normal();
875
+    planeNormal = vector_3(planeNormal.x, planeNormal.y, abs(planeNormal.z));
879 876
 
880
-    // and set our bed level equation to do the right thing
881
-    //plan_bed_level_matrix.debug("bed level after");
877
+    plan_bed_level_matrix = matrix_3x3::create_look_at(planeNormal);
882 878
 
883 879
     vector_3 corrected_position = plan_get_position();
884
-    //corrected_position.debug("position after");
885 880
     current_position[X_AXIS] = corrected_position.x;
886 881
     current_position[Y_AXIS] = corrected_position.y;
887 882
     current_position[Z_AXIS] = corrected_position.z;
888 883
 
889
-    // but the bed at 0 so we don't go below it.
884
+    // put the bed at 0 so we don't go below it.
890 885
     current_position[Z_AXIS] = zprobe_zoffset;
891 886
 
892 887
     plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
888
+
893 889
 }
894
-#endif // ACCURATE_BED_LEVELING
890
+
891
+#endif // AUTO_BED_LEVELING_GRID
895 892
 
896 893
 static void run_z_probe() {
897 894
     plan_bed_level_matrix.set_to_identity();
@@ -1098,6 +1095,42 @@ void refresh_cmd_timeout(void)
1098 1095
   previous_millis_cmd = millis();
1099 1096
 }
1100 1097
 
1098
+#ifdef FWRETRACT
1099
+  void retract(bool retracting) {
1100
+    if(retracting && !retracted) {
1101
+      destination[X_AXIS]=current_position[X_AXIS];
1102
+      destination[Y_AXIS]=current_position[Y_AXIS];
1103
+      destination[Z_AXIS]=current_position[Z_AXIS];
1104
+      destination[E_AXIS]=current_position[E_AXIS];
1105
+      current_position[E_AXIS]+=retract_length/volumetric_multiplier[active_extruder];
1106
+      plan_set_e_position(current_position[E_AXIS]);
1107
+      float oldFeedrate = feedrate;
1108
+      feedrate=retract_feedrate;
1109
+      retracted=true;
1110
+      prepare_move();
1111
+      current_position[Z_AXIS]-=retract_zlift;
1112
+      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
1113
+      prepare_move();
1114
+      feedrate = oldFeedrate;
1115
+    } else if(!retracting && retracted) {
1116
+      destination[X_AXIS]=current_position[X_AXIS];
1117
+      destination[Y_AXIS]=current_position[Y_AXIS];
1118
+      destination[Z_AXIS]=current_position[Z_AXIS];
1119
+      destination[E_AXIS]=current_position[E_AXIS];
1120
+      current_position[Z_AXIS]+=retract_zlift;
1121
+      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
1122
+      //prepare_move();
1123
+      current_position[E_AXIS]-=(retract_length+retract_recover_length)/volumetric_multiplier[active_extruder]; 
1124
+      plan_set_e_position(current_position[E_AXIS]);
1125
+      float oldFeedrate = feedrate;
1126
+      feedrate=retract_recover_feedrate;
1127
+      retracted=false;
1128
+      prepare_move();
1129
+      feedrate = oldFeedrate;
1130
+    }
1131
+  } //retract
1132
+#endif //FWRETRACT
1133
+
1101 1134
 void process_commands()
1102 1135
 {
1103 1136
   unsigned long codenum; //throw away variable
@@ -1113,6 +1146,18 @@ void process_commands()
1113 1146
     case 1: // G1
1114 1147
       if(Stopped == false) {
1115 1148
         get_coordinates(); // For X Y Z E F
1149
+          #ifdef FWRETRACT
1150
+            if(autoretract_enabled)
1151
+            if( !(code_seen('X') || code_seen('Y') || code_seen('Z')) && code_seen('E')) {
1152
+              float echange=destination[E_AXIS]-current_position[E_AXIS];
1153
+              if((echange<-MIN_RETRACT && !retracted) || (echange>MIN_RETRACT && retracted)) { //move appears to be an attempt to retract or recover
1154
+                  current_position[E_AXIS] = destination[E_AXIS]; //hide the slicer-generated retract/recover from calculations
1155
+                  plan_set_e_position(current_position[E_AXIS]); //AND from the planner
1156
+                  retract(!retracted);
1157
+                  return;
1158
+              }
1159
+            }
1160
+          #endif //FWRETRACT
1116 1161
         prepare_move();
1117 1162
         //ClearToSend();
1118 1163
         return;
@@ -1147,39 +1192,10 @@ void process_commands()
1147 1192
       break;
1148 1193
       #ifdef FWRETRACT
1149 1194
       case 10: // G10 retract
1150
-      if(!retracted)
1151
-      {
1152
-        destination[X_AXIS]=current_position[X_AXIS];
1153
-        destination[Y_AXIS]=current_position[Y_AXIS];
1154
-        destination[Z_AXIS]=current_position[Z_AXIS];
1155
-        current_position[Z_AXIS]-=retract_zlift;
1156
-        destination[E_AXIS]=current_position[E_AXIS];
1157
-        current_position[E_AXIS]+=retract_length/volumetric_multiplier[active_extruder];
1158
-        plan_set_e_position(current_position[E_AXIS]);
1159
-        float oldFeedrate = feedrate;
1160
-        feedrate=retract_feedrate;
1161
-        retracted=true;
1162
-        prepare_move();
1163
-        feedrate = oldFeedrate;
1164
-      }
1165
-
1195
+        retract(true);
1166 1196
       break;
1167 1197
       case 11: // G11 retract_recover
1168
-      if(retracted)
1169
-      {
1170
-        destination[X_AXIS]=current_position[X_AXIS];
1171
-        destination[Y_AXIS]=current_position[Y_AXIS];
1172
-        destination[Z_AXIS]=current_position[Z_AXIS];
1173
-        current_position[Z_AXIS]+=retract_zlift;
1174
-        destination[E_AXIS]=current_position[E_AXIS];
1175
-        current_position[E_AXIS]-=(retract_length+retract_recover_length)/volumetric_multiplier[active_extruder]; 
1176
-        plan_set_e_position(current_position[E_AXIS]);
1177
-        float oldFeedrate = feedrate;
1178
-        feedrate=retract_recover_feedrate;
1179
-        retracted=false;
1180
-        prepare_move();
1181
-        feedrate = oldFeedrate;
1182
-      }
1198
+        retract(false);
1183 1199
       break;
1184 1200
       #endif //FWRETRACT
1185 1201
     case 28: //G28 Home all Axis one at a time
@@ -1232,7 +1248,7 @@ void process_commands()
1232 1248
 
1233 1249
 #else // NOT DELTA
1234 1250
 
1235
-      home_all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2])));
1251
+      home_all_axis = !((code_seen(axis_codes[X_AXIS])) || (code_seen(axis_codes[Y_AXIS])) || (code_seen(axis_codes[Z_AXIS])));
1236 1252
 
1237 1253
       #if Z_HOME_DIR > 0                      // If homing away from BED do Z first
1238 1254
       if((home_all_axis) || (code_seen(axis_codes[Z_AXIS]))) {
@@ -1394,12 +1410,21 @@ void process_commands()
1394 1410
       break;
1395 1411
 
1396 1412
 #ifdef ENABLE_AUTO_BED_LEVELING
1397
-    case 29: // G29 Detailed Z-Probe, probes the bed at 3 points.
1413
+    case 29: // G29 Detailed Z-Probe, probes the bed at 3 or more points.
1398 1414
         {
1399 1415
             #if Z_MIN_PIN == -1
1400 1416
             #error "You must have a Z_MIN endstop in order to enable Auto Bed Leveling feature!!! Z_MIN_PIN must point to a valid hardware pin."
1401 1417
             #endif
1402 1418
 
1419
+            // Prevent user from running a G29 without first homing in X and Y
1420
+            if (! (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) )
1421
+            {
1422
+                LCD_MESSAGEPGM(MSG_POSITION_UNKNOWN);
1423
+                SERIAL_ECHO_START;
1424
+                SERIAL_ECHOLNPGM(MSG_POSITION_UNKNOWN);
1425
+                break; // abort G29, since we don't know where we are
1426
+            }
1427
+
1403 1428
             st_synchronize();
1404 1429
             // make sure the bed_level_rotation_matrix is identity or the planner will get it incorectly
1405 1430
             //vector_3 corrected_position = plan_get_position_mm();
@@ -1414,10 +1439,11 @@ void process_commands()
1414 1439
             setup_for_endstop_move();
1415 1440
 
1416 1441
             feedrate = homing_feedrate[Z_AXIS];
1417
-#ifdef ACCURATE_BED_LEVELING
1442
+#ifdef AUTO_BED_LEVELING_GRID
1443
+            // probe at the points of a lattice grid
1418 1444
 
1419
-            int xGridSpacing = (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION) / (ACCURATE_BED_LEVELING_POINTS-1);
1420
-            int yGridSpacing = (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION) / (ACCURATE_BED_LEVELING_POINTS-1);
1445
+            int xGridSpacing = (RIGHT_PROBE_BED_POSITION - LEFT_PROBE_BED_POSITION) / (AUTO_BED_LEVELING_GRID_POINTS-1);
1446
+            int yGridSpacing = (BACK_PROBE_BED_POSITION - FRONT_PROBE_BED_POSITION) / (AUTO_BED_LEVELING_GRID_POINTS-1);
1421 1447
 
1422 1448
 
1423 1449
             // solve the plane equation ax + by + d = z
@@ -1427,9 +1453,9 @@ void process_commands()
1427 1453
             // so Vx = -a Vy = -b Vz = 1 (we want the vector facing towards positive Z
1428 1454
 
1429 1455
             // "A" matrix of the linear system of equations
1430
-            double eqnAMatrix[ACCURATE_BED_LEVELING_POINTS*ACCURATE_BED_LEVELING_POINTS*3];
1456
+            double eqnAMatrix[AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS*3];
1431 1457
             // "B" vector of Z points
1432
-            double eqnBVector[ACCURATE_BED_LEVELING_POINTS*ACCURATE_BED_LEVELING_POINTS];
1458
+            double eqnBVector[AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS];
1433 1459
 
1434 1460
 
1435 1461
             int probePointCounter = 0;
@@ -1452,7 +1478,7 @@ void process_commands()
1452 1478
                 zig = true;
1453 1479
               }
1454 1480
 
1455
-              for (int xCount=0; xCount < ACCURATE_BED_LEVELING_POINTS; xCount++)
1481
+              for (int xCount=0; xCount < AUTO_BED_LEVELING_GRID_POINTS; xCount++)
1456 1482
               {
1457 1483
                 float z_before;
1458 1484
                 if (probePointCounter == 0)
@@ -1469,9 +1495,9 @@ void process_commands()
1469 1495
 
1470 1496
                 eqnBVector[probePointCounter] = measured_z;
1471 1497
 
1472
-                eqnAMatrix[probePointCounter + 0*ACCURATE_BED_LEVELING_POINTS*ACCURATE_BED_LEVELING_POINTS] = xProbe;
1473
-                eqnAMatrix[probePointCounter + 1*ACCURATE_BED_LEVELING_POINTS*ACCURATE_BED_LEVELING_POINTS] = yProbe;
1474
-                eqnAMatrix[probePointCounter + 2*ACCURATE_BED_LEVELING_POINTS*ACCURATE_BED_LEVELING_POINTS] = 1;
1498
+                eqnAMatrix[probePointCounter + 0*AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS] = xProbe;
1499
+                eqnAMatrix[probePointCounter + 1*AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS] = yProbe;
1500
+                eqnAMatrix[probePointCounter + 2*AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS] = 1;
1475 1501
                 probePointCounter++;
1476 1502
                 xProbe += xInc;
1477 1503
               }
@@ -1479,7 +1505,7 @@ void process_commands()
1479 1505
             clean_up_after_endstop_move();
1480 1506
 
1481 1507
             // solve lsq problem
1482
-            double *plane_equation_coefficients = qr_solve(ACCURATE_BED_LEVELING_POINTS*ACCURATE_BED_LEVELING_POINTS, 3, eqnAMatrix, eqnBVector);
1508
+            double *plane_equation_coefficients = qr_solve(AUTO_BED_LEVELING_GRID_POINTS*AUTO_BED_LEVELING_GRID_POINTS, 3, eqnAMatrix, eqnBVector);
1483 1509
 
1484 1510
             SERIAL_PROTOCOLPGM("Eqn coefficients: a: ");
1485 1511
             SERIAL_PROTOCOL(plane_equation_coefficients[0]);
@@ -1493,24 +1519,24 @@ void process_commands()
1493 1519
 
1494 1520
             free(plane_equation_coefficients);
1495 1521
 
1496
-#else // ACCURATE_BED_LEVELING not defined
1497
-
1522
+#else // AUTO_BED_LEVELING_GRID not defined
1498 1523
 
1499
-            // prob 1
1500
-            float z_at_xLeft_yBack = probe_pt(LEFT_PROBE_BED_POSITION, BACK_PROBE_BED_POSITION, Z_RAISE_BEFORE_PROBING);
1524
+            // Probe at 3 arbitrary points
1525
+            // probe 1
1526
+            float z_at_pt_1 = probe_pt(ABL_PROBE_PT_1_X, ABL_PROBE_PT_1_Y, Z_RAISE_BEFORE_PROBING);
1501 1527
 
1502
-            // prob 2
1503
-            float z_at_xLeft_yFront = probe_pt(LEFT_PROBE_BED_POSITION, FRONT_PROBE_BED_POSITION, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1528
+            // probe 2
1529
+            float z_at_pt_2 = probe_pt(ABL_PROBE_PT_2_X, ABL_PROBE_PT_2_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1504 1530
 
1505
-            // prob 3
1506
-            float z_at_xRight_yFront = probe_pt(RIGHT_PROBE_BED_POSITION, FRONT_PROBE_BED_POSITION, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1531
+            // probe 3
1532
+            float z_at_pt_3 = probe_pt(ABL_PROBE_PT_3_X, ABL_PROBE_PT_3_Y, current_position[Z_AXIS] + Z_RAISE_BETWEEN_PROBINGS);
1507 1533
 
1508 1534
             clean_up_after_endstop_move();
1509 1535
 
1510
-            set_bed_level_equation(z_at_xLeft_yFront, z_at_xRight_yFront, z_at_xLeft_yBack);
1536
+            set_bed_level_equation_3pts(z_at_pt_1, z_at_pt_2, z_at_pt_3);
1511 1537
 
1512 1538
 
1513
-#endif // ACCURATE_BED_LEVELING
1539
+#endif // AUTO_BED_LEVELING_GRID
1514 1540
             st_synchronize();
1515 1541
 
1516 1542
             // The following code correct the Z height difference from z-probe position and hotend tip position.
@@ -2079,7 +2105,7 @@ void process_commands()
2079 2105
       }
2080 2106
       else
2081 2107
       {
2082
-        bool all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2]))|| (code_seen(axis_codes[3])));
2108
+        bool all_axis = !((code_seen(axis_codes[X_AXIS])) || (code_seen(axis_codes[Y_AXIS])) || (code_seen(axis_codes[Z_AXIS]))|| (code_seen(axis_codes[E_AXIS])));
2083 2109
         if(all_axis)
2084 2110
         {
2085 2111
           st_synchronize();
@@ -3048,42 +3074,6 @@ void get_coordinates()
3048 3074
     next_feedrate = code_value();
3049 3075
     if(next_feedrate > 0.0) feedrate = next_feedrate;
3050 3076
   }
3051
-  #ifdef FWRETRACT
3052
-  if(autoretract_enabled)
3053
-  if( !(seen[X_AXIS] || seen[Y_AXIS] || seen[Z_AXIS]) && seen[E_AXIS])
3054
-  {
3055
-    float echange=destination[E_AXIS]-current_position[E_AXIS];
3056
-    if(echange<-MIN_RETRACT) //retract
3057
-    {
3058
-      if(!retracted)
3059
-      {
3060
-
3061
-      destination[Z_AXIS]+=retract_zlift; //not sure why chaninging current_position negatively does not work.
3062
-      //if slicer retracted by echange=-1mm and you want to retract 3mm, corrrectede=-2mm additionally
3063
-      float correctede=-echange-retract_length;
3064
-      //to generate the additional steps, not the destination is changed, but inversely the current position
3065
-      current_position[E_AXIS]+=-correctede;
3066
-      feedrate=retract_feedrate;
3067
-      retracted=true;
3068
-      }
3069
-
3070
-    }
3071
-    else
3072
-      if(echange>MIN_RETRACT) //retract_recover
3073
-    {
3074
-      if(retracted)
3075
-      {
3076
-      //current_position[Z_AXIS]+=-retract_zlift;
3077
-      //if slicer retracted_recovered by echange=+1mm and you want to retract_recover 3mm, corrrectede=2mm additionally
3078
-      float correctede=-echange+1*retract_length+retract_recover_length; //total unretract=retract_length+retract_recover_length[surplus]
3079
-      current_position[E_AXIS]+=correctede; //to generate the additional steps, not the destination is changed, but inversely the current position
3080
-      feedrate=retract_recover_feedrate;
3081
-      retracted=false;
3082
-      }
3083
-    }
3084
-
3085
-  }
3086
-  #endif //FWRETRACT
3087 3077
 }
3088 3078
 
3089 3079
 void get_arc_coordinates()

バイナリ
Marlin/Menu Plans.xlsx ファイルの表示


+ 6
- 6
Marlin/Servo.h ファイルの表示

@@ -24,7 +24,7 @@
24 24
 
25 25
   Note that analogWrite of PWM on pins associated with the timer are disabled when the first servo is attached.
26 26
   Timers are seized as needed in groups of 12 servos - 24 servos use two timers, 48 servos will use four.
27
-  The sequence used to sieze timers is defined in timers.h
27
+  The sequence used to seize timers is defined in timers.h
28 28
 
29 29
   The methods are:
30 30
 
@@ -50,7 +50,7 @@
50 50
 /*
51 51
  * Defines for 16 bit timers used with  Servo library
52 52
  *
53
- * If _useTimerX is defined then TimerX is a 16 bit timer on the curent board
53
+ * If _useTimerX is defined then TimerX is a 16 bit timer on the current board
54 54
  * timer16_Sequence_t enumerates the sequence that the timers should be allocated
55 55
  * _Nbr_16timers indicates how many 16 bit timers are available.
56 56
  *
@@ -89,12 +89,12 @@ typedef enum { _timer3, _Nbr_16timers } timer16_Sequence_t ;
89 89
 typedef enum { _Nbr_16timers } timer16_Sequence_t ;
90 90
 #endif
91 91
 
92
-#define Servo_VERSION           2      // software version of this library
92
+#define Servo_VERSION           2     // software version of this library
93 93
 
94 94
 #define MIN_PULSE_WIDTH       544     // the shortest pulse sent to a servo
95 95
 #define MAX_PULSE_WIDTH      2400     // the longest pulse sent to a servo
96 96
 #define DEFAULT_PULSE_WIDTH  1500     // default pulse width when servo is attached
97
-#define REFRESH_INTERVAL    20000     // minumim time to refresh servos in microseconds
97
+#define REFRESH_INTERVAL    20000     // minimum time to refresh servos in microseconds
98 98
 
99 99
 #define SERVOS_PER_TIMER       12     // the maximum number of servos controlled by one timer
100 100
 #define MAX_SERVOS   (_Nbr_16timers  * SERVOS_PER_TIMER)
@@ -118,13 +118,13 @@ public:
118 118
   uint8_t attach(int pin);           // attach the given pin to the next free channel, sets pinMode, returns channel number or 0 if failure
119 119
   uint8_t attach(int pin, int min, int max); // as above but also sets min and max values for writes.
120 120
   void detach();
121
-  void write(int value);             // if value is < 200 its treated as an angle, otherwise as pulse width in microseconds
121
+  void write(int value);             // if value is < 200 it is treated as an angle, otherwise as pulse width in microseconds
122 122
   void writeMicroseconds(int value); // Write pulse width in microseconds
123 123
   int read();                        // returns current pulse width as an angle between 0 and 180 degrees
124 124
   int readMicroseconds();            // returns current pulse width in microseconds for this servo (was read_us() in first release)
125 125
   bool attached();                   // return true if this servo is attached, otherwise false
126 126
 #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
127
-  int pin;                           // store the hw pin of the servo
127
+  int pin;                           // store the hardware pin of the servo
128 128
 #endif
129 129
 private:
130 130
    uint8_t servoIndex;               // index into the channel data for this servo

+ 1
- 1
Marlin/fastio.h ファイルの表示

@@ -1,5 +1,5 @@
1 1
 /*
2
-  This code contibuted by Triffid_Hunter and modified by Kliment
2
+  This code contributed by Triffid_Hunter and modified by Kliment
3 3
   why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
4 4
 */
5 5
 

+ 222
- 40
Marlin/language.h ファイルの表示

@@ -17,6 +17,7 @@
17 17
 // 8  Portuguese
18 18
 // 9  Finnish
19 19
 // 10 Aragonese
20
+// 11 Dutch
20 21
 
21 22
 #ifndef LANGUAGE_CHOICE
22 23
 	#define LANGUAGE_CHOICE 1  // Pick your language from the list above
@@ -40,7 +41,7 @@
40 41
 		#define MACHINE_NAME "Mendel"
41 42
 	#endif
42 43
 
43
-// Default firmware set to Mendel	
44
+// Default firmware set to Mendel
44 45
 	#define FIRMWARE_URL "https://github.com/ErikZalm/Marlin/"
45 46
 #endif
46 47
 
@@ -156,11 +157,11 @@
156 157
 	#define MSG_CONTROL_RETRACT_RECOVERF "UnRet  F"
157 158
 	#define MSG_AUTORETRACT "AutoRetr."
158 159
 	#define MSG_FILAMENTCHANGE "Change filament"
159
-	#define MSG_INIT_SDCARD "Init. SD card"	
160
+	#define MSG_INIT_SDCARD "Init. SD card"
160 161
 	#define MSG_CNG_SDCARD "Change SD card"
161
-    #define MSG_ZPROBE_OUT "Z probe out. bed"
162
-    #define MSG_POSITION_UNKNOWN "Home X/Y before Z"
163
-    #define MSG_ZPROBE_ZOFFSET "Z Offset"
162
+	#define MSG_ZPROBE_OUT "Z probe out. bed"
163
+	#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
164
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
164 165
 	#define MSG_BABYSTEP_X "Babystep X"
165 166
 	#define MSG_BABYSTEP_Y "Babystep Y"
166 167
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -343,9 +344,9 @@
343 344
 	#define MSG_FILAMENTCHANGE "Zmien filament"
344 345
 	#define MSG_INIT_SDCARD "Inicjal. karty SD"
345 346
 	#define MSG_CNG_SDCARD "Zmiana karty SD"
346
-    #define MSG_ZPROBE_OUT "Sonda Z za lozem"
347
-    #define MSG_POSITION_UNKNOWN "Wroc w XY przed Z"
348
-    #define MSG_ZPROBE_ZOFFSET "Offset Z"
347
+	#define MSG_ZPROBE_OUT "Sonda Z za lozem"
348
+	#define MSG_POSITION_UNKNOWN "Wroc w XY przed Z"
349
+	#define MSG_ZPROBE_ZOFFSET "Offset Z"
349 350
 	#define MSG_BABYSTEP_X "Babystep X"
350 351
 	#define MSG_BABYSTEP_Y "Babystep Y"
351 352
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -526,11 +527,11 @@
526 527
 	#define MSG_CONTROL_RETRACT_RECOVERF "UnRet F"
527 528
 	#define MSG_AUTORETRACT "Retract. Auto."
528 529
 	#define MSG_FILAMENTCHANGE "Changer filament"
529
-	#define MSG_INIT_SDCARD "Init. la carte SD"	
530
+	#define MSG_INIT_SDCARD "Init. la carte SD"
530 531
 	#define MSG_CNG_SDCARD "Changer de carte"
531
-    #define MSG_ZPROBE_OUT "Z sonde exte. lit"
532
-    #define MSG_POSITION_UNKNOWN "Rev. dans XY av.Z"
533
-    #define MSG_ZPROBE_ZOFFSET "Offset Z"
532
+	#define MSG_ZPROBE_OUT "Z sonde exte. lit"
533
+	#define MSG_POSITION_UNKNOWN "Rev. dans XY av.Z"
534
+	#define MSG_ZPROBE_ZOFFSET "Offset Z"
534 535
 	#define MSG_BABYSTEP_X "Babystep X"
535 536
 	#define MSG_BABYSTEP_Y "Babystep Y"
536 537
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -611,7 +612,7 @@
611 612
 	#define MSG_BABYSTEPPING_Y "Babystepping Y"
612 613
 	#define MSG_BABYSTEPPING_Z "Babystepping Z"
613 614
 	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Error in menu structure"
614
-	
615
+
615 616
 #endif
616 617
 
617 618
 
@@ -698,7 +699,7 @@
698 699
 	#define MSG_STOP_PRINT       "Druck stoppen"
699 700
 	#define MSG_CARD_MENU        "SDKarten Menü"
700 701
 	#define MSG_NO_CARD          "Keine SDKarte"
701
-	#define MSG_DWELL            "Warten..."		
702
+	#define MSG_DWELL            "Warten..."
702 703
 	#define MSG_USERWAIT         "Warte auf Nutzer"
703 704
 	#define MSG_RESUMING         "Druck fortsetzung"
704 705
 	#define MSG_NO_MOVE          "Kein Zug."
@@ -712,17 +713,17 @@
712 713
 	#define MSG_CONTROL_RETRACT_RECOVERF "UnRet  F"
713 714
 	#define MSG_AUTORETRACT      "AutoRetr."
714 715
 	#define MSG_FILAMENTCHANGE "Filament wechseln"
715
-	#define MSG_INIT_SDCARD "Init. SD-Card"	
716
+	#define MSG_INIT_SDCARD "Init. SD-Card"
716 717
 	#define MSG_CNG_SDCARD "Change SD-Card"
717
-    #define MSG_ZPROBE_OUT "Z probe out. bed"
718
-    #define MSG_POSITION_UNKNOWN "Home X/Y before Z"
719
-    #define MSG_ZPROBE_ZOFFSET "Z Offset"
718
+	#define MSG_ZPROBE_OUT "Z probe out. bed"
719
+	#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
720
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
720 721
 	#define MSG_BABYSTEP_X "Babystep X"
721 722
 	#define MSG_BABYSTEP_Y "Babystep Y"
722 723
 	#define MSG_BABYSTEP_Z "Babystep Z"
723 724
 	#define MSG_ENDSTOP_ABORT "Endstop abort"
724 725
 	#define MSG_CONTRAST "Contrast"
725
-	
726
+
726 727
 // Serial Console Messages
727 728
 
728 729
 	#define MSG_Enqueing "enqueing \""
@@ -905,9 +906,9 @@
905 906
 	#define MSG_CONTROL_ARROW "Control"
906 907
 	#define MSG_RETRACT_ARROW "Retraer"
907 908
 	#define MSG_STEPPER_RELEASED "Desacoplada."
908
-    #define MSG_ZPROBE_OUT "Z probe out. bed"
909
-    #define MSG_POSITION_UNKNOWN "Home X/Y before Z"
910
-    #define MSG_ZPROBE_ZOFFSET "Z Offset"
909
+	#define MSG_ZPROBE_OUT "Z probe out. bed"
910
+	#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
911
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
911 912
 	#define MSG_BABYSTEP_X "Babystep X"
912 913
 	#define MSG_BABYSTEP_Y "Babystep Y"
913 914
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -1085,11 +1086,11 @@
1085 1086
 	#define MSG_CONTROL_RETRACT_RECOVERF		"Возврат  F:"
1086 1087
 	#define MSG_AUTORETRACT						"АвтоОткат:"
1087 1088
 	#define MSG_FILAMENTCHANGE 					"Change filament"
1088
-	#define MSG_INIT_SDCARD 					"Init. SD-Card"	
1089
+	#define MSG_INIT_SDCARD 					"Init. SD-Card"
1089 1090
 	#define MSG_CNG_SDCARD 						"Change SD-Card"
1090
-    #define MSG_ZPROBE_OUT 						"Z probe out. bed"
1091
-    #define MSG_POSITION_UNKNOWN 				"Home X/Y before Z"
1092
-    #define MSG_ZPROBE_ZOFFSET 					"Z Offset"
1091
+	#define MSG_ZPROBE_OUT 						"Z probe out. bed"
1092
+	#define MSG_POSITION_UNKNOWN 				"Home X/Y before Z"
1093
+	#define MSG_ZPROBE_ZOFFSET 					"Z Offset"
1093 1094
 	#define MSG_BABYSTEP_X 						"Babystep X"
1094 1095
 	#define MSG_BABYSTEP_Y 						"Babystep Y"
1095 1096
 	#define MSG_BABYSTEP_Z 						"Babystep Z"
@@ -1268,9 +1269,9 @@
1268 1269
 	#define MSG_FILAMENTCHANGE       "Cambia filamento"
1269 1270
 	#define MSG_INIT_SDCARD          "Iniz. SD-Card"
1270 1271
 	#define MSG_CNG_SDCARD           "Cambia SD-Card"
1271
-    #define MSG_ZPROBE_OUT "Z probe out. bed"
1272
-    #define MSG_POSITION_UNKNOWN "Home X/Y before Z"
1273
-    #define MSG_ZPROBE_ZOFFSET "Z Offset"
1272
+	#define MSG_ZPROBE_OUT "Z probe out. bed"
1273
+	#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
1274
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
1274 1275
 	#define MSG_BABYSTEP_X "Babystep X"
1275 1276
 	#define MSG_BABYSTEP_Y "Babystep Y"
1276 1277
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -1455,11 +1456,11 @@
1455 1456
 	#define MSG_CONTROL_RETRACT_RECOVERF " DesRet  F:"
1456 1457
 	#define MSG_AUTORETRACT " AutoRetr.:"
1457 1458
 	#define MSG_FILAMENTCHANGE "Change filament"
1458
-	#define MSG_INIT_SDCARD "Init. SD-Card"	
1459
+	#define MSG_INIT_SDCARD "Init. SD-Card"
1459 1460
 	#define MSG_CNG_SDCARD "Change SD-Card"
1460
-    #define MSG_ZPROBE_OUT "Son. fora da mesa"
1461
-    #define MSG_POSITION_UNKNOWN "XY antes de Z"
1462
-    #define MSG_ZPROBE_ZOFFSET "Z Offset"
1461
+	#define MSG_ZPROBE_OUT "Son. fora da mesa"
1462
+	#define MSG_POSITION_UNKNOWN "XY antes de Z"
1463
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
1463 1464
 	#define MSG_BABYSTEP_X "Babystep X"
1464 1465
 	#define MSG_BABYSTEP_Y "Babystep Y"
1465 1466
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -1639,11 +1640,11 @@
1639 1640
 	#define MSG_CONTROL_RETRACT_RECOVERF "UnRet  F"
1640 1641
 	#define MSG_AUTORETRACT "AutoVeto."
1641 1642
 	#define MSG_FILAMENTCHANGE "Change filament"
1642
-	#define MSG_INIT_SDCARD "Init. SD-Card"	
1643
+	#define MSG_INIT_SDCARD "Init. SD-Card"
1643 1644
 	#define MSG_CNG_SDCARD "Change SD-Card"
1644
-    #define MSG_ZPROBE_OUT "Z probe out. bed"
1645
-    #define MSG_POSITION_UNKNOWN "Home X/Y before Z"
1646
-    #define MSG_ZPROBE_ZOFFSET "Z Offset"
1645
+	#define MSG_ZPROBE_OUT "Z probe out. bed"
1646
+	#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
1647
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
1647 1648
 	#define MSG_BABYSTEP_X "Babystep X"
1648 1649
 	#define MSG_BABYSTEP_Y "Babystep Y"
1649 1650
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -1833,9 +1834,9 @@
1833 1834
 	#define MSG_CONTROL_ARROW "Control"
1834 1835
 	#define MSG_RETRACT_ARROW "Retraer"
1835 1836
 	#define MSG_STEPPER_RELEASED "Desacoplada."
1836
-    #define MSG_ZPROBE_OUT "Z probe out. bed"
1837
-    #define MSG_POSITION_UNKNOWN "Home X/Y before Z"
1838
-    #define MSG_ZPROBE_ZOFFSET "Z Offset"
1837
+	#define MSG_ZPROBE_OUT "Z probe out. bed"
1838
+	#define MSG_POSITION_UNKNOWN "Home X/Y before Z"
1839
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
1839 1840
 	#define MSG_BABYSTEP_X "Babystep X"
1840 1841
 	#define MSG_BABYSTEP_Y "Babystep Y"
1841 1842
 	#define MSG_BABYSTEP_Z "Babystep Z"
@@ -1918,4 +1919,185 @@
1918 1919
 
1919 1920
 #endif
1920 1921
 
1922
+#if LANGUAGE_CHOICE == 11 //Dutch
1923
+
1924
+// LCD Menu Messages
1925
+// Please note these are limited to 17 characters!
1926
+
1927
+	#define WELCOME_MSG MACHINE_NAME " gereed."
1928
+	#define MSG_SD_INSERTED "Kaart ingestoken"
1929
+	#define MSG_SD_REMOVED "Kaart verwijderd"
1930
+	#define MSG_MAIN "Main"
1931
+	#define MSG_AUTOSTART "Autostart"
1932
+	#define MSG_DISABLE_STEPPERS "Motoren uit"
1933
+	#define MSG_AUTO_HOME "Auto home"
1934
+	#define MSG_SET_ORIGIN "Nulpunt instellen"
1935
+	#define MSG_PREHEAT_PLA "PLA voorverwarmen"
1936
+	#define MSG_PREHEAT_PLA_SETTINGS "PLA verw. conf"
1937
+	#define MSG_PREHEAT_ABS "ABS voorverwarmen"
1938
+	#define MSG_PREHEAT_ABS_SETTINGS "ABS verw. conf"
1939
+	#define MSG_COOLDOWN "Afkoelen"
1940
+	#define MSG_SWITCH_PS_ON "Stroom aan"
1941
+	#define MSG_SWITCH_PS_OFF "Stroom uit"
1942
+	#define MSG_EXTRUDE "Extrude"
1943
+	#define MSG_RETRACT "Retract"
1944
+	#define MSG_MOVE_AXIS "As verplaatsen"
1945
+	#define MSG_MOVE_X "Verplaats X"
1946
+	#define MSG_MOVE_Y "Verplaats Y"
1947
+	#define MSG_MOVE_Z "Verplaats Z"
1948
+	#define MSG_MOVE_E "Extruder"
1949
+	#define MSG_MOVE_01MM "Verplaats 0.1mm"
1950
+	#define MSG_MOVE_1MM "Verplaats 1mm"
1951
+	#define MSG_MOVE_10MM "Verplaats 10mm"
1952
+	#define MSG_SPEED "Snelheid"
1953
+	#define MSG_NOZZLE "Nozzle"
1954
+	#define MSG_NOZZLE1 "Nozzle2"
1955
+	#define MSG_NOZZLE2 "Nozzle3"
1956
+	#define MSG_BED "Bed"
1957
+	#define MSG_FAN_SPEED "Fan snelheid"
1958
+	#define MSG_FLOW "Flow"
1959
+	#define MSG_CONTROL "Control"
1960
+	#define MSG_MIN " \002 Min"
1961
+	#define MSG_MAX " \002 Max"
1962
+	#define MSG_FACTOR " \002 Fact"
1963
+	#define MSG_AUTOTEMP "Autotemp"
1964
+	#define MSG_ON "Aan "
1965
+	#define MSG_OFF "Uit"
1966
+	#define MSG_PID_P "PID-P"
1967
+	#define MSG_PID_I "PID-I"
1968
+	#define MSG_PID_D "PID-D"
1969
+	#define MSG_PID_C "PID-C"
1970
+	#define MSG_ACC  "Versn"
1971
+	#define MSG_VXY_JERK "Vxy-jerk"
1972
+	#define MSG_VZ_JERK "Vz-jerk"
1973
+	#define MSG_VE_JERK "Ve-jerk"
1974
+	#define MSG_VMAX "Vmax "
1975
+	#define MSG_X "x"
1976
+	#define MSG_Y "y"
1977
+	#define MSG_Z "z"
1978
+	#define MSG_E "e"
1979
+	#define MSG_VMIN "Vmin"
1980
+	#define MSG_VTRAV_MIN "VTrav min"
1981
+	#define MSG_AMAX "Amax "
1982
+	#define MSG_A_RETRACT "A-retract"
1983
+	#define MSG_XSTEPS "Xsteps/mm"
1984
+	#define MSG_YSTEPS "Ysteps/mm"
1985
+	#define MSG_ZSTEPS "Zsteps/mm"
1986
+	#define MSG_ESTEPS "Esteps/mm"
1987
+	#define MSG_RECTRACT "Terugtrekken"
1988
+	#define MSG_TEMPERATURE "Temperatuur"
1989
+	#define MSG_MOTION "Beweging"
1990
+	#define MSG_CONTRAST "LCD contrast"
1991
+	#define MSG_STORE_EPROM "Geheugen opslaan"
1992
+	#define MSG_LOAD_EPROM "Geheugen laden"
1993
+	#define MSG_RESTORE_FAILSAFE "Noodstop reset"
1994
+	#define MSG_REFRESH "Ververs"
1995
+	#define MSG_WATCH "Info scherm"
1996
+	#define MSG_PREPARE "Voorbereiden"
1997
+	#define MSG_TUNE "Afstellen"
1998
+	#define MSG_PAUSE_PRINT "Print pauzeren"
1999
+	#define MSG_RESUME_PRINT "Print hervatten"
2000
+	#define MSG_STOP_PRINT "Print stoppen"
2001
+	#define MSG_CARD_MENU "Print van SD"
2002
+	#define MSG_NO_CARD "Geen SD kaart"
2003
+	#define MSG_DWELL "Slapen..."
2004
+	#define MSG_USERWAIT "Wachten..."
2005
+	#define MSG_RESUMING "Print hervatten"
2006
+	#define MSG_NO_MOVE "Geen beweging."
2007
+	#define MSG_KILLED "AFGEBROKEN. "
2008
+	#define MSG_STOPPED "GESTOPT. "
2009
+	#define MSG_CONTROL_RETRACT  "Retract mm"
2010
+	#define MSG_CONTROL_RETRACTF "Retract  F"
2011
+	#define MSG_CONTROL_RETRACT_ZLIFT "Hop mm"
2012
+	#define MSG_CONTROL_RETRACT_RECOVER "UnRet +mm"
2013
+	#define MSG_CONTROL_RETRACT_RECOVERF "UnRet  F"
2014
+	#define MSG_AUTORETRACT "AutoRetr."
2015
+	#define MSG_FILAMENTCHANGE "Verv. Filament"
2016
+	#define MSG_INIT_SDCARD "Init. SD kaart"
2017
+	#define MSG_CNG_SDCARD "Verv. SD card"
2018
+	#define MSG_ZPROBE_OUT "Z probe uit. bed"
2019
+	#define MSG_POSITION_UNKNOWN "Home X/Y voor Z"
2020
+	#define MSG_ZPROBE_ZOFFSET "Z Offset"
2021
+	#define MSG_BABYSTEP_X "Babystap X"
2022
+	#define MSG_BABYSTEP_Y "Babystap Y"
2023
+	#define MSG_BABYSTEP_Z "Babystap Z"
2024
+	#define MSG_ENDSTOP_ABORT "Endstop afbr."
2025
+
2026
+// Serial Console Messages
2027
+
2028
+	#define MSG_Enqueing "enqueing \""
2029
+	#define MSG_POWERUP "Opstarten"
2030
+	#define MSG_EXTERNAL_RESET " Externe Reset"
2031
+	#define MSG_BROWNOUT_RESET " Lage voedingsspanning Reset"
2032
+	#define MSG_WATCHDOG_RESET " Watchdog Reset"
2033
+	#define MSG_SOFTWARE_RESET " Software Reset"
2034
+	#define MSG_AUTHOR " | Auteur: "
2035
+	#define MSG_CONFIGURATION_VER " Laatst bijgewerkt: "
2036
+	#define MSG_FREE_MEMORY " Vrij Geheugen: "
2037
+	#define MSG_PLANNER_BUFFER_BYTES "  PlannerBufferBytes: "
2038
+	#define MSG_OK "ok"
2039
+	#define MSG_FILE_SAVED "Bestand opslaan voltooid."
2040
+	#define MSG_ERR_LINE_NO "Regelnummer is niet het laatste regelnummer+1, Laatste regel: "
2041
+	#define MSG_ERR_CHECKSUM_MISMATCH "Checksum fout, Laatste regel: "
2042
+	#define MSG_ERR_NO_CHECKSUM "Regel zonder checksum, Laatste regel: "
2043
+	#define MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM "Geen regelnummer met checksum, Laatste regel: "
2044
+	#define MSG_FILE_PRINTED "Bestand afdrukken klaar"
2045
+	#define MSG_BEGIN_FILE_LIST "Begin bestandslijst"
2046
+	#define MSG_END_FILE_LIST "Einde bestandslijst"
2047
+	#define MSG_M104_INVALID_EXTRUDER "M104 Ongeldige extruder "
2048
+	#define MSG_M105_INVALID_EXTRUDER "M105 Ongeldige extruder "
2049
+	#define MSG_M200_INVALID_EXTRUDER "M200 Ongeldige extruder "
2050
+	#define MSG_M218_INVALID_EXTRUDER "M218 Ongeldige extruder "
2051
+	#define MSG_ERR_NO_THERMISTORS "Geen thermistors - geen temperatuur"
2052
+	#define MSG_M109_INVALID_EXTRUDER "M109 Ongeldige extruder "
2053
+	#define MSG_HEATING "Opwarmen..."
2054
+	#define MSG_HEATING_COMPLETE "Opwarmen klaar."
2055
+	#define MSG_BED_HEATING "Bed opwarmen."
2056
+	#define MSG_BED_DONE "Bed klaar."
2057
+	#define MSG_M115_REPORT "FIRMWARE_NAME:Marlin V1; Sprinter/grbl mashup voor gen6 FIRMWARE_URL:" FIRMWARE_URL " PROTOCOL_VERSION:" PROTOCOL_VERSION " MACHINE_TYPE:" MACHINE_NAME " EXTRUDER_COUNT:" STRINGIFY(EXTRUDERS) " UUID:" MACHINE_UUID "\n"
2058
+	#define MSG_COUNT_X " Aantal X: "
2059
+	#define MSG_ERR_KILLED "Printer stopgezet. kill() aangeroepen!"
2060
+	#define MSG_ERR_STOPPED "Printer gestopt vanwege fouten. Los de fout op en gebruik M999 om opnieuw te starten. (Temperatuur is gereset, stel deze opnieuw in na herstart)"
2061
+	#define MSG_RESEND "Opnieuw sturen: "
2062
+	#define MSG_UNKNOWN_COMMAND "Onbekend commando: \""
2063
+	#define MSG_ACTIVE_EXTRUDER "Actieve Extruder: "
2064
+	#define MSG_INVALID_EXTRUDER "Ongeldige extruder"
2065
+	#define MSG_X_MIN "x_min: "
2066
+	#define MSG_X_MAX "x_max: "
2067
+	#define MSG_Y_MIN "y_min: "
2068
+	#define MSG_Y_MAX "y_max: "
2069
+	#define MSG_Z_MIN "z_min: "
2070
+	#define MSG_Z_MAX "z_max: "
2071
+	#define MSG_M119_REPORT "Eindstop statusrapportage:"
2072
+	#define MSG_ENDSTOP_HIT "GERAAKT"
2073
+	#define MSG_ENDSTOP_OPEN "open"
2074
+	#define MSG_HOTEND_OFFSET "Hotend afwijking:"
2075
+
2076
+	#define MSG_SD_CANT_OPEN_SUBDIR "Kan subdirectory niet openen"
2077
+	#define MSG_SD_INIT_FAIL "SD initialiseren mislukt"
2078
+	#define MSG_SD_VOL_INIT_FAIL "volume.init mislukt"
2079
+	#define MSG_SD_OPENROOT_FAIL "openRoot mislukt"
2080
+	#define MSG_SD_CARD_OK "SD kaart ok"
2081
+	#define MSG_SD_WORKDIR_FAIL "workDir openen mislukt"
2082
+	#define MSG_SD_OPEN_FILE_FAIL "Openen mislukt, bestand: "
2083
+	#define MSG_SD_FILE_OPENED "Bestand geopend: "
2084
+	#define MSG_SD_SIZE " Grootte: "
2085
+	#define MSG_SD_FILE_SELECTED "Bestanden geselecteerd:"
2086
+	#define MSG_SD_WRITE_TO_FILE "Schrijven naar bestand: "
2087
+	#define MSG_SD_PRINTING_BYTE "SD printen byte: "
2088
+	#define MSG_SD_NOT_PRINTING "Niet SD printen"
2089
+	#define MSG_SD_ERR_WRITE_TO_FILE "Fout tijdens het schrijven naar bestand:"
2090
+	#define MSG_SD_CANT_ENTER_SUBDIR "Kan subdirectory niet in: "
2091
+
2092
+	#define MSG_STEPPER_TOO_HIGH "stapsnelheid te hoog:"
2093
+	#define MSG_ENDSTOPS_HIT "endstops geraakt: "
2094
+	#define MSG_ERR_COLD_EXTRUDE_STOP " Koude extrusie voorkomen"
2095
+	#define MSG_ERR_LONG_EXTRUDE_STOP " te lange extrusie voorkomen"
2096
+	#define MSG_BABYSTEPPING_X "Babystepping X"
2097
+	#define MSG_BABYSTEPPING_Y "Babystepping Y"
2098
+	#define MSG_BABYSTEPPING_Z "Babystepping Z"
2099
+	#define MSG_SERIAL_ERROR_MENU_STRUCTURE "Fout in menustructuur"
2100
+
2101
+#endif
2102
+
1921 2103
 #endif // ifndef LANGUAGE_H

+ 6
- 5
Marlin/pins.h ファイルの表示

@@ -1781,8 +1781,8 @@
1781 1781
 #define Z_DIR_PIN          28
1782 1782
 #define Z_STOP_PIN         30
1783 1783
 
1784
-#define E_STEP_PIN         17
1785
-#define E_DIR_PIN          21
1784
+#define E0_STEP_PIN         17
1785
+#define E0_DIR_PIN          21
1786 1786
 
1787 1787
 #define LED_PIN            -1
1788 1788
 
@@ -1793,15 +1793,16 @@
1793 1793
 
1794 1794
 #define HEATER_0_PIN       12 // (extruder)
1795 1795
 
1796
-#define HEATER_1_PIN       16 // (bed)
1796
+#define HEATER_BED_PIN     16 // (bed)
1797 1797
 #define X_ENABLE_PIN       19
1798 1798
 #define Y_ENABLE_PIN       24
1799 1799
 #define Z_ENABLE_PIN       29
1800
-#define E_ENABLE_PIN       13
1800
+#define E0_ENABLE_PIN      13
1801 1801
 
1802 1802
 #define TEMP_0_PIN          0   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 33 extruder)
1803
-#define TEMP_1_PIN          5   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)
1803
+#define TEMP_1_PIN         -1   
1804 1804
 #define TEMP_2_PIN         -1
1805
+#define TEMP_BED_PIN        5   // MUST USE ANALOG INPUT NUMBERING NOT DIGITAL OUTPUT NUMBERING!!!!!!!!! (pin 34 bed)  
1805 1806
 #define SDPOWER            -1
1806 1807
 #define SDSS               4
1807 1808
 #define HEATER_2_PIN       -1

+ 4
- 6
Marlin/qr_solve.cpp ファイルの表示

@@ -1,11 +1,9 @@
1 1
 #include "qr_solve.h"
2 2
 
3
-#ifdef ACCURATE_BED_LEVELING
3
+#ifdef AUTO_BED_LEVELING_GRID
4 4
 
5 5
 #include <stdlib.h>
6 6
 #include <math.h>
7
-#include <time.h>
8
-
9 7
 
10 8
 //# include "r8lib.h"
11 9
 
@@ -1173,7 +1171,7 @@ void dqrlss ( double a[], int lda, int m, int n, int kr, double b[], double x[],
1173 1171
 
1174 1172
   Discussion:
1175 1173
 
1176
-    DQRLSS must be preceeded by a call to DQRANK.
1174
+    DQRLSS must be preceded by a call to DQRANK.
1177 1175
 
1178 1176
     The system is to be solved is
1179 1177
       A * X = B
@@ -1225,7 +1223,7 @@ void dqrlss ( double a[], int lda, int m, int n, int kr, double b[], double x[],
1225 1223
     linear system.
1226 1224
 
1227 1225
     Output, double RSD[M], the residual, B - A*X.  RSD may
1228
-    overwite B.
1226
+    overwrite B.
1229 1227
 
1230 1228
     Input, int JPVT[N], the pivot information from DQRANK.
1231 1229
     Columns JPVT[0], ..., JPVT[KR-1] of the original matrix are linearly
@@ -1314,7 +1312,7 @@ int dqrsl ( double a[], int lda, int n, int k, double qraux[], double y[],
1314 1312
     can be replaced by dummy variables in the calling program.
1315 1313
     To save storage, the user may in some cases use the same
1316 1314
     array for different parameters in the calling sequence.  A
1317
-    frequently occuring example is when one wishes to compute
1315
+    frequently occurring example is when one wishes to compute
1318 1316
     any of B, RSD, or AB and does not need Y or QTY.  In this
1319 1317
     case one may identify Y, QTY, and one of B, RSD, or AB, while
1320 1318
     providing separate arrays for anything else that is to be

+ 1
- 1
Marlin/qr_solve.h ファイルの表示

@@ -1,6 +1,6 @@
1 1
 #include "Configuration.h"
2 2
 
3
-#ifdef ACCURATE_BED_LEVELING
3
+#ifdef AUTO_BED_LEVELING_GRID
4 4
 
5 5
 void daxpy ( int n, double da, double dx[], int incx, double dy[], int incy );
6 6
 double ddot ( int n, double dx[], int incx, double dy[], int incy );

+ 2
- 2
Marlin/stepper.h ファイルの表示

@@ -71,8 +71,8 @@ float st_get_position_mm(uint8_t axis);
71 71
 void st_wake_up();
72 72
 
73 73
   
74
-void checkHitEndstops(); //call from somwhere to create an serial error message with the locations the endstops where hit, in case they were triggered
75
-void endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homeing and before a routine call of checkHitEndstops();
74
+void checkHitEndstops(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
75
+void endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homing and before a routine call of checkHitEndstops();
76 76
 
77 77
 void enable_endstops(bool check); // Enable/disable endstop checking
78 78
 

+ 2
- 2
Marlin/temperature.cpp ファイルの表示

@@ -250,7 +250,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
250 250
               Kp = 0.6*Ku;
251 251
               Ki = 2*Kp/Tu;
252 252
               Kd = Kp*Tu/8;
253
-              SERIAL_PROTOCOLLNPGM(" Clasic PID ");
253
+              SERIAL_PROTOCOLLNPGM(" Classic PID ");
254 254
               SERIAL_PROTOCOLPGM(" Kp: "); SERIAL_PROTOCOLLN(Kp);
255 255
               SERIAL_PROTOCOLPGM(" Ki: "); SERIAL_PROTOCOLLN(Ki);
256 256
               SERIAL_PROTOCOLPGM(" Kd: "); SERIAL_PROTOCOLLN(Kd);
@@ -306,7 +306,7 @@ void PID_autotune(float temp, int extruder, int ncycles)
306 306
       return;
307 307
     }
308 308
     if(cycles > ncycles) {
309
-      SERIAL_PROTOCOLLNPGM("PID Autotune finished! Put the Kp, Ki and Kd constants into Configuration.h");
309
+      SERIAL_PROTOCOLLNPGM("PID Autotune finished! Put the last Kp, Ki and Kd constants from above into Configuration.h");
310 310
       return;
311 311
     }
312 312
     lcd_update();

+ 1
- 1
Marlin/temperature.h ファイルの表示

@@ -28,7 +28,7 @@
28 28
 #endif
29 29
 
30 30
 // public functions
31
-void tp_init();  //initialise the heating
31
+void tp_init();  //initialize the heating
32 32
 void manage_heater(); //it is critical that this is called periodically.
33 33
 
34 34
 // low level conversion routines

+ 13
- 13
Marlin/ultralcd.cpp ファイルの表示

@@ -38,7 +38,7 @@ char lcd_status_message[LCD_WIDTH+1] = WELCOME_MSG;
38 38
 #include "ultralcd_implementation_hitachi_HD44780.h"
39 39
 #endif
40 40
 
41
-/** forward declerations **/
41
+/** forward declarations **/
42 42
 
43 43
 void copy_and_scalePID_i();
44 44
 void copy_and_scalePID_d();
@@ -62,9 +62,9 @@ static void lcd_set_contrast();
62 62
 static void lcd_control_retract_menu();
63 63
 static void lcd_sdcard_menu();
64 64
 
65
-static void lcd_quick_feedback();//Cause an LCD refresh, and give the user visual or audiable feedback that something has happend
65
+static void lcd_quick_feedback();//Cause an LCD refresh, and give the user visual or audible feedback that something has happened
66 66
 
67
-/* Different types of actions that can be used in menuitems. */
67
+/* Different types of actions that can be used in menu items. */
68 68
 static void menu_action_back(menuFunc_t data);
69 69
 static void menu_action_submenu(menuFunc_t data);
70 70
 static void menu_action_gcode(const char* pgcode);
@@ -145,7 +145,7 @@ static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned l
145 145
 #ifndef REPRAPWORLD_KEYPAD
146 146
 volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
147 147
 #else
148
-volatile uint8_t buttons_reprapworld_keypad; // to store the reprapworld_keypad shiftregister values
148
+volatile uint8_t buttons_reprapworld_keypad; // to store the reprapworld_keypad shift register values
149 149
 #endif
150 150
 #ifdef LCD_HAS_SLOW_BUTTONS
151 151
 volatile uint8_t slow_buttons;//Contains the bits of the currently pressed buttons.
@@ -162,7 +162,7 @@ bool lcd_oldcardstatus;
162 162
 menuFunc_t currentMenu = lcd_status_screen; /* function pointer to the currently active menu */
163 163
 uint32_t lcd_next_update_millis;
164 164
 uint8_t lcd_status_update_delay;
165
-uint8_t lcdDrawUpdate = 2;                  /* Set to none-zero when the LCD needs to draw, decreased after every draw. Set to 2 in LCD routines so the LCD gets atleast 1 full redraw (first redraw is partial) */
165
+uint8_t lcdDrawUpdate = 2;                  /* Set to none-zero when the LCD needs to draw, decreased after every draw. Set to 2 in LCD routines so the LCD gets at least 1 full redraw (first redraw is partial) */
166 166
 
167 167
 //prevMenu and prevEncoderPosition are used to store the previous menu location when editing settings.
168 168
 menuFunc_t prevMenu = NULL;
@@ -173,10 +173,10 @@ void* editValue;
173 173
 int32_t minEditValue, maxEditValue;
174 174
 menuFunc_t callbackFunc;
175 175
 
176
-// placeholders for Ki and Kd edits
176
+// place-holders for Ki and Kd edits
177 177
 float raw_Ki, raw_Kd;
178 178
 
179
-/* Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependend */
179
+/* Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependent */
180 180
 static void lcd_status_screen()
181 181
 {
182 182
     if (lcd_status_update_delay)
@@ -708,9 +708,9 @@ static void lcd_control_temperature_preheat_abs_settings_menu()
708 708
 static void lcd_control_motion_menu()
709 709
 {
710 710
     START_MENU();
711
-    MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
711
+    MENU_ITEM(back, MSG_CONTROL, lcd_control_menu);
712 712
 #ifdef ENABLE_AUTO_BED_LEVELING
713
-    MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, 0.5, 50);
713
+    MENU_ITEM_EDIT(float32, MSG_ZPROBE_ZOFFSET, &zprobe_zoffset, 0.5, 50);
714 714
 #endif
715 715
     MENU_ITEM_EDIT(float5, MSG_ACC, &acceleration, 500, 99000);
716 716
     MENU_ITEM_EDIT(float3, MSG_VXY_JERK, &max_xy_jerk, 1, 990);
@@ -1008,7 +1008,7 @@ void lcd_init()
1008 1008
     WRITE(SHIFT_LD,HIGH);
1009 1009
   #endif
1010 1010
 #else  // Not NEWPANEL
1011
-  #ifdef SR_LCD_2W_NL // Non latching 2 wire shiftregister
1011
+  #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register
1012 1012
      pinMode (SR_DATA_PIN, OUTPUT);
1013 1013
      pinMode (SR_CLK_PIN, OUTPUT);
1014 1014
   #elif defined(SHIFT_CLK) 
@@ -1055,7 +1055,7 @@ void lcd_update()
1055 1055
     {
1056 1056
         lcdDrawUpdate = 2;
1057 1057
         lcd_oldcardstatus = IS_SD_INSERTED;
1058
-        lcd_implementation_init(); // to maybe revive the lcd if static electricty killed it.
1058
+        lcd_implementation_init(); // to maybe revive the LCD if static electricity killed it.
1059 1059
 
1060 1060
         if(lcd_oldcardstatus)
1061 1061
         {
@@ -1470,7 +1470,7 @@ char *ftostr52(const float &x)
1470 1470
 }
1471 1471
 
1472 1472
 // Callback for after editing PID i value
1473
-// grab the pid i value out of the temp variable; scale it; then update the PID driver
1473
+// grab the PID i value out of the temp variable; scale it; then update the PID driver
1474 1474
 void copy_and_scalePID_i()
1475 1475
 {
1476 1476
 #ifdef PIDTEMP
@@ -1480,7 +1480,7 @@ void copy_and_scalePID_i()
1480 1480
 }
1481 1481
 
1482 1482
 // Callback for after editing PID d value
1483
-// grab the pid d value out of the temp variable; scale it; then update the PID driver
1483
+// grab the PID d value out of the temp variable; scale it; then update the PID driver
1484 1484
 void copy_and_scalePID_d()
1485 1485
 {
1486 1486
 #ifdef PIDTEMP

+ 4
- 4
Marlin/ultralcd.h ファイルの表示

@@ -17,7 +17,7 @@
17 17
   void lcd_setcontrast(uint8_t value);
18 18
 #endif
19 19
 
20
-  static unsigned char blink = 0;	// Variable for visualisation of fan rotation in GLCD
20
+  static unsigned char blink = 0;	// Variable for visualization of fan rotation in GLCD
21 21
 
22 22
   #define LCD_MESSAGEPGM(x) lcd_setstatuspgm(PSTR(x))
23 23
   #define LCD_ALERTMESSAGEPGM(x) lcd_setalertstatuspgm(PSTR(x))
@@ -29,7 +29,7 @@
29 29
   void lcd_buttons_update();
30 30
   extern volatile uint8_t buttons;  //the last checked buttons in a bit array.
31 31
   #ifdef REPRAPWORLD_KEYPAD
32
-    extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shiftregister values
32
+    extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shift register values
33 33
   #endif
34 34
   #else
35 35
   FORCE_INLINE void lcd_buttons_update() {}
@@ -72,7 +72,7 @@
72 72
   	  #define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
73 73
     #endif //REPRAPWORLD_KEYPAD
74 74
   #else
75
-    //atomatic, do not change
75
+    //atomic, do not change
76 76
     #define B_LE (1<<BL_LE)
77 77
     #define B_UP (1<<BL_UP)
78 78
     #define B_MI (1<<BL_MI)
@@ -85,7 +85,7 @@
85 85
     #define LCD_CLICKED ((buttons&B_MI)||(buttons&B_ST))
86 86
   #endif//NEWPANEL
87 87
 
88
-#else //no lcd
88
+#else //no LCD
89 89
   FORCE_INLINE void lcd_update() {}
90 90
   FORCE_INLINE void lcd_init() {}
91 91
   FORCE_INLINE void lcd_setstatus(const char* message) {}

+ 6
- 6
Marlin/ultralcd_implementation_hitachi_HD44780.h ファイルの表示

@@ -2,8 +2,8 @@
2 2
 #define ULTRA_LCD_IMPLEMENTATION_HITACHI_HD44780_H
3 3
 
4 4
 /**
5
-* Implementation of the LCD display routines for a hitachi HD44780 display. These are common LCD character displays.
6
-* When selecting the rusian language, a slightly different LCD implementation is used to handle UTF8 characters.
5
+* Implementation of the LCD display routines for a Hitachi HD44780 display. These are common LCD character displays.
6
+* When selecting the Russian language, a slightly different LCD implementation is used to handle UTF8 characters.
7 7
 **/
8 8
 
9 9
 #ifndef REPRAPWORLD_KEYPAD
@@ -20,7 +20,7 @@ extern volatile uint16_t buttons;  //an extended version of the last checked but
20 20
 // via a shift/i2c register.
21 21
 
22 22
 #ifdef ULTIPANEL
23
-// All Ultipanels might have an encoder - so this is always be mapped onto first two bits
23
+// All UltiPanels might have an encoder - so this is always be mapped onto first two bits
24 24
 #define BLEN_B 1
25 25
 #define BLEN_A 0
26 26
 
@@ -725,15 +725,15 @@ static void lcd_implementation_quick_feedback()
725 725
       delayMicroseconds(100);
726 726
       WRITE(BEEPER,LOW);
727 727
       delayMicroseconds(100);
728
-    }
729
-    #else
728
+    }
729
+    #else
730 730
     for(int8_t i=0;i<(LCD_FEEDBACK_FREQUENCY_DURATION_MS / (1000 / LCD_FEEDBACK_FREQUENCY_HZ));i++)
731 731
     {
732 732
       WRITE(BEEPER,HIGH);
733 733
       delayMicroseconds(1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2);
734 734
       WRITE(BEEPER,LOW);
735 735
       delayMicroseconds(1000000 / LCD_FEEDBACK_FREQUENCY_HZ / 2);
736
-    }
736
+    }
737 737
     #endif
738 738
 #endif
739 739
 }

読み込み中…
キャンセル
保存