Merge pull request #472 from gregor2005/Marlin_v1
added support for the reprapworld keypad
This commit is contained in:
commit
90664d20a4
4 changed files with 100 additions and 3 deletions
|
@ -338,6 +338,11 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
|
||||||
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
// ==> REMEMBER TO INSTALL U8glib to your ARDUINO library folder: http://code.google.com/p/u8glib/wiki/u8glib
|
||||||
//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
//#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
|
||||||
|
|
||||||
|
// The RepRapWorld REPRAPWORLD_KEYPAD v1.1
|
||||||
|
// http://reprapworld.com/?products_details&products_id=202&cPath=1591_1626
|
||||||
|
//#define REPRAPWORLD_KEYPAD
|
||||||
|
//#define REPRAPWORLD_KEYPAD_MOVE_STEP 10.0 // how much should be moved when a key is pressed, eg 10.0 means 10mm per click
|
||||||
|
|
||||||
//automatic expansion
|
//automatic expansion
|
||||||
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
#if defined (REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER)
|
||||||
#define DOGLCD
|
#define DOGLCD
|
||||||
|
@ -350,6 +355,11 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th
|
||||||
#define NEWPANEL
|
#define NEWPANEL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(REPRAPWORLD_KEYPAD)
|
||||||
|
#define NEWPANEL
|
||||||
|
#define ULTIPANEL
|
||||||
|
#endif
|
||||||
|
|
||||||
// Preheat Constants
|
// Preheat Constants
|
||||||
#define PLA_PREHEAT_HOTEND_TEMP 180
|
#define PLA_PREHEAT_HOTEND_TEMP 180
|
||||||
#define PLA_PREHEAT_HPB_TEMP 70
|
#define PLA_PREHEAT_HPB_TEMP 70
|
||||||
|
|
|
@ -416,9 +416,27 @@
|
||||||
#define BEEPER 33 // Beeper on AUX-4
|
#define BEEPER 33 // Beeper on AUX-4
|
||||||
|
|
||||||
//buttons are directly attached using AUX-2
|
//buttons are directly attached using AUX-2
|
||||||
#define BTN_EN1 37
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
#define BTN_EN2 35
|
#define BTN_EN1 64 // encoder
|
||||||
#define BTN_ENC 31 //the click
|
#define BTN_EN2 59 // encoder
|
||||||
|
#define BTN_ENC 63 // enter button
|
||||||
|
#define SHIFT_OUT 40 // shift register
|
||||||
|
#define SHIFT_CLK 44 // shift register
|
||||||
|
#define SHIFT_LD 42 // shift register
|
||||||
|
// define register bit values, don't change it
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_F3 0
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_F2 1
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_F1 2
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_UP 3
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_RIGHT 4
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_MIDDLE 5
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_DOWN 6
|
||||||
|
#define BLEN_REPRAPWORLD_KEYPAD_LEFT 7
|
||||||
|
#else
|
||||||
|
#define BTN_EN1 37
|
||||||
|
#define BTN_EN2 35
|
||||||
|
#define BTN_ENC 31 //the click
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef G3D_PANEL
|
#ifdef G3D_PANEL
|
||||||
#define SDCARDDETECT 49
|
#define SDCARDDETECT 49
|
||||||
|
|
|
@ -113,6 +113,7 @@ static void menu_action_setting_edit_callback_long5(const char* pstr, unsigned l
|
||||||
|
|
||||||
/** Used variables to keep track of the menu */
|
/** Used variables to keep track of the menu */
|
||||||
volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
|
volatile uint8_t buttons;//Contains the bits of the currently pressed buttons.
|
||||||
|
volatile uint8_t buttons_reprapworld_keypad; // to store the reprapworld_keypad shiftregister values
|
||||||
|
|
||||||
uint8_t currentMenuViewOffset; /* scroll offset in the current menu */
|
uint8_t currentMenuViewOffset; /* scroll offset in the current menu */
|
||||||
uint32_t blocking_enc;
|
uint32_t blocking_enc;
|
||||||
|
@ -687,6 +688,24 @@ menu_edit_type(float, float51, ftostr51, 10)
|
||||||
menu_edit_type(float, float52, ftostr52, 100)
|
menu_edit_type(float, float52, ftostr52, 100)
|
||||||
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
menu_edit_type(unsigned long, long5, ftostr5, 0.01)
|
||||||
|
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
static void reprapworld_keypad_move_y_down() {
|
||||||
|
encoderPosition = 1;
|
||||||
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
|
lcd_move_y();
|
||||||
|
}
|
||||||
|
static void reprapworld_keypad_move_y_up() {
|
||||||
|
encoderPosition = -1;
|
||||||
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP;
|
||||||
|
lcd_move_y();
|
||||||
|
}
|
||||||
|
static void reprapworld_keypad_move_home() {
|
||||||
|
//enquecommand_P((PSTR("G28"))); // move all axis home
|
||||||
|
// TODO gregor: move all axis home, i have currently only one axis on my prusa i3
|
||||||
|
enquecommand_P((PSTR("G28 Y")));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/** End of menus **/
|
/** End of menus **/
|
||||||
|
|
||||||
static void lcd_quick_feedback()
|
static void lcd_quick_feedback()
|
||||||
|
@ -750,6 +769,13 @@ void lcd_init()
|
||||||
WRITE(BTN_EN1,HIGH);
|
WRITE(BTN_EN1,HIGH);
|
||||||
WRITE(BTN_EN2,HIGH);
|
WRITE(BTN_EN2,HIGH);
|
||||||
WRITE(BTN_ENC,HIGH);
|
WRITE(BTN_ENC,HIGH);
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
pinMode(SHIFT_CLK,OUTPUT);
|
||||||
|
pinMode(SHIFT_LD,OUTPUT);
|
||||||
|
pinMode(SHIFT_OUT,INPUT);
|
||||||
|
WRITE(SHIFT_OUT,HIGH);
|
||||||
|
WRITE(SHIFT_LD,HIGH);
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
pinMode(SHIFT_CLK,OUTPUT);
|
pinMode(SHIFT_CLK,OUTPUT);
|
||||||
pinMode(SHIFT_LD,OUTPUT);
|
pinMode(SHIFT_LD,OUTPUT);
|
||||||
|
@ -796,6 +822,17 @@ void lcd_update()
|
||||||
if (lcd_next_update_millis < millis())
|
if (lcd_next_update_millis < millis())
|
||||||
{
|
{
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_Y_DOWN) {
|
||||||
|
reprapworld_keypad_move_y_down();
|
||||||
|
}
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_Y_UP) {
|
||||||
|
reprapworld_keypad_move_y_up();
|
||||||
|
}
|
||||||
|
if (REPRAPWORLD_KEYPAD_MOVE_HOME) {
|
||||||
|
reprapworld_keypad_move_home();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (encoderDiff)
|
if (encoderDiff)
|
||||||
{
|
{
|
||||||
lcdDrawUpdate = 1;
|
lcdDrawUpdate = 1;
|
||||||
|
@ -876,6 +913,20 @@ void lcd_buttons_update()
|
||||||
if((blocking_enc<millis()) && (READ(BTN_ENC)==0))
|
if((blocking_enc<millis()) && (READ(BTN_ENC)==0))
|
||||||
newbutton |= EN_C;
|
newbutton |= EN_C;
|
||||||
buttons = newbutton;
|
buttons = newbutton;
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
// for the reprapworld_keypad
|
||||||
|
uint8_t newbutton_reprapworld_keypad=0;
|
||||||
|
WRITE(SHIFT_LD,LOW);
|
||||||
|
WRITE(SHIFT_LD,HIGH);
|
||||||
|
for(int8_t i=0;i<8;i++) {
|
||||||
|
newbutton_reprapworld_keypad = newbutton_reprapworld_keypad>>1;
|
||||||
|
if(READ(SHIFT_OUT))
|
||||||
|
newbutton_reprapworld_keypad|=(1<<7);
|
||||||
|
WRITE(SHIFT_CLK,HIGH);
|
||||||
|
WRITE(SHIFT_CLK,LOW);
|
||||||
|
}
|
||||||
|
buttons_reprapworld_keypad=~newbutton_reprapworld_keypad; //invert it, because a pressed switch produces a logical 0
|
||||||
|
#endif
|
||||||
#else //read it from the shift register
|
#else //read it from the shift register
|
||||||
uint8_t newbutton=0;
|
uint8_t newbutton=0;
|
||||||
WRITE(SHIFT_LD,LOW);
|
WRITE(SHIFT_LD,LOW);
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
#ifdef ULTIPANEL
|
#ifdef ULTIPANEL
|
||||||
void lcd_buttons_update();
|
void lcd_buttons_update();
|
||||||
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
extern volatile uint8_t buttons; //the last checked buttons in a bit array.
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
extern volatile uint8_t buttons_reprapworld_keypad; // to store the keypad shiftregister values
|
||||||
|
#endif
|
||||||
#else
|
#else
|
||||||
FORCE_INLINE void lcd_buttons_update() {}
|
FORCE_INLINE void lcd_buttons_update() {}
|
||||||
#endif
|
#endif
|
||||||
|
@ -41,6 +44,21 @@
|
||||||
#define EN_A (1<<BLEN_A)
|
#define EN_A (1<<BLEN_A)
|
||||||
|
|
||||||
#define LCD_CLICKED (buttons&EN_C)
|
#define LCD_CLICKED (buttons&EN_C)
|
||||||
|
#ifdef REPRAPWORLD_KEYPAD
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_F3 (1<<BLEN_REPRAPWORLD_KEYPAD_F3)
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_F2 (1<<BLEN_REPRAPWORLD_KEYPAD_F2)
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_F1 (1<<BLEN_REPRAPWORLD_KEYPAD_F1)
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_UP (1<<BLEN_REPRAPWORLD_KEYPAD_UP)
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_RIGHT (1<<BLEN_REPRAPWORLD_KEYPAD_RIGHT)
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_MIDDLE (1<<BLEN_REPRAPWORLD_KEYPAD_MIDDLE)
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_DOWN (1<<BLEN_REPRAPWORLD_KEYPAD_DOWN)
|
||||||
|
#define EN_REPRAPWORLD_KEYPAD_LEFT (1<<BLEN_REPRAPWORLD_KEYPAD_LEFT)
|
||||||
|
|
||||||
|
#define LCD_CLICKED ((buttons&EN_C) || (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_F1))
|
||||||
|
#define REPRAPWORLD_KEYPAD_MOVE_Y_DOWN (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_DOWN)
|
||||||
|
#define REPRAPWORLD_KEYPAD_MOVE_Y_UP (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_UP)
|
||||||
|
#define REPRAPWORLD_KEYPAD_MOVE_HOME (buttons_reprapworld_keypad&EN_REPRAPWORLD_KEYPAD_MIDDLE)
|
||||||
|
#endif //REPRAPWORLD_KEYPAD
|
||||||
#else
|
#else
|
||||||
//atomatic, do not change
|
//atomatic, do not change
|
||||||
#define B_LE (1<<BL_LE)
|
#define B_LE (1<<BL_LE)
|
||||||
|
|
Reference in a new issue