Browse Source

Added Menu Options to the Main-> Control->Temperature Submenu that allow the user to set new values for the ABS and PLA preheat function. EEPROM updated so that these settings can also be committed to EEPROM memory.

Blair Thompson 13 years ago
parent
commit
aacbebbebe
4 changed files with 353 additions and 19 deletions
  1. 27
    1
      Marlin/EEPROMwrite.h
  2. 9
    6
      Marlin/language.h
  3. 5
    1
      Marlin/ultralcd.h
  4. 312
    11
      Marlin/ultralcd.pde

+ 27
- 1
Marlin/EEPROMwrite.h View File

@@ -6,7 +6,13 @@
6 6
 #include "temperature.h"
7 7
 //#include <EEPROM.h>
8 8
 
9
+int plaPreheatHotendTemp;
10
+int plaPreheatHPBTemp;
11
+int plaPreheatFanSpeed;
9 12
 
13
+int absPreheatHotendTemp;
14
+int absPreheatHPBTemp;
15
+int absPreheatFanSpeed;
10 16
 
11 17
 template <class T> int EEPROM_writeAnything(int &ee, const T& value)
12 18
 {
@@ -38,7 +44,7 @@ template <class T> int EEPROM_readAnything(int &ee, T& value)
38 44
 // the default values are used whenever there is a change to the data, to prevent
39 45
 // wrong data being written to the variables.
40 46
 // ALSO:  always make sure the variables in the Store and retrieve sections are in the same order.
41
-#define EEPROM_VERSION "V06"
47
+#define EEPROM_VERSION "V07"
42 48
 
43 49
 inline void EEPROM_StoreSettings() 
44 50
 {
@@ -58,6 +64,12 @@ inline void EEPROM_StoreSettings()
58 64
   EEPROM_writeAnything(i,max_z_jerk);
59 65
   EEPROM_writeAnything(i,max_e_jerk);
60 66
   EEPROM_writeAnything(i,add_homeing);
67
+  EEPROM_writeAnything(i,plaPreheatHotendTemp);
68
+  EEPROM_writeAnything(i,plaPreheatHPBTemp);
69
+  EEPROM_writeAnything(i,plaPreheatFanSpeed);
70
+  EEPROM_writeAnything(i,absPreheatHotendTemp);
71
+  EEPROM_writeAnything(i,absPreheatHPBTemp);
72
+  EEPROM_writeAnything(i,absPreheatFanSpeed);
61 73
   #ifdef PIDTEMP
62 74
     EEPROM_writeAnything(i,Kp);
63 75
     EEPROM_writeAnything(i,Ki);
@@ -162,6 +174,12 @@ inline void EEPROM_RetrieveSettings(bool def=false)
162 174
       EEPROM_readAnything(i,max_z_jerk);
163 175
       EEPROM_readAnything(i,max_e_jerk);
164 176
       EEPROM_readAnything(i,add_homeing);
177
+	  EEPROM_readAnything(i,plaPreheatHotendTemp);
178
+	  EEPROM_readAnything(i,plaPreheatHPBTemp);
179
+	  EEPROM_readAnything(i,plaPreheatFanSpeed);
180
+	  EEPROM_readAnything(i,absPreheatHotendTemp);
181
+	  EEPROM_readAnything(i,absPreheatHPBTemp);
182
+	  EEPROM_readAnything(i,absPreheatFanSpeed);
165 183
       #ifndef PIDTEMP
166 184
         float Kp,Ki,Kd;
167 185
       #endif
@@ -195,6 +213,14 @@ inline void EEPROM_RetrieveSettings(bool def=false)
195 213
       add_homeing[0] = add_homeing[1] = add_homeing[2] = 0;
196 214
       SERIAL_ECHO_START;
197 215
       SERIAL_ECHOLN("Using Default settings:");
216
+#ifdef ULTIPANEL
217
+	  plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP;
218
+	  plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP;
219
+	  plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
220
+	  absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP;
221
+	  absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP;
222
+	  absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
223
+#endif
198 224
     }
199 225
   #ifdef EEPROM_CHITCHAT
200 226
     EEPROM_printSettings();

+ 9
- 6
Marlin/language.h View File

@@ -77,6 +77,7 @@
77 77
 	#define MSG_MAIN_WIDE " Main        \003"
78 78
 	#define MSG_RECTRACT_WIDE " Rectract    \x7E"
79 79
 	#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
80
+	#define MSG_TEMPERATURE_RTN " Temperature  \003"
80 81
 	#define MSG_MOTION_WIDE " Motion      \x7E"
81 82
 	#define MSG_STORE_EPROM " Store memory"
82 83
 	#define MSG_LOAD_EPROM " Load memory"
@@ -101,14 +102,16 @@
101 102
 	#define MSG_KILLED "KILLED. "
102 103
 	#define MSG_STOPPED "STOPPED. "
103 104
 	#define MSG_PREHEAT_PLA " Preheat PLA"
105
+	#define MSG_PREHEAT_PLA_SETTINGS " Preheat PLA Setting"
106
+	#define MSG_PREHEAT_ABS_SETTINGS " Preheat ABS Setting"
104 107
 	#define MSG_PREHEAT_ABS " Preheat ABS"
105 108
 	#define MSG_STEPPER_RELEASED "Released."
106
-  #define MSG_CONTROL_RETRACT  " Retract mm:"
107
-  #define MSG_CONTROL_RETRACTF " Retract  F:"
108
-  #define MSG_CONTROL_RETRACT_ZLIFT " Hop mm:"
109
-  #define MSG_CONTROL_RETRACT_RECOVER " UnRet +mm:"
110
-  #define MSG_CONTROL_RETRACT_RECOVERF " UnRet  F:"
111
-  #define MSG_AUTORETRACT " AutoRetr.:"
109
+	#define MSG_CONTROL_RETRACT  " Retract mm:"
110
+	#define MSG_CONTROL_RETRACTF " Retract  F:"
111
+	#define MSG_CONTROL_RETRACT_ZLIFT " Hop mm:"
112
+	#define MSG_CONTROL_RETRACT_RECOVER " UnRet +mm:"
113
+	#define MSG_CONTROL_RETRACT_RECOVERF " UnRet  F:"
114
+	#define MSG_AUTORETRACT " AutoRetr.:"
112 115
 
113 116
 // Serial Console Messages
114 117
 

+ 5
- 1
Marlin/ultralcd.h View File

@@ -46,12 +46,14 @@
46 46
     #define BLOCK {blocking[BL_MI]=millis()+blocktime;blocking[BL_ST]=millis()+blocktime;}
47 47
     
48 48
   #endif
49
+
50
+
49 51
     
50 52
   // blocking time for recognizing a new keypress of one key, ms
51 53
   #define blocktime 500
52 54
   #define lcdslow 5
53 55
     
54
-  enum MainStatus{Main_Status, Main_Menu, Main_Prepare,Sub_PrepareMove, Main_Control, Main_SD,Sub_TempControl,Sub_MotionControl,Sub_RetractControl};
56
+  enum MainStatus{Main_Status, Main_Menu, Main_Prepare,Sub_PrepareMove, Main_Control, Main_SD,Sub_TempControl,Sub_MotionControl,Sub_RetractControl, Sub_PreheatPLASettings, Sub_PreheatABSSettings};
55 57
 
56 58
   class MainMenu{
57 59
   public:
@@ -71,6 +73,8 @@
71 73
     void showControlRetract();
72 74
     void showAxisMove();
73 75
     void showSD();
76
+	void showPLAsettings();
77
+	void showABSsettings();
74 78
     bool force_lcd_update;
75 79
     long lastencoderpos;
76 80
     int8_t lineoffset;

+ 312
- 11
Marlin/ultralcd.pde View File

@@ -528,17 +528,17 @@ void MainMenu::showPrepare()
528 528
       MENUITEM(  lcdprintPGM(MSG_SET_ORIGIN)  ,  BLOCK;enquecommand("G92 X0 Y0 Z0");beepshort(); ) ;
529 529
       break;
530 530
     case ItemP_preheat_pla:
531
-      MENUITEM(  lcdprintPGM(MSG_PREHEAT_PLA)  ,  BLOCK;setTargetHotend0(PLA_PREHEAT_HOTEND_TEMP);setTargetBed(PLA_PREHEAT_HPB_TEMP);
531
+		MENUITEM(  lcdprintPGM(MSG_PREHEAT_PLA)  ,  BLOCK;setTargetHotend0(plaPreheatHotendTemp);setTargetBed(plaPreheatHPBTemp);
532 532
       #if FAN_PIN > -1
533
-		FanSpeed=PLA_PREHEAT_FAN_SPEED;
533
+		FanSpeed = plaPreheatFanSpeed;
534 534
         analogWrite(FAN_PIN,  FanSpeed);
535 535
       #endif
536 536
       beepshort(); );
537 537
       break;
538 538
     case ItemP_preheat_abs:
539
-      MENUITEM(  lcdprintPGM(MSG_PREHEAT_ABS)  ,  BLOCK;setTargetHotend0(ABS_PREHEAT_HOTEND_TEMP);setTargetBed(ABS_PREHEAT_HPB_TEMP); 
539
+      MENUITEM(  lcdprintPGM(MSG_PREHEAT_ABS)  ,  BLOCK;setTargetHotend0(absPreheatHotendTemp);setTargetBed(absPreheatHPBTemp); 
540 540
       #if FAN_PIN > -1
541
-	  	FanSpeed=ABS_PREHEAT_FAN_SPEED;
541
+	  	FanSpeed = absPreheatFanSpeed;
542 542
         analogWrite(FAN_PIN,  FanSpeed);
543 543
       #endif
544 544
       beepshort(); );
@@ -789,7 +789,7 @@ void MainMenu::showTune()
789 789
         {
790 790
           lcd.setCursor(0,line);lcdprintPGM(MSG_NOZZLE);
791 791
           lcd.setCursor(13,line);lcd.print(ftostr3(intround(degTargetHotend0())));
792
-        }
792
+        } 
793 793
         
794 794
         if((activeline!=line) )
795 795
           break;
@@ -967,7 +967,9 @@ enum {
967 967
 ItemCT_bed,
968 968
 #endif  
969 969
   ItemCT_fan,
970
-  ItemCT_PID_P,ItemCT_PID_I,ItemCT_PID_D,ItemCT_PID_C
970
+  ItemCT_PID_P,ItemCT_PID_I,ItemCT_PID_D,ItemCT_PID_C,
971
+  ItemCT_PLA_PreHeat_Setting, 
972
+  ItemCT_ABS_PreHeat_Setting,
971 973
 };
972 974
 
973 975
 void MainMenu::showControlTemp()
@@ -1434,16 +1436,19 @@ void MainMenu::showControlTemp()
1434 1436
       #endif
1435 1437
     #endif
1436 1438
       break;
1439
+	  case ItemCT_PLA_PreHeat_Setting:
1440
+        MENUITEM(  lcdprintPGM(MSG_PREHEAT_PLA_SETTINGS)  ,  BLOCK;status=Sub_PreheatPLASettings;beepshort(); ) ;
1441
+	  break;
1442
+	  case ItemCT_ABS_PreHeat_Setting:
1443
+        MENUITEM(  lcdprintPGM(MSG_PREHEAT_ABS_SETTINGS)  ,  BLOCK;status=Sub_PreheatABSSettings;beepshort(); ) ;
1444
+	  break;
1437 1445
     default:   
1438 1446
       break;
1439 1447
   }
1440 1448
   line++;
1441 1449
  }
1442
- #ifdef PID_ADD_EXTRUSION_RATE
1443
-  updateActiveLines(ItemCT_PID_C,encoderpos);
1444
- #else
1445
-  updateActiveLines(ItemCT_PID_D,encoderpos);
1446
- #endif
1450
+
1451
+  updateActiveLines(ItemCT_ABS_PreHeat_Setting,encoderpos);
1447 1452
 }
1448 1453
 
1449 1454
 
@@ -2569,6 +2574,14 @@ void MainMenu::update()
2569 2574
       {
2570 2575
         showSD();
2571 2576
       }break;
2577
+	  case Sub_PreheatPLASettings: 
2578
+      {
2579
+        showPLAsettings();
2580
+      }break;
2581
+	  case Sub_PreheatABSSettings: 
2582
+      {
2583
+        showABSsettings();
2584
+      }break;
2572 2585
   }
2573 2586
   
2574 2587
   if(timeoutToStatus<millis())
@@ -2577,11 +2590,299 @@ void MainMenu::update()
2577 2590
   lastencoderpos=encoderpos;
2578 2591
 }
2579 2592
 
2593
+enum {
2594
+	ItemPLAPreHeat_Exit, 
2595
+	ItemPLAPreHeat_set_PLA_FanSpeed, 
2596
+	ItemPLAPreHeat_set_nozzle, 
2597
+	ItemPLAPreHeat_set_HPB,
2598
+	ItemPLAPreHeat_Store_Eprom
2599
+	};
2600
+  
2601
+void MainMenu::showPLAsettings()
2602
+{
2603
+#ifdef ULTIPANEL
2604
+ uint8_t line=0;
2605
+ clearIfNecessary();
2606
+ for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
2607
+ {
2608
+  switch(i)
2609
+  {
2580 2610
 
2611
+	case ItemPLAPreHeat_Exit:
2612
+      MENUITEM(  lcdprintPGM(MSG_TEMPERATURE_RTN)  ,  BLOCK;status=Sub_TempControl;beepshort(); ) ;
2613
+      break;
2581 2614
 
2615
+    case ItemPLAPreHeat_set_PLA_FanSpeed:
2616
+       {
2617
+        if(force_lcd_update)
2618
+        {
2619
+          lcd.setCursor(0,line);lcdprintPGM(MSG_FAN_SPEED);
2620
+          lcd.setCursor(13,line);lcd.print(ftostr3(plaPreheatFanSpeed));
2621
+        }
2622
+        
2623
+        if((activeline!=line) )
2624
+          break;
2625
+        
2626
+        if(CLICKED) 
2627
+        {
2628
+          linechanging=!linechanging;
2629
+          if(linechanging)
2630
+          {
2631
+			  encoderpos=plaPreheatFanSpeed;
2632
+          }
2633
+          else
2634
+          {
2635
+            encoderpos=activeline*lcdslow;
2636
+            beepshort();
2637
+          }
2638
+          BLOCK;
2639
+        }
2640
+        if(linechanging)
2641
+        {
2642
+          if(encoderpos<0) encoderpos=0;
2643
+          if(encoderpos>255) encoderpos=255;
2644
+          plaPreheatFanSpeed=encoderpos;
2645
+          lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));
2646
+        }
2647
+      }break;
2582 2648
 
2649
+    case ItemPLAPreHeat_set_nozzle:
2650
+      {
2651
+        if(force_lcd_update)
2652
+        {
2653
+          lcd.setCursor(0,line);lcdprintPGM(MSG_NOZZLE);
2654
+          lcd.setCursor(13,line);lcd.print(ftostr3(plaPreheatHotendTemp));
2655
+        } 
2656
+        
2657
+        if((activeline!=line) )
2658
+          break;
2659
+        
2660
+        if(CLICKED)
2661
+        {
2662
+          linechanging=!linechanging;
2663
+          if(linechanging)
2664
+          {
2665
+              encoderpos=plaPreheatHotendTemp;
2666
+          }
2667
+          else
2668
+          {
2669
+            encoderpos=activeline*lcdslow;
2670
+            beepshort();
2671
+          }
2672
+          BLOCK;
2673
+        }
2674
+        if(linechanging)
2675
+        {
2676
+          if(encoderpos<0) encoderpos=0;
2677
+          if(encoderpos>260) encoderpos=260;
2678
+		  plaPreheatHotendTemp = encoderpos;
2679
+          lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));
2680
+        }
2681
+      }break;
2583 2682
 
2683
+    case ItemPLAPreHeat_set_HPB:
2684
+      {
2685
+        if(force_lcd_update)
2686
+        {
2687
+          lcd.setCursor(0,line);lcdprintPGM(MSG_BED);
2688
+          lcd.setCursor(13,line);lcd.print(ftostr3(plaPreheatHPBTemp));
2689
+        } 
2690
+        
2691
+        if((activeline!=line) )
2692
+          break;
2693
+        
2694
+        if(CLICKED)
2695
+        {
2696
+          linechanging=!linechanging;
2697
+          if(linechanging)
2698
+          {
2699
+              encoderpos=plaPreheatHPBTemp;
2700
+          }
2701
+          else
2702
+          {
2703
+            encoderpos=activeline*lcdslow;
2704
+            beepshort();
2705
+          }
2706
+          BLOCK;
2707
+        }
2708
+        if(linechanging)
2709
+        {
2710
+          if(encoderpos<0) encoderpos=0;
2711
+          if(encoderpos>250) encoderpos=150;
2712
+		  plaPreheatHPBTemp = encoderpos;
2713
+          lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));
2714
+        }
2715
+      }break;
2716
+	case ItemPLAPreHeat_Store_Eprom:
2717
+    {
2718
+      if(force_lcd_update)
2719
+      {
2720
+        lcd.setCursor(0,line);lcdprintPGM(MSG_STORE_EPROM);
2721
+      }
2722
+      if((activeline==line) && CLICKED)
2723
+      {
2724
+        //enquecommand("M84");
2725
+        beepshort();
2726
+        BLOCK;
2727
+        EEPROM_StoreSettings();
2728
+      }
2729
+    }break;
2730
+      default:   
2731
+      break;
2732
+  }
2733
+  line++;
2734
+ }
2735
+ updateActiveLines(ItemPLAPreHeat_Store_Eprom,encoderpos);
2736
+#endif
2737
+}
2738
+
2739
+enum {
2740
+	ItemABSPreHeat_Exit, 
2741
+	ItemABSPreHeat_set_FanSpeed, 
2742
+	ItemABSPreHeat_set_nozzle, 
2743
+	ItemABSPreHeat_set_HPB,
2744
+	ItemABSPreHeat_Store_Eprom
2745
+	};
2746
+
2747
+void MainMenu::showABSsettings()
2748
+{
2749
+#ifdef ULTIPANEL
2750
+ uint8_t line=0;
2751
+ clearIfNecessary();
2752
+ for(int8_t i=lineoffset;i<lineoffset+LCD_HEIGHT;i++)
2753
+ {
2754
+  switch(i)
2755
+  {
2756
+
2757
+	case ItemABSPreHeat_Exit:
2758
+      MENUITEM(  lcdprintPGM(MSG_TEMPERATURE_RTN)  ,  BLOCK;status=Sub_TempControl;beepshort(); ) ;
2759
+      break;
2760
+
2761
+    case ItemABSPreHeat_set_FanSpeed:
2762
+       {
2763
+        if(force_lcd_update)
2764
+        {
2765
+          lcd.setCursor(0,line);lcdprintPGM(MSG_FAN_SPEED);
2766
+          lcd.setCursor(13,line);lcd.print(ftostr3(absPreheatFanSpeed));
2767
+        }
2768
+        
2769
+        if((activeline!=line) )
2770
+          break;
2771
+        
2772
+        if(CLICKED) 
2773
+        {
2774
+          linechanging=!linechanging;
2775
+          if(linechanging)
2776
+          {
2777
+			  encoderpos=absPreheatFanSpeed;
2778
+          }
2779
+          else
2780
+          {
2781
+            encoderpos=activeline*lcdslow;
2782
+            beepshort();
2783
+          }
2784
+          BLOCK;
2785
+        }
2786
+        if(linechanging)
2787
+        {
2788
+          if(encoderpos<0) encoderpos=0;
2789
+          if(encoderpos>255) encoderpos=255;
2790
+          absPreheatFanSpeed=encoderpos;
2791
+          lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));
2792
+        }
2793
+      }break;
2794
+
2795
+    case ItemABSPreHeat_set_nozzle:
2796
+      {
2797
+        if(force_lcd_update)
2798
+        {
2799
+          lcd.setCursor(0,line);lcdprintPGM(MSG_NOZZLE);
2800
+          lcd.setCursor(13,line);lcd.print(ftostr3(absPreheatHotendTemp));
2801
+        } 
2802
+        
2803
+        if((activeline!=line) )
2804
+          break;
2805
+        
2806
+        if(CLICKED)
2807
+        {
2808
+          linechanging=!linechanging;
2809
+          if(linechanging)
2810
+          {
2811
+              encoderpos=absPreheatHotendTemp;
2812
+          }
2813
+          else
2814
+          {
2815
+            encoderpos=activeline*lcdslow;
2816
+            beepshort();
2817
+          }
2818
+          BLOCK;
2819
+        }
2820
+        if(linechanging)
2821
+        {
2822
+          if(encoderpos<0) encoderpos=0;
2823
+          if(encoderpos>260) encoderpos=260;
2824
+		  absPreheatHotendTemp = encoderpos;
2825
+          lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));
2826
+        }
2827
+      }break;
2828
+
2829
+    case ItemABSPreHeat_set_HPB:
2830
+      {
2831
+        if(force_lcd_update)
2832
+        {
2833
+          lcd.setCursor(0,line);lcdprintPGM(MSG_BED);
2834
+          lcd.setCursor(13,line);lcd.print(ftostr3(absPreheatHPBTemp));
2835
+        } 
2836
+        
2837
+        if((activeline!=line) )
2838
+          break;
2839
+        
2840
+        if(CLICKED)
2841
+        {
2842
+          linechanging=!linechanging;
2843
+          if(linechanging)
2844
+          {
2845
+              encoderpos=absPreheatHPBTemp;
2846
+          }
2847
+          else
2848
+          {
2849
+            encoderpos=activeline*lcdslow;
2850
+            beepshort();
2851
+          }
2852
+          BLOCK;
2853
+        }
2854
+        if(linechanging)
2855
+        {
2856
+          if(encoderpos<0) encoderpos=0;
2857
+          if(encoderpos>250) encoderpos=150;
2858
+		  absPreheatHPBTemp = encoderpos;
2859
+          lcd.setCursor(13,line);lcd.print(itostr3(encoderpos));
2860
+        }
2861
+      }break;
2862
+	case ItemABSPreHeat_Store_Eprom:
2863
+    {
2864
+      if(force_lcd_update)
2865
+      {
2866
+        lcd.setCursor(0,line);lcdprintPGM(MSG_STORE_EPROM);
2867
+      }
2868
+      if((activeline==line) && CLICKED)
2869
+      {
2870
+        //enquecommand("M84");
2871
+        beepshort();
2872
+        BLOCK;
2873
+        EEPROM_StoreSettings();
2874
+      }
2875
+    }break;
2876
+      default:   
2877
+      break;
2878
+  }
2879
+  line++;
2880
+ }
2881
+ updateActiveLines(ItemABSPreHeat_Store_Eprom,encoderpos);
2882
+#endif
2883
+}
2584 2884
 
2885
+//**********************************************************************************************************
2585 2886
 //  convert float to string with +123.4 format
2586 2887
 char *ftostr3(const float &x)
2587 2888
 {

Loading…
Cancel
Save