Browse Source

Merge pull request #219 from Justblair/Marlin_v1

Added new function to the LCD menu.  Preheat settings now adjustable and can be stored
ErikZalm 12 years ago
parent
commit
8c94ad0d26
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