瀏覽代碼

Merge remote-tracking branch 'upstream/Development' into Development

Tommi Lamberg 10 年之前
父節點
當前提交
513ff94b89

+ 28
- 7
Marlin/Configuration.h 查看文件

122
 #define TEMP_SENSOR_0 -1
122
 #define TEMP_SENSOR_0 -1
123
 #define TEMP_SENSOR_1 -1
123
 #define TEMP_SENSOR_1 -1
124
 #define TEMP_SENSOR_2 0
124
 #define TEMP_SENSOR_2 0
125
+#define TEMP_SENSOR_3 0
125
 #define TEMP_SENSOR_BED 0
126
 #define TEMP_SENSOR_BED 0
126
 
127
 
127
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
128
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
139
 #define HEATER_0_MINTEMP 5
140
 #define HEATER_0_MINTEMP 5
140
 #define HEATER_1_MINTEMP 5
141
 #define HEATER_1_MINTEMP 5
141
 #define HEATER_2_MINTEMP 5
142
 #define HEATER_2_MINTEMP 5
143
+#define HEATER_3_MINTEMP 5
142
 #define BED_MINTEMP 5
144
 #define BED_MINTEMP 5
143
 
145
 
144
 // When temperature exceeds max temp, your heater will be switched off.
146
 // When temperature exceeds max temp, your heater will be switched off.
147
 #define HEATER_0_MAXTEMP 275
149
 #define HEATER_0_MAXTEMP 275
148
 #define HEATER_1_MAXTEMP 275
150
 #define HEATER_1_MAXTEMP 275
149
 #define HEATER_2_MAXTEMP 275
151
 #define HEATER_2_MAXTEMP 275
152
+#define HEATER_3_MAXTEMP 275
150
 #define BED_MAXTEMP 150
153
 #define BED_MAXTEMP 150
151
 
154
 
152
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
155
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
323
 //#define DISABLE_MAX_ENDSTOPS
326
 //#define DISABLE_MAX_ENDSTOPS
324
 //#define DISABLE_MIN_ENDSTOPS
327
 //#define DISABLE_MIN_ENDSTOPS
325
 
328
 
326
-// Disable max endstops for compatibility with endstop checking routine
327
-#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS)
328
-  #define DISABLE_MAX_ENDSTOPS
329
-#endif
330
-
331
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
329
 // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
332
 #define X_ENABLE_ON 0
330
 #define X_ENABLE_ON 0
333
 #define Y_ENABLE_ON 0
331
 #define Y_ENABLE_ON 0
341
 #define DISABLE_E false // For all extruders
339
 #define DISABLE_E false // For all extruders
342
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
340
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
343
 
341
 
344
-#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
342
+#define INVERT_X_DIR true     // for Mendel set to false, for Orca set to true
345
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
343
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
346
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
344
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
347
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
345
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
348
-#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
346
+#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
349
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
347
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
348
+#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
350
 
349
 
351
 // ENDSTOP SETTINGS:
350
 // ENDSTOP SETTINGS:
352
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
351
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
586
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
585
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
587
 //#define MAKRPANEL
586
 //#define MAKRPANEL
588
 
587
 
588
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
589
+// http://panucatt.com
590
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
591
+//#define VIKI2
592
+//#define miniVIKI
593
+
589
 // The RepRapDiscount Smart Controller (white PCB)
594
 // The RepRapDiscount Smart Controller (white PCB)
590
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
595
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
591
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
596
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
619
  #define DEFAULT_LCD_CONTRAST 17
624
  #define DEFAULT_LCD_CONTRAST 17
620
 #endif
625
 #endif
621
 
626
 
627
+#if defined(miniVIKI) || defined(VIKI2)
628
+ #define ULTRA_LCD  //general LCD support, also 16x2
629
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
630
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
631
+ 
632
+  #ifdef miniVIKI
633
+   #define DEFAULT_LCD_CONTRAST 95
634
+  #else
635
+   #define DEFAULT_LCD_CONTRAST 40
636
+  #endif
637
+  
638
+ #define ENCODER_PULSES_PER_STEP 4
639
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
640
+#endif
641
+
642
+
622
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
643
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
623
  #define DOGLCD
644
  #define DOGLCD
624
  #define U8GLIB_ST7920
645
  #define U8GLIB_ST7920

+ 3
- 2
Marlin/Marlin.h 查看文件

201
 
201
 
202
 bool IsStopped();
202
 bool IsStopped();
203
 
203
 
204
-void enquecommand(const char *cmd); //put an ASCII command at the end of the current buffer.
205
-void enquecommand_P(const char *cmd); //put an ASCII command at the end of the current buffer, read from flash
204
+bool enquecommand(const char *cmd); //put a single ASCII command at the end of the current buffer or return false when it is full
205
+void enquecommands_P(const char *cmd); //put one or many ASCII commands at the end of the current buffer, read from flash
206
+
206
 void prepare_arc_move(char isclockwise);
207
 void prepare_arc_move(char isclockwise);
207
 void clamp_to_software_endstops(float target[3]);
208
 void clamp_to_software_endstops(float target[3]);
208
 
209
 

+ 65
- 26
Marlin/Marlin_main.cpp 查看文件

385
 static boolean comment_mode = false;
385
 static boolean comment_mode = false;
386
 static char *strchr_pointer; ///< A pointer to find chars in the command string (X, Y, Z, E, etc.)
386
 static char *strchr_pointer; ///< A pointer to find chars in the command string (X, Y, Z, E, etc.)
387
 
387
 
388
+const char* queued_commands_P= NULL; /* pointer to the current line in the active sequence of commands, or NULL when none */
389
+
388
 const int sensitive_pins[] = SENSITIVE_PINS; ///< Sensitive pin list for M42
390
 const int sensitive_pins[] = SENSITIVE_PINS; ///< Sensitive pin list for M42
389
 
391
 
390
 // Inactivity shutdown
392
 // Inactivity shutdown
448
   }
450
   }
449
 #endif //!SDSUPPORT
451
 #endif //!SDSUPPORT
450
 
452
 
451
-//adds an command to the main command buffer
452
-//thats really done in a non-safe way.
453
-//needs overworking someday
454
-void enquecommand(const char *cmd)
453
+//Injects the next command from the pending sequence of commands, when possible
454
+//Return false if and only if no command was pending
455
+static bool drain_queued_commands_P()
455
 {
456
 {
456
-  if(buflen < BUFSIZE)
457
+  char cmd[30];
458
+  if(!queued_commands_P)
459
+    return false;
460
+  // Get the next 30 chars from the sequence of gcodes to run
461
+  strncpy_P(cmd, queued_commands_P, sizeof(cmd)-1);
462
+  cmd[sizeof(cmd)-1]= 0;
463
+  // Look for the end of line, or the end of sequence
464
+  size_t i= 0;
465
+  char c;
466
+  while( (c= cmd[i]) && c!='\n' )
467
+    ++i; // look for the end of this gcode command
468
+  cmd[i]= 0;
469
+  if(enquecommand(cmd)) // buffer was not full (else we will retry later)
457
   {
470
   {
458
-    //this is dangerous if a mixing of serial and this happens
459
-    strcpy(&(cmdbuffer[bufindw][0]),cmd);
460
-    SERIAL_ECHO_START;
461
-    SERIAL_ECHOPGM(MSG_Enqueing);
462
-    SERIAL_ECHO(cmdbuffer[bufindw]);
463
-    SERIAL_ECHOLNPGM("\"");
464
-    bufindw= (bufindw + 1)%BUFSIZE;
465
-    buflen += 1;
471
+    if(c)
472
+      queued_commands_P+= i+1; // move to next command
473
+    else
474
+      queued_commands_P= NULL; // will have no more commands in the sequence
466
   }
475
   }
476
+  return true;
467
 }
477
 }
468
 
478
 
469
-void enquecommand_P(const char *cmd)
479
+//Record one or many commands to run from program memory.
480
+//Aborts the current queue, if any.
481
+//Note: drain_queued_commands_P() must be called repeatedly to drain the commands afterwards
482
+void enquecommands_P(const char* pgcode)
470
 {
483
 {
471
-  if(buflen < BUFSIZE)
472
-  {
473
-    //this is dangerous if a mixing of serial and this happens
474
-    strcpy_P(&(cmdbuffer[bufindw][0]),cmd);
475
-    SERIAL_ECHO_START;
476
-    SERIAL_ECHOPGM(MSG_Enqueing);
477
-    SERIAL_ECHO(cmdbuffer[bufindw]);
478
-    SERIAL_ECHOLNPGM("\"");
479
-    bufindw= (bufindw + 1)%BUFSIZE;
480
-    buflen += 1;
481
-  }
484
+    queued_commands_P= pgcode;
485
+    drain_queued_commands_P(); // first command exectuted asap (when possible)
486
+}
487
+
488
+//adds a single command to the main command buffer, from RAM
489
+//that is really done in a non-safe way.
490
+//needs overworking someday
491
+//Returns false if it failed to do so
492
+bool enquecommand(const char *cmd)
493
+{
494
+  if(*cmd==';')
495
+    return false;
496
+  if(buflen >= BUFSIZE)
497
+    return false;
498
+  //this is dangerous if a mixing of serial and this happens
499
+  strcpy(&(cmdbuffer[bufindw][0]),cmd);
500
+  SERIAL_ECHO_START;
501
+  SERIAL_ECHOPGM(MSG_Enqueing);
502
+  SERIAL_ECHO(cmdbuffer[bufindw]);
503
+  SERIAL_ECHOLNPGM("\"");
504
+  bufindw= (bufindw + 1)%BUFSIZE;
505
+  buflen += 1;
506
+  return true;
482
 }
507
 }
483
 
508
 
509
+
510
+
484
 void setup_killpin()
511
 void setup_killpin()
485
 {
512
 {
486
   #if defined(KILL_PIN) && KILL_PIN > -1
513
   #if defined(KILL_PIN) && KILL_PIN > -1
632
   digitalWrite(SERVO0_PIN, LOW); // turn it off
659
   digitalWrite(SERVO0_PIN, LOW); // turn it off
633
 #endif // Z_PROBE_SLED
660
 #endif // Z_PROBE_SLED
634
   setup_homepin();
661
   setup_homepin();
662
+  
663
+#ifdef STAT_LED_RED
664
+  pinMode(STAT_LED_RED, OUTPUT);
665
+  digitalWrite(STAT_LED_RED, LOW); // turn it off
666
+#endif
667
+#ifdef STAT_LED_BLUE
668
+  pinMode(STAT_LED_BLUE, OUTPUT);
669
+  digitalWrite(STAT_LED_BLUE, LOW); // turn it off
670
+#endif  
635
 }
671
 }
636
 
672
 
637
 
673
 
684
 
720
 
685
 void get_command()
721
 void get_command()
686
 {
722
 {
723
+  if(drain_queued_commands_P()) // priority is given to non-serial commands
724
+    return;
725
+  
687
   while( MYSERIAL.available() > 0  && buflen < BUFSIZE) {
726
   while( MYSERIAL.available() > 0  && buflen < BUFSIZE) {
688
     serial_char = MYSERIAL.read();
727
     serial_char = MYSERIAL.read();
689
     if(serial_char == '\n' ||
728
     if(serial_char == '\n' ||
4459
     {
4498
     {
4460
        if (homeDebounceCount == 0)
4499
        if (homeDebounceCount == 0)
4461
        {
4500
        {
4462
-          enquecommand_P((PSTR("G28")));
4501
+          enquecommands_P((PSTR("G28")));
4463
           homeDebounceCount++;
4502
           homeDebounceCount++;
4464
           LCD_ALERTMESSAGEPGM(MSG_AUTO_HOME);
4503
           LCD_ALERTMESSAGEPGM(MSG_AUTO_HOME);
4465
        }
4504
        }

+ 2
- 2
Marlin/cardreader.cpp 查看文件

532
 
532
 
533
       sprintf_P(cmd, PSTR("M23 %s"), autoname);
533
       sprintf_P(cmd, PSTR("M23 %s"), autoname);
534
       enquecommand(cmd);
534
       enquecommand(cmd);
535
-      enquecommand_P(PSTR("M24"));
535
+      enquecommands_P(PSTR("M24"));
536
       found=true;
536
       found=true;
537
     }
537
     }
538
   }
538
   }
637
       if(SD_FINISHED_STEPPERRELEASE)
637
       if(SD_FINISHED_STEPPERRELEASE)
638
       {
638
       {
639
           //finishAndDisableSteppers();
639
           //finishAndDisableSteppers();
640
-          enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND));
640
+          enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
641
       }
641
       }
642
       autotempShutdown();
642
       autotempShutdown();
643
     }
643
     }

+ 3
- 0
Marlin/dogm_lcd_implementation.h 查看文件

92
 #elif defined(MAKRPANEL)
92
 #elif defined(MAKRPANEL)
93
 // The MaKrPanel display, ST7565 controller as well
93
 // The MaKrPanel display, ST7565 controller as well
94
 U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
94
 U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
95
+#elif defined(VIKI2) || defined(miniVIKI)
96
+// Mini Viki and Viki 2.0 LCD, ST7565 controller as well
97
+U8GLIB_NHD_C12864 u8g(DOGLCD_CS, DOGLCD_A0);
95
 #else
98
 #else
96
 // for regular DOGM128 display with HW-SPI
99
 // for regular DOGM128 display with HW-SPI
97
 U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);  // HW-SPI Com: CS, A0
100
 U8GLIB_DOGM128 u8g(DOGLCD_CS, DOGLCD_A0);  // HW-SPI Com: CS, A0

+ 28
- 2
Marlin/example_configurations/Hephestos/Configuration.h 查看文件

1
-#ifndef CONFIGURATION_H
1
+#ifndef CONFIGURATION_H
2
 #define CONFIGURATION_H
2
 #define CONFIGURATION_H
3
 
3
 
4
 #include "boards.h"
4
 #include "boards.h"
122
 #define TEMP_SENSOR_0 1
122
 #define TEMP_SENSOR_0 1
123
 #define TEMP_SENSOR_1 0
123
 #define TEMP_SENSOR_1 0
124
 #define TEMP_SENSOR_2 0
124
 #define TEMP_SENSOR_2 0
125
+#define TEMP_SENSOR_3 0
125
 #define TEMP_SENSOR_BED 0
126
 #define TEMP_SENSOR_BED 0
126
 
127
 
127
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
128
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
139
 #define HEATER_0_MINTEMP 5
140
 #define HEATER_0_MINTEMP 5
140
 #define HEATER_1_MINTEMP 5
141
 #define HEATER_1_MINTEMP 5
141
 #define HEATER_2_MINTEMP 5
142
 #define HEATER_2_MINTEMP 5
143
+#define HEATER_3_MINTEMP 5
142
 #define BED_MINTEMP 5
144
 #define BED_MINTEMP 5
143
 
145
 
144
 // When temperature exceeds max temp, your heater will be switched off.
146
 // When temperature exceeds max temp, your heater will be switched off.
147
 #define HEATER_0_MAXTEMP 260
149
 #define HEATER_0_MAXTEMP 260
148
 #define HEATER_1_MAXTEMP 260
150
 #define HEATER_1_MAXTEMP 260
149
 #define HEATER_2_MAXTEMP 260
151
 #define HEATER_2_MAXTEMP 260
152
+#define HEATER_3_MAXTEMP 260
150
 #define BED_MAXTEMP 150
153
 #define BED_MAXTEMP 150
151
 
154
 
152
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
155
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
351
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
354
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
352
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
355
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
353
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
356
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
354
-#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
357
+#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
355
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
358
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
359
+#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
356
 
360
 
357
 // ENDSTOP SETTINGS:
361
 // ENDSTOP SETTINGS:
358
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
362
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
587
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
591
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
588
 //#define MAKRPANEL
592
 //#define MAKRPANEL
589
 
593
 
594
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
595
+// http://panucatt.com
596
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
597
+//#define VIKI2
598
+//#define miniVIKI
599
+
590
 // The RepRapDiscount Smart Controller (white PCB)
600
 // The RepRapDiscount Smart Controller (white PCB)
591
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
601
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
592
 #define REPRAP_DISCOUNT_SMART_CONTROLLER
602
 #define REPRAP_DISCOUNT_SMART_CONTROLLER
620
  #define DEFAULT_LCD_CONTRAST 17
630
  #define DEFAULT_LCD_CONTRAST 17
621
 #endif
631
 #endif
622
 
632
 
633
+#if defined(miniVIKI) || defined(VIKI2)
634
+ #define ULTRA_LCD  //general LCD support, also 16x2
635
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
636
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
637
+ 
638
+  #ifdef miniVIKI
639
+   #define DEFAULT_LCD_CONTRAST 95
640
+  #else
641
+   #define DEFAULT_LCD_CONTRAST 40
642
+  #endif
643
+  
644
+ #define ENCODER_PULSES_PER_STEP 4
645
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
646
+#endif
647
+
648
+
623
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
649
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
624
  #define DOGLCD
650
  #define DOGLCD
625
  #define U8GLIB_ST7920
651
  #define U8GLIB_ST7920

+ 29
- 3
Marlin/example_configurations/K8200/Configuration.h 查看文件

1
-#ifndef CONFIGURATION_H
1
+#ifndef CONFIGURATION_H
2
 #define CONFIGURATION_H
2
 #define CONFIGURATION_H
3
 
3
 
4
 #include "boards.h"
4
 #include "boards.h"
124
 #define TEMP_SENSOR_0 5
124
 #define TEMP_SENSOR_0 5
125
 #define TEMP_SENSOR_1 0
125
 #define TEMP_SENSOR_1 0
126
 #define TEMP_SENSOR_2 0
126
 #define TEMP_SENSOR_2 0
127
+#define TEMP_SENSOR_3 0
127
 #define TEMP_SENSOR_BED 5
128
 #define TEMP_SENSOR_BED 5
128
 
129
 
129
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
130
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
141
 #define HEATER_0_MINTEMP 5
142
 #define HEATER_0_MINTEMP 5
142
 #define HEATER_1_MINTEMP 5
143
 #define HEATER_1_MINTEMP 5
143
 #define HEATER_2_MINTEMP 5
144
 #define HEATER_2_MINTEMP 5
145
+#define HEATER_3_MINTEMP 5
144
 #define BED_MINTEMP 5
146
 #define BED_MINTEMP 5
145
 
147
 
146
 // When temperature exceeds max temp, your heater will be switched off.
148
 // When temperature exceeds max temp, your heater will be switched off.
149
 #define HEATER_0_MAXTEMP 275
151
 #define HEATER_0_MAXTEMP 275
150
 #define HEATER_1_MAXTEMP 275
152
 #define HEATER_1_MAXTEMP 275
151
 #define HEATER_2_MAXTEMP 275
153
 #define HEATER_2_MAXTEMP 275
154
+#define HEATER_3_MAXTEMP 275
152
 #define BED_MAXTEMP 150
155
 #define BED_MAXTEMP 150
153
 
156
 
154
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
157
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
357
 
360
 
358
 #define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
361
 #define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
359
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
362
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
360
-#define INVERT_Z_DIR false     // for Mendel set to false, for Orca set to true
363
+#define INVERT_Z_DIR false    // for Mendel set to false, for Orca set to true
361
 #define INVERT_E0_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
364
 #define INVERT_E0_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
362
-#define INVERT_E1_DIR true    // for direct drive extruder v9 set to true, for geared extruder set to false
365
+#define INVERT_E1_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
363
 #define INVERT_E2_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
366
 #define INVERT_E2_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
367
+#define INVERT_E3_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
364
 
368
 
365
 // ENDSTOP SETTINGS:
369
 // ENDSTOP SETTINGS:
366
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
370
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
597
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
601
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
598
 //#define MAKRPANEL
602
 //#define MAKRPANEL
599
 
603
 
604
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
605
+// http://panucatt.com
606
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
607
+//#define VIKI2
608
+//#define miniVIKI
609
+
600
 // The RepRapDiscount Smart Controller (white PCB)
610
 // The RepRapDiscount Smart Controller (white PCB)
601
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
611
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
602
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
612
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
630
  #define DEFAULT_LCD_CONTRAST 17
640
  #define DEFAULT_LCD_CONTRAST 17
631
 #endif
641
 #endif
632
 
642
 
643
+#if defined(miniVIKI) || defined(VIKI2)
644
+ #define ULTRA_LCD  //general LCD support, also 16x2
645
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
646
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
647
+ 
648
+  #ifdef miniVIKI
649
+   #define DEFAULT_LCD_CONTRAST 95
650
+  #else
651
+   #define DEFAULT_LCD_CONTRAST 40
652
+  #endif
653
+  
654
+ #define ENCODER_PULSES_PER_STEP 4
655
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
656
+#endif
657
+
658
+
633
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
659
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
634
  #define DOGLCD
660
  #define DOGLCD
635
  #define U8GLIB_ST7920
661
  #define U8GLIB_ST7920

+ 28
- 2
Marlin/example_configurations/SCARA/Configuration.h 查看文件

1
-#ifndef CONFIGURATION_H
1
+#ifndef CONFIGURATION_H
2
 #define CONFIGURATION_H
2
 #define CONFIGURATION_H
3
 
3
 
4
 #include "boards.h"
4
 #include "boards.h"
142
 #define TEMP_SENSOR_0 1
142
 #define TEMP_SENSOR_0 1
143
 #define TEMP_SENSOR_1 0
143
 #define TEMP_SENSOR_1 0
144
 #define TEMP_SENSOR_2 0
144
 #define TEMP_SENSOR_2 0
145
+#define TEMP_SENSOR_3 0
145
 #define TEMP_SENSOR_BED 1
146
 #define TEMP_SENSOR_BED 1
146
 
147
 
147
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
148
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
159
 #define HEATER_0_MINTEMP 5
160
 #define HEATER_0_MINTEMP 5
160
 #define HEATER_1_MINTEMP 5
161
 #define HEATER_1_MINTEMP 5
161
 #define HEATER_2_MINTEMP 5
162
 #define HEATER_2_MINTEMP 5
163
+#define HEATER_3_MINTEMP 5
162
 #define BED_MINTEMP 5
164
 #define BED_MINTEMP 5
163
 
165
 
164
 // When temperature exceeds max temp, your heater will be switched off.
166
 // When temperature exceeds max temp, your heater will be switched off.
167
 #define HEATER_0_MAXTEMP 275
169
 #define HEATER_0_MAXTEMP 275
168
 #define HEATER_1_MAXTEMP 275
170
 #define HEATER_1_MAXTEMP 275
169
 #define HEATER_2_MAXTEMP 275
171
 #define HEATER_2_MAXTEMP 275
172
+#define HEATER_3_MAXTEMP 275
170
 #define BED_MAXTEMP 150
173
 #define BED_MAXTEMP 150
171
 
174
 
172
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
175
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
380
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
383
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
381
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
384
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
382
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
385
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
383
-#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
386
+#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
384
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
387
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
388
+#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
385
 
389
 
386
 // ENDSTOP SETTINGS:
390
 // ENDSTOP SETTINGS:
387
 // Sets direction of endstop	s when homing; 1=MAX, -1=MIN
391
 // Sets direction of endstop	s when homing; 1=MAX, -1=MIN
590
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
594
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
591
 //#define MAKRPANEL
595
 //#define MAKRPANEL
592
 
596
 
597
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
598
+// http://panucatt.com
599
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
600
+//#define VIKI2
601
+//#define miniVIKI
602
+
593
 // The RepRapDiscount Smart Controller (white PCB)
603
 // The RepRapDiscount Smart Controller (white PCB)
594
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
604
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
595
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
605
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
623
  #define DEFAULT_LCD_CONTRAST 17
633
  #define DEFAULT_LCD_CONTRAST 17
624
 #endif
634
 #endif
625
 
635
 
636
+#if defined(miniVIKI) || defined(VIKI2)
637
+ #define ULTRA_LCD  //general LCD support, also 16x2
638
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
639
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
640
+ 
641
+  #ifdef miniVIKI
642
+   #define DEFAULT_LCD_CONTRAST 95
643
+  #else
644
+   #define DEFAULT_LCD_CONTRAST 40
645
+  #endif
646
+  
647
+ #define ENCODER_PULSES_PER_STEP 4
648
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
649
+#endif
650
+
651
+
626
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
652
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
627
  #define DOGLCD
653
  #define DOGLCD
628
  #define U8GLIB_ST7920
654
  #define U8GLIB_ST7920

+ 12
- 0
Marlin/example_configurations/SCARA/Configuration_adv.h 查看文件

78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN   -1
81
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 
84
 
478
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
479
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
479
   #define HEATER_2_USES_THERMISTOR
480
   #define HEATER_2_USES_THERMISTOR
480
 #endif
481
 #endif
482
+#if TEMP_SENSOR_3 > 0
483
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
484
+  #define HEATER_3_USES_THERMISTOR
485
+#endif
481
 #if TEMP_SENSOR_BED > 0
486
 #if TEMP_SENSOR_BED > 0
482
   #define THERMISTORBED TEMP_SENSOR_BED
487
   #define THERMISTORBED TEMP_SENSOR_BED
483
   #define BED_USES_THERMISTOR
488
   #define BED_USES_THERMISTOR
491
 #if TEMP_SENSOR_2 == -1
496
 #if TEMP_SENSOR_2 == -1
492
   #define HEATER_2_USES_AD595
497
   #define HEATER_2_USES_AD595
493
 #endif
498
 #endif
499
+#if TEMP_SENSOR_3 == -1
500
+  #define HEATER_3_USES_AD595
501
+#endif
494
 #if TEMP_SENSOR_BED == -1
502
 #if TEMP_SENSOR_BED == -1
495
   #define BED_USES_AD595
503
   #define BED_USES_AD595
496
 #endif
504
 #endif
509
   #undef HEATER_2_MINTEMP
517
   #undef HEATER_2_MINTEMP
510
   #undef HEATER_2_MAXTEMP
518
   #undef HEATER_2_MAXTEMP
511
 #endif
519
 #endif
520
+#if TEMP_SENSOR_3 == 0
521
+  #undef HEATER_3_MINTEMP
522
+  #undef HEATER_3_MAXTEMP
523
+#endif
512
 #if TEMP_SENSOR_BED == 0
524
 #if TEMP_SENSOR_BED == 0
513
   #undef BED_MINTEMP
525
   #undef BED_MINTEMP
514
   #undef BED_MAXTEMP
526
   #undef BED_MAXTEMP

+ 29
- 3
Marlin/example_configurations/WITBOX/Configuration.h 查看文件

1
-#ifndef CONFIGURATION_H
1
+#ifndef CONFIGURATION_H
2
 #define CONFIGURATION_H
2
 #define CONFIGURATION_H
3
 
3
 
4
 #include "boards.h"
4
 #include "boards.h"
125
 #define TEMP_SENSOR_0 1
125
 #define TEMP_SENSOR_0 1
126
 #define TEMP_SENSOR_1 0
126
 #define TEMP_SENSOR_1 0
127
 #define TEMP_SENSOR_2 0
127
 #define TEMP_SENSOR_2 0
128
+#define TEMP_SENSOR_3 0
128
 #define TEMP_SENSOR_BED 0
129
 #define TEMP_SENSOR_BED 0
129
 
130
 
130
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
131
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
142
 #define HEATER_0_MINTEMP 5
143
 #define HEATER_0_MINTEMP 5
143
 #define HEATER_1_MINTEMP 5
144
 #define HEATER_1_MINTEMP 5
144
 #define HEATER_2_MINTEMP 5
145
 #define HEATER_2_MINTEMP 5
146
+#define HEATER_3_MINTEMP 5
145
 #define BED_MINTEMP 5
147
 #define BED_MINTEMP 5
146
 
148
 
147
 // When temperature exceeds max temp, your heater will be switched off.
149
 // When temperature exceeds max temp, your heater will be switched off.
150
 #define HEATER_0_MAXTEMP 260
152
 #define HEATER_0_MAXTEMP 260
151
 #define HEATER_1_MAXTEMP 260
153
 #define HEATER_1_MAXTEMP 260
152
 #define HEATER_2_MAXTEMP 260
154
 #define HEATER_2_MAXTEMP 260
155
+#define HEATER_3_MAXTEMP 260
153
 #define BED_MAXTEMP 150
156
 #define BED_MAXTEMP 150
154
 
157
 
155
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
158
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
351
 #define DISABLE_E false // For all extruders
354
 #define DISABLE_E false // For all extruders
352
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
355
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
353
 
356
 
354
-#define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
357
+#define INVERT_X_DIR true     // for Mendel set to false, for Orca set to true
355
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
358
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
356
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
359
 #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
357
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
360
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
358
-#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
361
+#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
359
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
362
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
363
+#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
360
 
364
 
361
 // ENDSTOP SETTINGS:
365
 // ENDSTOP SETTINGS:
362
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
366
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
591
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
595
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
592
 //#define MAKRPANEL
596
 //#define MAKRPANEL
593
 
597
 
598
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
599
+// http://panucatt.com
600
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
601
+//#define VIKI2
602
+//#define miniVIKI
603
+
594
 // The RepRapDiscount Smart Controller (white PCB)
604
 // The RepRapDiscount Smart Controller (white PCB)
595
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
605
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
596
 #define REPRAP_DISCOUNT_SMART_CONTROLLER
606
 #define REPRAP_DISCOUNT_SMART_CONTROLLER
624
  #define DEFAULT_LCD_CONTRAST 17
634
  #define DEFAULT_LCD_CONTRAST 17
625
 #endif
635
 #endif
626
 
636
 
637
+#if defined(miniVIKI) || defined(VIKI2)
638
+ #define ULTRA_LCD  //general LCD support, also 16x2
639
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
640
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
641
+ 
642
+  #ifdef miniVIKI
643
+   #define DEFAULT_LCD_CONTRAST 95
644
+  #else
645
+   #define DEFAULT_LCD_CONTRAST 40
646
+  #endif
647
+  
648
+ #define ENCODER_PULSES_PER_STEP 4
649
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
650
+#endif
651
+
652
+
627
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
653
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
628
  #define DOGLCD
654
  #define DOGLCD
629
  #define U8GLIB_ST7920
655
  #define U8GLIB_ST7920

+ 28
- 2
Marlin/example_configurations/delta/Configuration.h 查看文件

1
-#ifndef CONFIGURATION_H
1
+#ifndef CONFIGURATION_H
2
 #define CONFIGURATION_H
2
 #define CONFIGURATION_H
3
 
3
 
4
 #include "boards.h"
4
 #include "boards.h"
147
 #define TEMP_SENSOR_0 -1
147
 #define TEMP_SENSOR_0 -1
148
 #define TEMP_SENSOR_1 -1
148
 #define TEMP_SENSOR_1 -1
149
 #define TEMP_SENSOR_2 0
149
 #define TEMP_SENSOR_2 0
150
+#define TEMP_SENSOR_3 0
150
 #define TEMP_SENSOR_BED 0
151
 #define TEMP_SENSOR_BED 0
151
 
152
 
152
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
153
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
164
 #define HEATER_0_MINTEMP 5
165
 #define HEATER_0_MINTEMP 5
165
 #define HEATER_1_MINTEMP 5
166
 #define HEATER_1_MINTEMP 5
166
 #define HEATER_2_MINTEMP 5
167
 #define HEATER_2_MINTEMP 5
168
+#define HEATER_3_MINTEMP 5
167
 #define BED_MINTEMP 5
169
 #define BED_MINTEMP 5
168
 
170
 
169
 // When temperature exceeds max temp, your heater will be switched off.
171
 // When temperature exceeds max temp, your heater will be switched off.
172
 #define HEATER_0_MAXTEMP 275
174
 #define HEATER_0_MAXTEMP 275
173
 #define HEATER_1_MAXTEMP 275
175
 #define HEATER_1_MAXTEMP 275
174
 #define HEATER_2_MAXTEMP 275
176
 #define HEATER_2_MAXTEMP 275
177
+#define HEATER_3_MAXTEMP 275
175
 #define BED_MAXTEMP 150
178
 #define BED_MAXTEMP 150
176
 
179
 
177
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
180
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
368
 #define INVERT_Z_DIR false
371
 #define INVERT_Z_DIR false
369
 
372
 
370
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
373
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
371
-#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
374
+#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
372
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
375
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
376
+#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
373
 
377
 
374
 // ENDSTOP SETTINGS:
378
 // ENDSTOP SETTINGS:
375
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
379
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
495
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
499
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
496
 //#define MAKRPANEL
500
 //#define MAKRPANEL
497
 
501
 
502
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
503
+// http://panucatt.com
504
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
505
+//#define VIKI2
506
+//#define miniVIKI
507
+
498
 // The RepRapDiscount Smart Controller (white PCB)
508
 // The RepRapDiscount Smart Controller (white PCB)
499
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
509
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
500
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
510
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
535
  #define DEFAULT_LCD_CONTRAST 17
545
  #define DEFAULT_LCD_CONTRAST 17
536
 #endif
546
 #endif
537
 
547
 
548
+#if defined(miniVIKI) || defined(VIKI2)
549
+ #define ULTRA_LCD  //general LCD support, also 16x2
550
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
551
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
552
+ 
553
+  #ifdef miniVIKI
554
+   #define DEFAULT_LCD_CONTRAST 95
555
+  #else
556
+   #define DEFAULT_LCD_CONTRAST 40
557
+  #endif
558
+  
559
+ #define ENCODER_PULSES_PER_STEP 4
560
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
561
+#endif
562
+
563
+
538
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
564
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
539
  #define DOGLCD
565
  #define DOGLCD
540
  #define U8GLIB_ST7920
566
  #define U8GLIB_ST7920

+ 12
- 0
Marlin/example_configurations/delta/Configuration_adv.h 查看文件

78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN   -1
81
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 
84
 
472
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
473
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
473
   #define HEATER_2_USES_THERMISTOR
474
   #define HEATER_2_USES_THERMISTOR
474
 #endif
475
 #endif
476
+#if TEMP_SENSOR_3 > 0
477
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
478
+  #define HEATER_3_USES_THERMISTOR
479
+#endif
475
 #if TEMP_SENSOR_BED > 0
480
 #if TEMP_SENSOR_BED > 0
476
   #define THERMISTORBED TEMP_SENSOR_BED
481
   #define THERMISTORBED TEMP_SENSOR_BED
477
   #define BED_USES_THERMISTOR
482
   #define BED_USES_THERMISTOR
485
 #if TEMP_SENSOR_2 == -1
490
 #if TEMP_SENSOR_2 == -1
486
   #define HEATER_2_USES_AD595
491
   #define HEATER_2_USES_AD595
487
 #endif
492
 #endif
493
+#if TEMP_SENSOR_3 == -1
494
+  #define HEATER_3_USES_AD595
495
+#endif
488
 #if TEMP_SENSOR_BED == -1
496
 #if TEMP_SENSOR_BED == -1
489
   #define BED_USES_AD595
497
   #define BED_USES_AD595
490
 #endif
498
 #endif
503
   #undef HEATER_2_MINTEMP
511
   #undef HEATER_2_MINTEMP
504
   #undef HEATER_2_MAXTEMP
512
   #undef HEATER_2_MAXTEMP
505
 #endif
513
 #endif
514
+#if TEMP_SENSOR_3 == 0
515
+  #undef HEATER_3_MINTEMP
516
+  #undef HEATER_3_MAXTEMP
517
+#endif
506
 #if TEMP_SENSOR_BED == 0
518
 #if TEMP_SENSOR_BED == 0
507
   #undef BED_MINTEMP
519
   #undef BED_MINTEMP
508
   #undef BED_MAXTEMP
520
   #undef BED_MAXTEMP

+ 29
- 3
Marlin/example_configurations/makibox/Configuration.h 查看文件

1
-#ifndef CONFIGURATION_H
1
+#ifndef CONFIGURATION_H
2
 #define CONFIGURATION_H
2
 #define CONFIGURATION_H
3
 
3
 
4
 #include "boards.h"
4
 #include "boards.h"
127
 #define TEMP_SENSOR_0 1
127
 #define TEMP_SENSOR_0 1
128
 #define TEMP_SENSOR_1 0
128
 #define TEMP_SENSOR_1 0
129
 #define TEMP_SENSOR_2 0
129
 #define TEMP_SENSOR_2 0
130
+#define TEMP_SENSOR_3 0
130
 #define TEMP_SENSOR_BED 12
131
 #define TEMP_SENSOR_BED 12
131
 
132
 
132
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
133
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
144
 #define HEATER_0_MINTEMP 5
145
 #define HEATER_0_MINTEMP 5
145
 #define HEATER_1_MINTEMP 5
146
 #define HEATER_1_MINTEMP 5
146
 #define HEATER_2_MINTEMP 5
147
 #define HEATER_2_MINTEMP 5
148
+#define HEATER_3_MINTEMP 5
147
 #define BED_MINTEMP 5
149
 #define BED_MINTEMP 5
148
 
150
 
149
 // When temperature exceeds max temp, your heater will be switched off.
151
 // When temperature exceeds max temp, your heater will be switched off.
152
 #define HEATER_0_MAXTEMP 275
154
 #define HEATER_0_MAXTEMP 275
153
 #define HEATER_1_MAXTEMP 275
155
 #define HEATER_1_MAXTEMP 275
154
 #define HEATER_2_MAXTEMP 275
156
 #define HEATER_2_MAXTEMP 275
157
+#define HEATER_3_MAXTEMP 275
155
 #define BED_MAXTEMP 150
158
 #define BED_MAXTEMP 150
156
 
159
 
157
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
160
 // If your bed has low resistance e.g. .6 ohm and throws the fuse you can duty cycle it to reduce the
352
 #define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
355
 #define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
353
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
356
 #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
354
 #define INVERT_Z_DIR false    // for Mendel set to false, for Orca set to true
357
 #define INVERT_Z_DIR false    // for Mendel set to false, for Orca set to true
355
-#define INVERT_E0_DIR true   // for direct drive extruder v9 set to true, for geared extruder set to false
356
-#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
358
+#define INVERT_E0_DIR true    // for direct drive extruder v9 set to true, for geared extruder set to false
359
+#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
357
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
360
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
361
+#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
358
 
362
 
359
 // ENDSTOP SETTINGS:
363
 // ENDSTOP SETTINGS:
360
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
364
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
565
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
569
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
566
 //#define MAKRPANEL
570
 //#define MAKRPANEL
567
 
571
 
572
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
573
+// http://panucatt.com
574
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
575
+//#define VIKI2
576
+//#define miniVIKI
577
+
568
 // The RepRapDiscount Smart Controller (white PCB)
578
 // The RepRapDiscount Smart Controller (white PCB)
569
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
579
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
570
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
580
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
598
  #define DEFAULT_LCD_CONTRAST 17
608
  #define DEFAULT_LCD_CONTRAST 17
599
 #endif
609
 #endif
600
 
610
 
611
+#if defined(miniVIKI) || defined(VIKI2)
612
+ #define ULTRA_LCD  //general LCD support, also 16x2
613
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
614
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
615
+ 
616
+  #ifdef miniVIKI
617
+   #define DEFAULT_LCD_CONTRAST 95
618
+  #else
619
+   #define DEFAULT_LCD_CONTRAST 40
620
+  #endif
621
+  
622
+ #define ENCODER_PULSES_PER_STEP 4
623
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
624
+#endif
625
+
626
+
601
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
627
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
602
  #define DOGLCD
628
  #define DOGLCD
603
  #define U8GLIB_ST7920
629
  #define U8GLIB_ST7920

+ 12
- 0
Marlin/example_configurations/makibox/Configuration_adv.h 查看文件

78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN   -1
81
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 
84
 
469
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
470
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
470
   #define HEATER_2_USES_THERMISTOR
471
   #define HEATER_2_USES_THERMISTOR
471
 #endif
472
 #endif
473
+#if TEMP_SENSOR_3 > 0
474
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
475
+  #define HEATER_3_USES_THERMISTOR
476
+#endif
472
 #if TEMP_SENSOR_BED > 0
477
 #if TEMP_SENSOR_BED > 0
473
   #define THERMISTORBED TEMP_SENSOR_BED
478
   #define THERMISTORBED TEMP_SENSOR_BED
474
   #define BED_USES_THERMISTOR
479
   #define BED_USES_THERMISTOR
482
 #if TEMP_SENSOR_2 == -1
487
 #if TEMP_SENSOR_2 == -1
483
   #define HEATER_2_USES_AD595
488
   #define HEATER_2_USES_AD595
484
 #endif
489
 #endif
490
+#if TEMP_SENSOR_3 == -1
491
+  #define HEATER_3_USES_AD595
492
+#endif
485
 #if TEMP_SENSOR_BED == -1
493
 #if TEMP_SENSOR_BED == -1
486
   #define BED_USES_AD595
494
   #define BED_USES_AD595
487
 #endif
495
 #endif
500
   #undef HEATER_2_MINTEMP
508
   #undef HEATER_2_MINTEMP
501
   #undef HEATER_2_MAXTEMP
509
   #undef HEATER_2_MAXTEMP
502
 #endif
510
 #endif
511
+#if TEMP_SENSOR_3 == 0
512
+  #undef HEATER_3_MINTEMP
513
+  #undef HEATER_3_MAXTEMP
514
+#endif
503
 #if TEMP_SENSOR_BED == 0
515
 #if TEMP_SENSOR_BED == 0
504
   #undef BED_MINTEMP
516
   #undef BED_MINTEMP
505
   #undef BED_MAXTEMP
517
   #undef BED_MAXTEMP

+ 30
- 4
Marlin/example_configurations/tvrrug/Round2/Configuration.h 查看文件

1
-#ifndef CONFIGURATION_H
1
+#ifndef CONFIGURATION_H
2
 #define CONFIGURATION_H
2
 #define CONFIGURATION_H
3
 
3
 
4
 #include "boards.h"
4
 #include "boards.h"
126
 #define TEMP_SENSOR_0 5
126
 #define TEMP_SENSOR_0 5
127
 #define TEMP_SENSOR_1 0
127
 #define TEMP_SENSOR_1 0
128
 #define TEMP_SENSOR_2 0
128
 #define TEMP_SENSOR_2 0
129
+#define TEMP_SENSOR_3 0
129
 #define TEMP_SENSOR_BED 5
130
 #define TEMP_SENSOR_BED 5
130
 
131
 
131
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
132
 // This makes temp sensor 1 a redundant sensor for sensor 0. If the temperatures difference between these sensors is to high the print will be aborted.
143
 #define HEATER_0_MINTEMP 5
144
 #define HEATER_0_MINTEMP 5
144
 #define HEATER_1_MINTEMP 5
145
 #define HEATER_1_MINTEMP 5
145
 #define HEATER_2_MINTEMP 5
146
 #define HEATER_2_MINTEMP 5
147
+#define HEATER_3_MINTEMP 5
146
 #define BED_MINTEMP 5
148
 #define BED_MINTEMP 5
147
 
149
 
148
 // When temperature exceeds max temp, your heater will be switched off.
150
 // When temperature exceeds max temp, your heater will be switched off.
151
 #define HEATER_0_MAXTEMP 275
153
 #define HEATER_0_MAXTEMP 275
152
 #define HEATER_1_MAXTEMP 275
154
 #define HEATER_1_MAXTEMP 275
153
 #define HEATER_2_MAXTEMP 275
155
 #define HEATER_2_MAXTEMP 275
156
+#define HEATER_3_MAXTEMP 275
154
 #define BED_MAXTEMP 150
157
 #define BED_MAXTEMP 150
155
 
158
 
156
 #define CONFIG_STEPPERS_TOSHIBA	1
159
 #define CONFIG_STEPPERS_TOSHIBA	1
353
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
356
 #define DISABLE_INACTIVE_EXTRUDER true //disable only inactive extruders and keep active extruder enabled
354
 
357
 
355
 #define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
358
 #define INVERT_X_DIR false    // for Mendel set to false, for Orca set to true
356
-#define INVERT_Y_DIR true    // for Mendel set to true, for Orca set to false
357
-#define INVERT_Z_DIR false     // for Mendel set to false, for Orca set to true
359
+#define INVERT_Y_DIR true     // for Mendel set to true, for Orca set to false
360
+#define INVERT_Z_DIR false    // for Mendel set to false, for Orca set to true
358
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
361
 #define INVERT_E0_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
359
-#define INVERT_E1_DIR false    // for direct drive extruder v9 set to true, for geared extruder set to false
362
+#define INVERT_E1_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
360
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
363
 #define INVERT_E2_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
364
+#define INVERT_E3_DIR false   // for direct drive extruder v9 set to true, for geared extruder set to false
361
 
365
 
362
 // ENDSTOP SETTINGS:
366
 // ENDSTOP SETTINGS:
363
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
367
 // Sets direction of endstops when homing; 1=MAX, -1=MIN
578
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
582
 // http://reprap.org/wiki/MaKr3d_MaKrPanel
579
 //#define MAKRPANEL
583
 //#define MAKRPANEL
580
 
584
 
585
+// The Panucatt Devices Viki 2.0 and mini Viki with Graphic LCD
586
+// http://panucatt.com
587
+// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
588
+//#define VIKI2
589
+//#define miniVIKI
590
+
581
 // The RepRapDiscount Smart Controller (white PCB)
591
 // The RepRapDiscount Smart Controller (white PCB)
582
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
592
 // http://reprap.org/wiki/RepRapDiscount_Smart_Controller
583
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
593
 //#define REPRAP_DISCOUNT_SMART_CONTROLLER
611
  #define DEFAULT_LCD_CONTRAST 17
621
  #define DEFAULT_LCD_CONTRAST 17
612
 #endif
622
 #endif
613
 
623
 
624
+#if defined(miniVIKI) || defined(VIKI2)
625
+ #define ULTRA_LCD  //general LCD support, also 16x2
626
+ #define DOGLCD  // Support for SPI LCD 128x64 (Controller ST7565R graphic Display Family)
627
+ #define ULTIMAKERCONTROLLER //as available from the Ultimaker online store.
628
+ 
629
+  #ifdef miniVIKI
630
+   #define DEFAULT_LCD_CONTRAST 95
631
+  #else
632
+   #define DEFAULT_LCD_CONTRAST 40
633
+  #endif
634
+  
635
+ #define ENCODER_PULSES_PER_STEP 4
636
+ #define ENCODER_STEPS_PER_MENU_ITEM 1
637
+#endif
638
+
639
+
614
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
640
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
615
  #define DOGLCD
641
  #define DOGLCD
616
  #define U8GLIB_ST7920
642
  #define U8GLIB_ST7920

+ 12
- 0
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h 查看文件

78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
78
 #define EXTRUDER_0_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
79
 #define EXTRUDER_1_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
80
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
81
+#define EXTRUDER_3_AUTO_FAN_PIN   -1
81
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
82
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
83
 
84
 
472
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
473
   #define THERMISTORHEATER_2 TEMP_SENSOR_2
473
   #define HEATER_2_USES_THERMISTOR
474
   #define HEATER_2_USES_THERMISTOR
474
 #endif
475
 #endif
476
+#if TEMP_SENSOR_3 > 0
477
+  #define THERMISTORHEATER_3 TEMP_SENSOR_3
478
+  #define HEATER_3_USES_THERMISTOR
479
+#endif
475
 #if TEMP_SENSOR_BED > 0
480
 #if TEMP_SENSOR_BED > 0
476
   #define THERMISTORBED TEMP_SENSOR_BED
481
   #define THERMISTORBED TEMP_SENSOR_BED
477
   #define BED_USES_THERMISTOR
482
   #define BED_USES_THERMISTOR
485
 #if TEMP_SENSOR_2 == -1
490
 #if TEMP_SENSOR_2 == -1
486
   #define HEATER_2_USES_AD595
491
   #define HEATER_2_USES_AD595
487
 #endif
492
 #endif
493
+#if TEMP_SENSOR_3 == -1
494
+  #define HEATER_3_USES_AD595
495
+#endif
488
 #if TEMP_SENSOR_BED == -1
496
 #if TEMP_SENSOR_BED == -1
489
   #define BED_USES_AD595
497
   #define BED_USES_AD595
490
 #endif
498
 #endif
503
   #undef HEATER_2_MINTEMP
511
   #undef HEATER_2_MINTEMP
504
   #undef HEATER_2_MAXTEMP
512
   #undef HEATER_2_MAXTEMP
505
 #endif
513
 #endif
514
+#if TEMP_SENSOR_3 == 0
515
+  #undef HEATER_3_MINTEMP
516
+  #undef HEATER_3_MAXTEMP
517
+#endif
506
 #if TEMP_SENSOR_BED == 0
518
 #if TEMP_SENSOR_BED == 0
507
   #undef BED_MINTEMP
519
   #undef BED_MINTEMP
508
   #undef BED_MAXTEMP
520
   #undef BED_MAXTEMP

+ 10
- 2
Marlin/planner.cpp 查看文件

629
     block->direction_bits |= (1<<Y_AXIS); 
629
     block->direction_bits |= (1<<Y_AXIS); 
630
   }
630
   }
631
 #else
631
 #else
632
+  if (target[X_AXIS] < position[X_AXIS])
633
+  {
634
+    block->direction_bits |= (1<<X_HEAD); //AlexBorro: Save the real Extruder (head) direction in X Axis
635
+  }
636
+  if (target[Y_AXIS] < position[Y_AXIS])
637
+  {
638
+    block->direction_bits |= (1<<Y_HEAD); //AlexBorro: Save the real Extruder (head) direction in Y Axis
639
+  }
632
   if ((target[X_AXIS]-position[X_AXIS]) + (target[Y_AXIS]-position[Y_AXIS]) < 0)
640
   if ((target[X_AXIS]-position[X_AXIS]) + (target[Y_AXIS]-position[Y_AXIS]) < 0)
633
   {
641
   {
634
-    block->direction_bits |= (1<<X_AXIS); 
642
+    block->direction_bits |= (1<<X_AXIS); //AlexBorro: Motor A direction (Incorrectly implemented as X_AXIS)
635
   }
643
   }
636
   if ((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-position[Y_AXIS]) < 0)
644
   if ((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-position[Y_AXIS]) < 0)
637
   {
645
   {
638
-    block->direction_bits |= (1<<Y_AXIS); 
646
+    block->direction_bits |= (1<<Y_AXIS); //AlexBorro: Motor B direction (Incorrectly implemented as Y_AXIS)
639
   }
647
   }
640
 #endif
648
 #endif
641
   if (target[Z_AXIS] < position[Z_AXIS])
649
   if (target[Z_AXIS] < position[Z_AXIS])

+ 10
- 6
Marlin/stepper.cpp 查看文件

401
 
401
 
402
     // Set direction en check limit switches
402
     // Set direction en check limit switches
403
     #ifndef COREXY
403
     #ifndef COREXY
404
-    if ((out_bits & (1<<X_AXIS)) != 0) {   // stepping along -X axis
404
+    if ((out_bits & (1<<X_AXIS)) != 0)   // stepping along -X axis
405
     #else
405
     #else
406
-    if ((((out_bits & (1<<X_AXIS)) != 0)&&(out_bits & (1<<Y_AXIS)) != 0)) {   //-X occurs for -A and -B
406
+    if ((out_bits & (1<<X_HEAD)) != 0)   //AlexBorro: Head direction in -X axis for CoreXY bots.
407
     #endif
407
     #endif
408
+    {
408
       CHECK_ENDSTOPS
409
       CHECK_ENDSTOPS
409
       {
410
       {
410
         #ifdef DUAL_X_CARRIAGE
411
         #ifdef DUAL_X_CARRIAGE
425
         }
426
         }
426
       }
427
       }
427
     }
428
     }
428
-    else { // +direction
429
+    else 
430
+    { // +direction
429
       CHECK_ENDSTOPS
431
       CHECK_ENDSTOPS
430
       {
432
       {
431
         #ifdef DUAL_X_CARRIAGE
433
         #ifdef DUAL_X_CARRIAGE
448
     }
450
     }
449
 
451
 
450
     #ifndef COREXY
452
     #ifndef COREXY
451
-    if ((out_bits & (1<<Y_AXIS)) != 0) {   // -direction
453
+    if ((out_bits & (1<<Y_AXIS)) != 0)   // -direction
452
     #else
454
     #else
453
-    if ((((out_bits & (1<<X_AXIS)) != 0)&&(out_bits & (1<<Y_AXIS)) == 0)) {   // -Y occurs for -A and +B
455
+    if ((out_bits & (1<<Y_HEAD)) != 0)  //AlexBorro: Head direction in -Y axis for CoreXY bots.
454
     #endif
456
     #endif
457
+    {
455
       CHECK_ENDSTOPS
458
       CHECK_ENDSTOPS
456
       {
459
       {
457
         #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1
460
         #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1
465
         #endif
468
         #endif
466
       }
469
       }
467
     }
470
     }
468
-    else { // +direction
471
+    else 
472
+    { // +direction
469
       CHECK_ENDSTOPS
473
       CHECK_ENDSTOPS
470
       {
474
       {
471
         #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1
475
         #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1

+ 7
- 5
Marlin/temperature.cpp 查看文件

136
 
136
 
137
 #ifdef PIDTEMP
137
 #ifdef PIDTEMP
138
 #ifdef PID_PARAMS_PER_EXTRUDER
138
 #ifdef PID_PARAMS_PER_EXTRUDER
139
-  float Kp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kp, DEFAULT_Kp, DEFAULT_Kp);
140
-  float Ki[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT);
141
-  float Kd[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT);
139
+  float Kp[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kp, DEFAULT_Kp, DEFAULT_Kp, DEFAULT_Kp);
140
+  float Ki[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT, DEFAULT_Ki*PID_dT);
141
+  float Kd[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT, DEFAULT_Kd / PID_dT);
142
   #ifdef PID_ADD_EXTRUSION_RATE
142
   #ifdef PID_ADD_EXTRUSION_RATE
143
-    float Kc[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kc, DEFAULT_Kc, DEFAULT_Kc);
143
+    float Kc[EXTRUDERS] = ARRAY_BY_EXTRUDERS(DEFAULT_Kc, DEFAULT_Kc, DEFAULT_Kc, DEFAULT_Kc);
144
   #endif // PID_ADD_EXTRUSION_RATE
144
   #endif // PID_ADD_EXTRUSION_RATE
145
 #else //PID_PARAMS_PER_EXTRUDER
145
 #else //PID_PARAMS_PER_EXTRUDER
146
   float Kp = DEFAULT_Kp;
146
   float Kp = DEFAULT_Kp;
460
   #endif 
460
   #endif 
461
   #if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
461
   #if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
462
     if (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN 
462
     if (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN 
463
+        && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN)
463
         && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN)
464
         && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN)
464
       setExtruderAutoFanState(EXTRUDER_2_AUTO_FAN_PIN, (fanState & 4) != 0);
465
       setExtruderAutoFanState(EXTRUDER_2_AUTO_FAN_PIN, (fanState & 4) != 0);
465
   #endif
466
   #endif
466
   #if defined(EXTRUDER_3_AUTO_FAN_PIN) && EXTRUDER_3_AUTO_FAN_PIN > -1
467
   #if defined(EXTRUDER_3_AUTO_FAN_PIN) && EXTRUDER_3_AUTO_FAN_PIN > -1
467
     if (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN 
468
     if (EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN 
468
-        && EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN)
469
         && EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN)
469
         && EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN)
470
+        && EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN)
471
+        && EXTRUDER_3_AUTO_FAN_PIN != EXTRUDER_2_AUTO_FAN_PIN)
470
       setExtruderAutoFanState(EXTRUDER_3_AUTO_FAN_PIN, (fanState & 8) != 0);
472
       setExtruderAutoFanState(EXTRUDER_3_AUTO_FAN_PIN, (fanState & 8) != 0);
471
   #endif
473
   #endif
472
 }
474
 }

+ 19
- 6
Marlin/ultralcd.cpp 查看文件

324
     quickStop();
324
     quickStop();
325
     if(SD_FINISHED_STEPPERRELEASE)
325
     if(SD_FINISHED_STEPPERRELEASE)
326
     {
326
     {
327
-        enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND));
327
+        enquecommands_P(PSTR(SD_FINISHED_RELEASECOMMAND));
328
     }
328
     }
329
     autotempShutdown();
329
     autotempShutdown();
330
 
330
 
347
         MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu);
347
         MENU_ITEM(submenu, MSG_DELTA_CALIBRATE, lcd_delta_calibrate_menu);
348
 #endif // DELTA_CALIBRATION_MENU
348
 #endif // DELTA_CALIBRATION_MENU
349
     }
349
     }
350
+/*JFR TEST*/            MENU_ITEM(gcode, "test multiline", PSTR("G4 S3\nM104 S50\nG4 S1\nM104 S200\nG4 S2\nM104 S0"));  // SD-card changed by user
350
     MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu);
351
     MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu);
351
 #ifdef SDSUPPORT
352
 #ifdef SDSUPPORT
352
     if (card.cardOK)
353
     if (card.cardOK)
394
     plan_set_position(0.0, 0.0, 0.0, current_position[E_AXIS]);
395
     plan_set_position(0.0, 0.0, 0.0, current_position[E_AXIS]);
395
 
396
 
396
     // Audio feedback
397
     // Audio feedback
397
-    enquecommand_P(PSTR("M300 S659 P200"));
398
-    enquecommand_P(PSTR("M300 S698 P200"));
398
+    enquecommands_P(PSTR("M300 S659 P200\nM300 S698 P200"));
399
     lcd_return_to_status();
399
     lcd_return_to_status();
400
 }
400
 }
401
 
401
 
677
     }
677
     }
678
 #endif
678
 #endif
679
     MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
679
     MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
680
+		
681
+    // JFR for RMud delta printer
682
+    MENU_ITEM(gcode, "Calibrate bed", PSTR("M702\nG28\nG1 X-77.94 Y-45 Z36 F8000\nG4 S3\nM701 P0\nG1 X77.94 Y-45 Z36\nG4 S3\nM701 P1\nG1 X0 Y90 Z36\nG4 S3\nM701 P2\nM700\nG1 X0 Y0 Z100 F8000"));
683
+    MENU_ITEM(gcode, "Check level", PSTR("G28\nG1 X0 Y0 Z1 F4000\nG1 X-77.94 Y-45 Z1\nG1 X77.94 Y-45\nG1 X0 Y90\nG1 X-77.94 Y-45\nG4 S2\nG1 X-77.94 Y-45 Z0.3 F2000\nG1 X-77.94 Y-45\nG1 X77.94 Y-45\nG1 X0 Y90\nG1 X-77.94 Y-45\nG1 X0 Y0 Z0"));
684
+    MENU_ITEM(gcode, "Retract filament", PSTR("M302\nM82\nG92 E0\nG1 F4000 E-800"));
685
+    MENU_ITEM(gcode, "Insert filament", PSTR("M302\nM82\nG92 E0\nG1 F4000 E60"));
686
+    MENU_ITEM(gcode, "Finalize filament", PSTR("G1 F4000 E790"));
680
     END_MENU();
687
     END_MENU();
681
 }
688
 }
682
 
689
 
1148
     lcd_move_y();
1155
     lcd_move_y();
1149
 	}
1156
 	}
1150
 	static void reprapworld_keypad_move_home() {
1157
 	static void reprapworld_keypad_move_home() {
1151
-		enquecommand_P((PSTR("G28"))); // move all axis home
1158
+		enquecommands_P((PSTR("G28"))); // move all axis home
1152
 	}
1159
 	}
1153
 #endif
1160
 #endif
1154
 
1161
 
1164
 /** Menu action functions **/
1171
 /** Menu action functions **/
1165
 static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); }
1172
 static void menu_action_back(menuFunc_t data) { lcd_goto_menu(data); }
1166
 static void menu_action_submenu(menuFunc_t data) { lcd_goto_menu(data); }
1173
 static void menu_action_submenu(menuFunc_t data) { lcd_goto_menu(data); }
1167
-static void menu_action_gcode(const char* pgcode) { enquecommand_P(pgcode); }
1174
+
1175
+static void menu_action_gcode(const char* pgcode)
1176
+{
1177
+    enquecommands_P(pgcode);
1178
+}
1179
+
1180
+
1168
 static void menu_action_function(menuFunc_t data) { (*data)(); }
1181
 static void menu_action_function(menuFunc_t data) { (*data)(); }
1169
 static void menu_action_sdfile(const char* filename, char* longFilename)
1182
 static void menu_action_sdfile(const char* filename, char* longFilename)
1170
 {
1183
 {
1174
     for(c = &cmd[4]; *c; c++)
1187
     for(c = &cmd[4]; *c; c++)
1175
         *c = tolower(*c);
1188
         *c = tolower(*c);
1176
     enquecommand(cmd);
1189
     enquecommand(cmd);
1177
-    enquecommand_P(PSTR("M24"));
1190
+    enquecommands_P(PSTR("M24"));
1178
     lcd_return_to_status();
1191
     lcd_return_to_status();
1179
 }
1192
 }
1180
 static void menu_action_sddirectory(const char* filename, char* longFilename)
1193
 static void menu_action_sddirectory(const char* filename, char* longFilename)

Loading…
取消
儲存