/** LCD API **/ void lcd_init() { lcd_implementation_init(); #ifdef NEWPANEL pinMode(BTN_EN1,INPUT); pinMode(BTN_EN2,INPUT); pinMode(BTN_ENC,INPUT); pinMode(SDCARDDETECT,INPUT); WRITE(BTN_EN1,HIGH); WRITE(BTN_EN2,HIGH); WRITE(BTN_ENC,HIGH); #else pinMode(SHIFT_CLK,OUTPUT); pinMode(SHIFT_LD,OUTPUT); pinMode(SHIFT_EN,OUTPUT); pinMode(SHIFT_OUT,INPUT); WRITE(SHIFT_OUT,HIGH); WRITE(SHIFT_LD,HIGH); WRITE(SHIFT_EN,LOW); #endif//!NEWPANEL #if (SDCARDDETECT > -1) WRITE(SDCARDDETECT, HIGH); lcd_oldcardstatus = IS_SD_INSERTED; #endif//(SDCARDDETECT > -1) lcd_buttons_update(); encoderDiff = 0; }
void lcd_update() { static unsigned long timeoutToStatus = 0; lcd_buttons_update(); #if (SDCARDDETECT > -1) if((IS_SD_INSERTED != lcd_oldcardstatus)) { lcdDrawUpdate = 2; lcd_oldcardstatus = IS_SD_INSERTED; lcd_implementation_init(); // to maybe revive the lcd if static electricty killed it. if(lcd_oldcardstatus) { card.initsd(); LCD_MESSAGEPGM(MSG_SD_INSERTED); } else { card.release(); LCD_MESSAGEPGM(MSG_SD_REMOVED); } } #endif//CARDINSERTED if (lcd_next_update_millis < millis()) { #ifdef ULTIPANEL if (encoderDiff) { lcdDrawUpdate = 1; encoderPosition += encoderDiff; encoderDiff = 0; timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; } if (LCD_CLICKED) timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; #endif//ULTIPANEL (*currentMenu)(); #ifdef ULTIPANEL if(timeoutToStatus < millis() && currentMenu != lcd_status_screen) { lcd_return_to_status(); lcdDrawUpdate = 2; } #endif//ULTIPANEL if (lcdDrawUpdate == 2) lcd_implementation_clear(); if (lcdDrawUpdate) lcdDrawUpdate--; lcd_next_update_millis = millis() + 100; } }
/** LCD API **/ void lcd_init() { lcd_implementation_init(); #ifdef NEWPANEL pinMode(BTN_EN1,INPUT); pinMode(BTN_EN2,INPUT); WRITE(BTN_EN1,HIGH); WRITE(BTN_EN2,HIGH); #if BTN_ENC > 0 pinMode(BTN_ENC,INPUT); WRITE(BTN_ENC,HIGH); #endif #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 // Not NEWPANEL #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register pinMode (SR_DATA_PIN, OUTPUT); pinMode (SR_CLK_PIN, OUTPUT); #elif defined(SHIFT_CLK) pinMode(SHIFT_CLK,OUTPUT); pinMode(SHIFT_LD,OUTPUT); pinMode(SHIFT_EN,OUTPUT); pinMode(SHIFT_OUT,INPUT); WRITE(SHIFT_OUT,HIGH); WRITE(SHIFT_LD,HIGH); WRITE(SHIFT_EN,LOW); #else #ifdef ULTIPANEL #error ULTIPANEL requires an encoder #endif #endif // SR_LCD_2W_NL #endif//!NEWPANEL #if defined (SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0) pinMode(SDCARDDETECT,INPUT); WRITE(SDCARDDETECT, HIGH); lcd_oldcardstatus = IS_SD_INSERTED; #endif//(SDCARDDETECT > 0) #ifdef LCD_HAS_SLOW_BUTTONS slow_buttons = 0; #endif lcd_buttons_update(); #ifdef ULTIPANEL encoderDiff = 0; #endif }
/** LCD API **/ void lcd_init() { lcd_implementation_init(); #ifdef NEWPANEL SET_INPUT(BTN_EN1); SET_INPUT(BTN_EN2); #if (SDCARDDETECT != -1) SET_INPUT(SDCARDDETECT); #endif WRITE(BTN_EN1,HIGH); WRITE(BTN_EN2,HIGH); #if BTN_ENC > 0 SET_INPUT(BTN_ENC); WRITE(BTN_ENC,HIGH); #endif #ifdef REPRAPWORLD_KEYPAD SET_OUTPUT(SHIFT_CLK); SET_OUTPUT(SHIFT_LD); SET_INPUT(SHIFT_OUT); WRITE(SHIFT_OUT,HIGH); WRITE(SHIFT_LD,HIGH); #endif #else #ifdef SR_LCD_2W_NL SET_OUTPUT(SR_DATA_PIN); SET_OUTPUT(SR_CLK_PIN); #else SET_OUTPUT(SHIFT_CLK); SET_OUTPUT(SHIFT_LD); SET_OUTPUT(SHIFT_EN); SET_INPUT(SHIFT_OUT); WRITE(SHIFT_OUT,HIGH); WRITE(SHIFT_LD,HIGH); WRITE(SHIFT_EN,LOW); #endif // SR_LCD_2W_NL #endif//!NEWPANEL #if (SDCARDDETECT > 0) WRITE(SDCARDDETECT, HIGH); lcd_oldcardstatus = IS_SD_INSERTED; #endif//(SDCARDDETECT > 0) #ifdef LCD_HAS_SLOW_BUTTONS slow_buttons = 0; #endif lcd_buttons_update(); #ifdef ULTIPANEL encoderDiff = 0; #endif }
void lcd_update() { static unsigned long timeoutToStatus = 0; lcd_buttons_update(); #ifdef LCD_HAS_SLOW_BUTTONS buttons |= lcd_implementation_read_slow_buttons(); // buttons which take too long to read in interrupt context #endif #if (SDCARDDETECT > 0) if((IS_SD_INSERTED != lcd_oldcardstatus)) { lcdDrawUpdate = 2; lcd_oldcardstatus = IS_SD_INSERTED; lcd_implementation_init(); // to maybe revive the lcd if static electricty killed it. if(lcd_oldcardstatus) { card.initsd(); LCD_MESSAGEPGM(MSG_SD_INSERTED); } else { card.release(); LCD_MESSAGEPGM(MSG_SD_REMOVED); } } #endif//CARDINSERTED if (lcd_next_update_millis < millis()) { #ifdef ULTIPANEL #ifdef REPRAPWORLD_KEYPAD if (REPRAPWORLD_KEYPAD_MOVE_Z_UP) { reprapworld_keypad_move_z_up(); } if (REPRAPWORLD_KEYPAD_MOVE_Z_DOWN) { reprapworld_keypad_move_z_down(); } if (REPRAPWORLD_KEYPAD_MOVE_X_LEFT) { reprapworld_keypad_move_x_left(); } if (REPRAPWORLD_KEYPAD_MOVE_X_RIGHT) { reprapworld_keypad_move_x_right(); } 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 (abs(encoderDiff) >= ENCODER_PULSES_PER_STEP) { lcdDrawUpdate = 1; encoderPosition += encoderDiff / ENCODER_PULSES_PER_STEP; encoderDiff = 0; timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; } if (LCD_CLICKED) timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; #endif//ULTIPANEL #ifdef DOGLCD // Changes due to different driver architecture of the DOGM display blink++; // Variable for fan animation and alive dot u8g.firstPage(); do { u8g.setFont(u8g_font_6x10_marlin); u8g.setPrintPos(125,0); if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot u8g.drawPixel(127,63); // draw alive dot u8g.setColorIndex(1); // black on white (*currentMenu)(); if (!lcdDrawUpdate) break; // Terminate display update, when nothing new to draw. This must be done before the last dogm.next() } while( u8g.nextPage() ); #else (*currentMenu)(); #endif #ifdef LCD_HAS_STATUS_INDICATORS lcd_implementation_update_indicators(); #endif #ifdef ULTIPANEL if(timeoutToStatus < millis() && currentMenu != lcd_status_screen) { lcd_return_to_status(); lcdDrawUpdate = 2; } #endif//ULTIPANEL if (lcdDrawUpdate == 2) lcd_implementation_clear(); if (lcdDrawUpdate) lcdDrawUpdate--; lcd_next_update_millis = millis() + 100; } }
/** LCD API **/ void lcd_init() { lcd_implementation_init(); #ifdef NEWPANEL pinMode(BTN_EN1,INPUT); pinMode(BTN_EN2,INPUT); WRITE(BTN_EN1,HIGH); WRITE(BTN_EN2,HIGH); #if BTN_ENC > 0 pinMode(BTN_ENC,INPUT); WRITE(BTN_ENC,HIGH); #endif #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 // Not NEWPANEL #ifdef SR_LCD_2W_NL // Non latching 2 wire shift register pinMode (SR_DATA_PIN, OUTPUT); pinMode (SR_CLK_PIN, OUTPUT); #elif defined(SHIFT_CLK) pinMode(SHIFT_CLK,OUTPUT); pinMode(SHIFT_LD,OUTPUT); pinMode(SHIFT_EN,OUTPUT); pinMode(SHIFT_OUT,INPUT); WRITE(SHIFT_OUT,HIGH); WRITE(SHIFT_LD,HIGH); WRITE(SHIFT_EN,LOW); #else #ifdef ULTIPANEL #error ULTIPANEL requires an encoder #endif #endif // SR_LCD_2W_NL #endif//!NEWPANEL #if defined (SDSUPPORT) && defined(SDCARDDETECT) && (SDCARDDETECT > 0) pinMode(SDCARDDETECT,INPUT); WRITE(SDCARDDETECT, HIGH); lcd_oldcardstatus = IS_SD_INSERTED; #endif//(SDCARDDETECT > 0) #ifdef LCD_HAS_SLOW_BUTTONS slow_buttons = 0; #endif lcd_buttons_update(); #ifdef ULTIPANEL encoderDiff = 0; #endif #ifdef MIREGLI //ClockFreq = (F_CPU) / (16 + 2*TWBR * 4^TWPS) //TWBR = ((F_CPU / ClockFreq) - 16)/2*4^TWPS TWBR = ((F_CPU / I2C_FREQ) - 16)/2*1; TWSR = 0x00; //lcd_lib_led_color(48,48,60); //Blue //lcd_lib_led_color(10,60,10); //Green lcd_lib_led_color(51,153,255); //SeeMeCNC Blue LED i2c_led_write(0, 0x80);//MODE1 i2c_led_write(1, 0x1C);//MODE2 i2c_led_write(2, led_r);//PWM0 i2c_led_write(3, led_g);//PWM1 i2c_led_write(4, led_b);//PWM2 i2c_led_write(5, 0x00);//PWM3 i2c_led_write(6, 0xFF);//GRPPWM i2c_led_write(7, 0x00);//GRPFREQ i2c_led_write(8, 0xAA);//LEDOUT #endif }
void lcd_update() { static unsigned long timeoutToStatus = 0; lcd_buttons_update(); #if (SDCARDDETECT > -1) if((IS_SD_INSERTED != lcd_oldcardstatus)) { lcdDrawUpdate = 2; lcd_oldcardstatus = IS_SD_INSERTED; lcd_implementation_init(); // to maybe revive the lcd if static electricty killed it. if(lcd_oldcardstatus) { card.initsd(); LCD_MESSAGEPGM(MSG_SD_INSERTED); } else { card.release(); LCD_MESSAGEPGM(MSG_SD_REMOVED); } } #endif//CARDINSERTED if (lcd_next_update_millis < millis()) { #ifdef ULTIPANEL if (encoderDiff) { lcdDrawUpdate = 1; encoderPosition += encoderDiff; encoderDiff = 0; timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; } if (LCD_CLICKED) timeoutToStatus = millis() + LCD_TIMEOUT_TO_STATUS; #endif//ULTIPANEL #ifdef DOGLCD // Changes due to different driver architecture of the DOGM display blink++; // Variable for fan animation and alive dot u8g.firstPage(); do { u8g.setFont(u8g_font_6x10_marlin); u8g.setPrintPos(125,0); if (blink % 2) u8g.setColorIndex(1); else u8g.setColorIndex(0); // Set color for the alive dot u8g.drawPixel(127,63); // draw alive dot u8g.setColorIndex(1); // black on white (*currentMenu)(); if (!lcdDrawUpdate) break; // Terminate display update, when nothing new to draw. This must be done before the last dogm.next() } while( u8g.nextPage() ); #else (*currentMenu)(); #endif #ifdef ULTIPANEL if(timeoutToStatus < millis() && currentMenu != lcd_status_screen) { lcd_return_to_status(); lcdDrawUpdate = 2; } #endif//ULTIPANEL if (lcdDrawUpdate == 2) lcd_implementation_clear(); if (lcdDrawUpdate) lcdDrawUpdate--; lcd_next_update_millis = millis() + 100; } }