Quellcode durchsuchen

Merge pull request #472 from gregor2005/Marlin_v1

added support for the reprapworld keypad
ErikZalm vor 12 Jahren
Ursprung
Commit
90664d20a4
4 geänderte Dateien mit 100 neuen und 3 gelöschten Zeilen
  1. 10
    0
      Marlin/Configuration.h
  2. 21
    3
      Marlin/pins.h
  3. 51
    0
      Marlin/ultralcd.cpp
  4. 18
    0
      Marlin/ultralcd.h

+ 10
- 0
Marlin/Configuration.h Datei anzeigen

338
 // ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
338
 // ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
339
 //#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
339
 //#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
340
 
340
 
341
+// The RepRapWorld REPRAPWORLD_KEYPAD v1.1
342
+// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
343
+//#define REPRAPWORLD_KEYPAD
344
+//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click
345
+
341
 //automatic expansion
346
 //automatic expansion
342
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
347
 #if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
343
  #define DOGLCD
348
  #define DOGLCD
350
  #define NEWPANEL
355
  #define NEWPANEL
351
 #endif 
356
 #endif 
352
 
357
 
358
+#if defined(REPRAPWORLD_KEYPAD)
359
+  #define NEWPANEL
360
+  #define ULTIPANEL
361
+#endif
362
+
353
 // Preheat Constants
363
 // Preheat Constants
354
 #define PLA_PREHEAT_HOTEND_TEMP 180 
364
 #define PLA_PREHEAT_HOTEND_TEMP 180 
355
 #define PLA_PREHEAT_HPB_TEMP 70
365
 #define PLA_PREHEAT_HPB_TEMP 70

+ 21
- 3
Marlin/pins.h Datei anzeigen

416
       #define BEEPER 33	 // Beeper on AUX-4
416
       #define BEEPER 33	 // Beeper on AUX-4
417
 
417
 
418
       //buttons are directly attached using AUX-2
418
       //buttons are directly attached using AUX-2
419
-      #define BTN_EN1 37
420
-      #define BTN_EN2 35
421
-      #define BTN_ENC 31  //the click
419
+      #ifdef REPRAPWORLD_KEYPAD
420
+        #define BTN_EN1 64 // encoder
421
+        #define BTN_EN2 59 // encoder
422
+        #define BTN_ENC 63 // enter button
423
+        #define SHIFT_OUT 40 // shift register
424
+        #define SHIFT_CLK 44 // shift register
425
+        #define SHIFT_LD 42 // shift register
426
+        // define register bit values, don't change it
427
+        #define BLEN_REPRAPWORLD_KEYPAD_F3 0
428
+        #define BLEN_REPRAPWORLD_KEYPAD_F2 1
429
+        #define BLEN_REPRAPWORLD_KEYPAD_F1 2
430
+        #define BLEN_REPRAPWORLD_KEYPAD_UP 3
431
+        #define BLEN_REPRAPWORLD_KEYPAD_RIGHT 4
432
+        #define BLEN_REPRAPWORLD_KEYPAD_MIDDLE 5
433
+        #define BLEN_REPRAPWORLD_KEYPAD_DOWN 6
434
+        #define BLEN_REPRAPWORLD_KEYPAD_LEFT 7
435
+	  #else
436
+        #define BTN_EN1 37
437
+        #define BTN_EN2 35
438
+        #define BTN_ENC 31  //the click
439
+      #endif
422
 
440
 
423
       #ifdef G3D_PANEL
441
       #ifdef G3D_PANEL
424
         #define SDCARDDETECT 49
442
         #define SDCARDDETECT 49

+ 51
- 0
Marlin/ultralcd.cpp Datei anzeigen

113
 
113
 
114
 /** Used variables to keep track of the menu */
114
 /** Used variables to keep track of the menu */
115
 volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
115
 volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
116
+volatile uint8_t buttons_reprapworld_keypad; // to store the reprapworld_keypad shiftregister values
116
 
117
 
117
 uint8_t currentMenuViewOffset;              /* scroll offset in the current menu */
118
 uint8_t currentMenuViewOffset;              /* scroll offset in the current menu */
118
 uint32_t blocking_enc;
119
 uint32_t blocking_enc;
687
 menu_edit_type(float, float52, ftostr52, 100)
688
 menu_edit_type(float, float52, ftostr52, 100)
688
 menu_edit_type(unsigned long, long5, ftostr5, 0.01)
689
 menu_edit_type(unsigned long, long5, ftostr5, 0.01)
689
 
690
 
691
+#ifdef REPRAPWORLD_KEYPAD
692
+	static void reprapworld_keypad_move_y_down() {
693
+        encoderPosition = 1;
694
+        move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
695
+		lcd_move_y();
696
+	}
697
+	static void reprapworld_keypad_move_y_up() {
698
+		encoderPosition = -1;
699
+		move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
700
+    	lcd_move_y();
701
+	}
702
+	static void reprapworld_keypad_move_home() {
703
+		//enquecommand_P((PSTR("G28"))); // move all axis home
704
+		// TODO gregor: move all axis home, i have currently only one axis on my prusa i3
705
+		enquecommand_P((PSTR("G28 Y")));
706
+	}
707
+#endif
708
+
690
 /** End of menus **/
709
 /** End of menus **/
691
 
710
 
692
 static void lcd_quick_feedback()
711
 static void lcd_quick_feedback()
750
     WRITE(BTN_EN1,HIGH);
769
     WRITE(BTN_EN1,HIGH);
751
     WRITE(BTN_EN2,HIGH);
770
     WRITE(BTN_EN2,HIGH);
752
     WRITE(BTN_ENC,HIGH);
771
     WRITE(BTN_ENC,HIGH);
772
+    #ifdef REPRAPWORLD_KEYPAD
773
+      pinMode(SHIFT_CLK,OUTPUT);
774
+      pinMode(SHIFT_LD,OUTPUT);
775
+      pinMode(SHIFT_OUT,INPUT);
776
+      WRITE(SHIFT_OUT,HIGH);
777
+      WRITE(SHIFT_LD,HIGH);
778
+    #endif
753
 #else
779
 #else
754
     pinMode(SHIFT_CLK,OUTPUT);
780
     pinMode(SHIFT_CLK,OUTPUT);
755
     pinMode(SHIFT_LD,OUTPUT);
781
     pinMode(SHIFT_LD,OUTPUT);
796
     if (lcd_next_update_millis < millis())
822
     if (lcd_next_update_millis < millis())
797
     {
823
     {
798
 #ifdef ULTIPANEL
824
 #ifdef ULTIPANEL
825
+		#ifdef REPRAPWORLD_KEYPAD
826
+        	if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) {
827
+        		reprapworld_keypad_move_y_down();
828
+        	}
829
+        	if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) {
830
+        		reprapworld_keypad_move_y_up();
831
+        	}
832
+        	if (REPRAPWORLD_KEYPAD_MOVE_HOME) {
833
+        		reprapworld_keypad_move_home();
834
+        	}
835
+		#endif
799
         if (encoderDiff)
836
         if (encoderDiff)
800
         {
837
         {
801
             lcdDrawUpdate = 1;
838
             lcdDrawUpdate = 1;
876
     if((blocking_enc<millis()) && (READ(BTN_ENC)==0))
913
     if((blocking_enc<millis()) && (READ(BTN_ENC)==0))
877
         newbutton |= EN_C;
914
         newbutton |= EN_C;
878
     buttons = newbutton;
915
     buttons = newbutton;
916
+    #ifdef REPRAPWORLD_KEYPAD
917
+      // for the reprapworld_keypad
918
+      uint8_t newbutton_reprapworld_keypad=0;
919
+      WRITE(SHIFT_LD,LOW);
920
+      WRITE(SHIFT_LD,HIGH);
921
+      for(int8_t i=0;i<8;i++) {
922
+          newbutton_reprapworld_keypad = newbutton_reprapworld_keypad>>1;
923
+          if(READ(SHIFT_OUT))
924
+              newbutton_reprapworld_keypad|=(1<<7);
925
+          WRITE(SHIFT_CLK,HIGH);
926
+          WRITE(SHIFT_CLK,LOW);
927
+      }
928
+      buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
929
+	#endif
879
 #else   //read it from the shift register
930
 #else   //read it from the shift register
880
     uint8_t newbutton=0;
931
     uint8_t newbutton=0;
881
     WRITE(SHIFT_LD,LOW);
932
     WRITE(SHIFT_LD,LOW);

+ 18
- 0
Marlin/ultralcd.h Datei anzeigen

23
   #ifdef ULTIPANEL
23
   #ifdef ULTIPANEL
24
   void lcd_buttons_update();
24
   void lcd_buttons_update();
25
   extern volatile uint8_t buttons;  //the last checked buttons in a bit array.
25
   extern volatile uint8_t buttons;  //the last checked buttons in a bit array.
26
+  #ifdef REPRAPWORLD_KEYPAD
27
+    extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shiftregister values
28
+  #endif
26
   #else
29
   #else
27
   FORCE_INLINE void lcd_buttons_update() {}
30
   FORCE_INLINE void lcd_buttons_update() {}
28
   #endif
31
   #endif
41
     #define EN_A (1<<BLEN_A)
44
     #define EN_A (1<<BLEN_A)
42
 
45
 
43
     #define LCD_CLICKED (buttons&EN_C)
46
     #define LCD_CLICKED (buttons&EN_C)
47
+    #ifdef REPRAPWORLD_KEYPAD
48
+  	  #define EN_REPRAPWORLD_KEYPAD_F3 (1<<BLEN_REPRAPWORLD_KEYPAD_F3)
49
+  	  #define EN_REPRAPWORLD_KEYPAD_F2 (1<<BLEN_REPRAPWORLD_KEYPAD_F2)
50
+  	  #define EN_REPRAPWORLD_KEYPAD_F1 (1<<BLEN_REPRAPWORLD_KEYPAD_F1)
51
+  	  #define EN_REPRAPWORLD_KEYPAD_UP (1<<BLEN_REPRAPWORLD_KEYPAD_UP)
52
+  	  #define EN_REPRAPWORLD_KEYPAD_RIGHT (1<<BLEN_REPRAPWORLD_KEYPAD_RIGHT)
53
+  	  #define EN_REPRAPWORLD_KEYPAD_MIDDLE (1<<BLEN_REPRAPWORLD_KEYPAD_MIDDLE)
54
+  	  #define EN_REPRAPWORLD_KEYPAD_DOWN (1<<BLEN_REPRAPWORLD_KEYPAD_DOWN)
55
+  	  #define EN_REPRAPWORLD_KEYPAD_LEFT (1<<BLEN_REPRAPWORLD_KEYPAD_LEFT)
56
+
57
+  	  #define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1))
58
+  	  #define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN)
59
+  	  #define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP)
60
+  	  #define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
61
+    #endif //REPRAPWORLD_KEYPAD
44
   #else
62
   #else
45
     //atomatic, do not change
63
     //atomatic, do not change
46
     #define B_LE (1<<BL_LE)
64
     #define B_LE (1<<BL_LE)

Laden…
Abbrechen
Speichern