1. Got a question or need help troubleshooting? Post to the troubleshooting forum or Search the forums!

New Welcome Screen ROBO3DR1PLUSV1 Firmware Changes

Discussion in 'Mods and Upgrades' started by Ryan TeGantvoort, Apr 5, 2016.

  1. Ryan TeGantvoort

    Ryan TeGantvoort Active Member

    Joined:
    Mar 11, 2016
    Messages:
    343
    Likes Received:
    172
    Hopefully this information will help people who want to make a few mods but do not want to update to the latest Marlin Firmware.

    I was trying to change the Welcome Screen logo to be personalized and I attempted to accomplish this using the method provided by @Sonny's Robo3D here : http://community.robo3d.com/index.p...idate-5-for-r1-r1-plus.5806/page-5#post-57644

    I had already implemented the SD Card percent complete mod, that @Ziggy provided. You can make that modification as well if you want to.

    The only issue I had was I wanted the logo to fill the entire screen rather than the initial 60px x 64px (112px x 38px, included in newer versions of Marlin) which was standard for my original firmware that came with my Robo R1+PLUS. I also have not figured out how to increase the time it appears with this firmware, but I don't really care either.

    I created the image 128px x 64px, so there was no resizing involved. Otherwise it will automatically scale to fit 128px x 64px if you enter those in the boxes provided. Keep all the other settings the default setting. Then copy the String it spits out.

    It may be worth noting: I used my Company's logo (converted colors to Black) and added some text below it. You want to make sure it has a background color (white) otherwise it will convert the background to black as well. I first used a png file with transparent background and it came out solid black. I would assume a Black background with White Logo would work as well.

    I have attached a picture to show my Welcome Screen and the image I used.

    Now to include the String you just copied, you have to modify a few files. The string you receive should be in the same format as the string listed below in bold. It is important to keep 16 sets of numbers per line. All additional changes are in bold as well.

    1. DOGMbitmaps.h (first group of lines)

    // Updated to Display Tru Catch Logo /ryan
    #define START_BMPWIDTH 128 //Width in pixels
    #define START_BMPHEIGHT 64 //Height in pixels
    #define START_BMPBYTEWIDTH 16 //Width in bytes
    const unsigned char start_bmp[1024] PROGMEM = { //AVR-GCC, WinAVR
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xf0,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xe0,0x00,0x03,0x87,0xff,0xcf,0xff,0x0f,0xe1,0xfc,0x1f,0x07,0x1f,0xf0,0xf3,0x87
    ,0xe0,0x38,0x81,0x8f,0xff,0xef,0xff,0xcf,0xe1,0xfc,0x3f,0x0f,0x9f,0xf3,0xf3,0x87
    ,0xe0,0x39,0xc1,0x8f,0xff,0xef,0xff,0xcf,0xe1,0xfc,0x7f,0x0f,0x9f,0xf7,0xf3,0x87
    ,0xe0,0x3d,0xe1,0x8f,0xff,0xef,0xff,0xef,0xe1,0xfc,0xf8,0x0f,0x83,0x87,0x83,0x87
    ,0xe3,0xbd,0xe1,0x8f,0xff,0xef,0xff,0xef,0xe1,0xfc,0xf0,0x0f,0x83,0x8f,0x03,0x87
    ,0xe3,0xd9,0xe1,0x80,0xfe,0x0f,0xc7,0xff,0xe1,0xfd,0xe0,0x0f,0xc3,0x8e,0x03,0x87
    ,0xe3,0xc0,0xc1,0x80,0xfe,0x0f,0xc7,0xff,0xe1,0xfd,0xe0,0x1d,0xc3,0x9e,0x03,0x8f
    ,0xe3,0xe4,0x01,0x80,0xfe,0x0f,0xcf,0xef,0xe1,0xfd,0xe0,0x1d,0xc3,0x9e,0x03,0xff
    ,0xe0,0xcf,0xe1,0x80,0xfe,0x0f,0xff,0xef,0xe1,0xfd,0xc0,0x1d,0xc3,0x9e,0x03,0xff
    ,0xe7,0x1f,0xf1,0x80,0xfe,0x0f,0xff,0xcf,0xe1,0xfd,0xe0,0x1d,0xe3,0x9e,0x03,0xff
    ,0xe7,0x9f,0xf1,0x80,0xfe,0x0f,0xff,0x0f,0xe1,0xfd,0xe0,0x38,0xe3,0x9e,0x03,0x8f
    ,0xe7,0xdf,0xf9,0x80,0xfe,0x0f,0xff,0x8f,0xe1,0xfd,0xe0,0x3d,0xe3,0x8e,0x03,0x87
    ,0xe3,0xdf,0xf1,0x80,0xfe,0x0f,0xdf,0xc7,0xff,0xf8,0xf0,0x3f,0xe3,0x8f,0x03,0x87
    ,0xe1,0x9f,0xf1,0x80,0xfe,0x0f,0xdf,0xc7,0xff,0xf8,0xf8,0x3f,0xf3,0x87,0x83,0x87
    ,0xe0,0x1f,0x81,0x80,0xfe,0x0f,0xcf,0xe3,0xff,0xf0,0x7f,0x78,0xf3,0x87,0xf3,0x87
    ,0xe0,0x0f,0x01,0x80,0xfe,0x0f,0xcf,0xf1,0xff,0xf0,0x3f,0x70,0x73,0x83,0xf3,0x87
    ,0xe0,0x06,0x00,0x00,0xfe,0x0f,0xc7,0xf0,0xff,0xc0,0x1f,0x70,0x73,0x81,0xf3,0x87
    ,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x02,0x00,0x00,0x00,0x00,0x00
    ,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0xff,0xff,0xff,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x03,0xff,0x00,0x7c,0x07,0xfe,0x00,0xf8,0x00,0x3f,0xf0,0x07,0x00,0x00,0x00
    ,0x00,0x03,0xff,0x81,0xff,0x07,0xff,0x03,0xfe,0x00,0x3f,0xf8,0x07,0x00,0x00,0x00
    ,0x00,0x03,0xff,0xc3,0xff,0x87,0xff,0x87,0xff,0x00,0x3f,0xfc,0x0f,0x00,0xe0,0x00
    ,0x00,0x03,0x81,0xc7,0x83,0xc7,0x03,0x8f,0x07,0x80,0x38,0x1c,0x3f,0x00,0xe0,0x00
    ,0x00,0x03,0x81,0xc7,0x01,0xc7,0x03,0x8e,0x03,0x80,0x38,0x1c,0x7f,0x00,0xe0,0x00
    ,0x00,0x03,0x81,0xce,0x01,0xc7,0x07,0x8e,0x01,0xc0,0x38,0x1c,0x77,0x00,0xe0,0x00
    ,0x00,0x03,0xff,0x8e,0x00,0xe7,0xff,0x0c,0x01,0xc0,0x3f,0xfc,0x47,0x0f,0xfe,0x00
    ,0x00,0x03,0xff,0x8e,0x00,0xe7,0xfe,0x0c,0x01,0xc0,0x3f,0xf8,0x07,0x0f,0xfe,0x00
    ,0x00,0x03,0xfe,0x0e,0x00,0xe7,0xff,0x8c,0x01,0xc0,0x3f,0xe0,0x07,0x0f,0xfe,0x00
    ,0x00,0x03,0x8e,0x0e,0x01,0xc7,0x03,0x8e,0x01,0xc0,0x38,0xf0,0x07,0x00,0xe0,0x00
    ,0x00,0x03,0x87,0x07,0x01,0xc7,0x01,0x8e,0x03,0x80,0x38,0x78,0x07,0x00,0xe0,0x00
    ,0x00,0x03,0x87,0x87,0x83,0xc7,0x03,0x8f,0x07,0x80,0x38,0x38,0x07,0x00,0xe0,0x00
    ,0x00,0x03,0x83,0xc3,0xff,0x87,0xff,0x87,0xff,0x00,0x38,0x3c,0x07,0x00,0xe0,0x00
    ,0x00,0x03,0x81,0xc1,0xff,0x07,0xff,0x03,0xfe,0x00,0x38,0x1e,0x07,0x00,0x00,0x00
    ,0x00,0x03,0x81,0xe0,0x7c,0x07,0xfe,0x00,0xf8,0x00,0x38,0x0e,0x07,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
    ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

    };

    2. dogm_lcd_implementation.h (line 123)

    u8g.firstPage();
    do {
    // RepRap init bmp
    u8g.drawBitmapP(0,0,START_BMPBYTEWIDTH,START_BMPHEIGHT,start_bmp);
    // Comment Below to remove information from Start Screen /ryan
    //u8g.setFont(u8g_font_6x10_marlin);
    //u8g.drawStr(62,10,"MARLIN");
    //u8g.setFont(u8g_font_5x8);
    //u8g.drawStr(62,19,"V1.0.0 RC2-mm");
    //u8g.setFont(u8g_font_6x10_marlin);
    //u8g.drawStr(62,28,"by ErikZalm");
    //u8g.drawStr(62,41,"DOGM128 LCD");
    //u8g.setFont(u8g_font_5x8);
    //u8g.drawStr(62,48,"enhancements");
    //u8g.setFont(u8g_font_5x8);
    //u8g.drawStr(62,55,"by STB, MM");
    //u8g.drawStr(62,61,"uses u");
    //u8g.drawStr90(92,57,"8");
    //u8g.drawStr(100,61,"glib");
    // Comment Above to remove information from Start Screen
    } while( u8g.nextPage() );
    }

    That's it! You will now have a personalized Welcome Screen after Uploading the firmware.

    If you want to modify the Full Graphics LCD to display the correct amount of extruders, go to this link: https://github.com/MarlinFirmware/Marlin/pull/1143

    I am going to work on moving a few things around on the Info Screen, to, hopefully, increase the spacings, increase text size, and decrease the huge blank spot where the other 2 extruders were. I do not plan on adding another extruder to my Robo, so I should be able to fill that space with something else. If I have any success, I will post my changes to the layout of the Full Graphics Controller here.
     

    Attached Files:

  2. Ryan TeGantvoort

    Ryan TeGantvoort Active Member

    Joined:
    Mar 11, 2016
    Messages:
    343
    Likes Received:
    172
    Instead of having a huge blank space where the other 2 extruders were, I decided to shift my Heated Bed over.

    (1) DOGMbitmaps.h (look for #if EXTRUDERS == 1 around line 78)

    Replace the Hex string with this one:

    Code:
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xE0,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
      0x7F,0x80,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
      0xFF,0xC0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
      0xFF,0xC0,0x00,0x00,0x00,0x00,0x20,0x82,0x00,0x00,0x00,0x00,0x40,0xF0,0x20,
      0xFF,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x00,0x00,0x00,0x40,0x60,0x20,
      0x7F,0x80,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x00,0x00,0x00,0x5E,0x07,0xA0,
      0x7F,0x80,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x00,0x00,0x00,0x5F,0x0F,0xA0,
      0xFF,0xC0,0x00,0x00,0x00,0x01,0x04,0x10,0x00,0x00,0x00,0x00,0x4F,0x0F,0x20,
      0xFF,0xC0,0x00,0x00,0x00,0x00,0x82,0x08,0x00,0x00,0x00,0x00,0x47,0x0E,0x20,
      0xFF,0xC0,0x00,0x00,0x00,0x00,0x41,0x04,0x00,0x00,0x00,0x00,0x63,0x0C,0x60,
      0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,
      0x1E,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00,0x7F,0xFF,0xE0,
      0x0C,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00
    Just after that sting is another string, which you need to replace with the above string.

    (2) dogm_lcd_implementation.h (Look for // Heatbed around line 286)

    Code:
     // Heatbed
    u8g.setFont(FONT_STATUSMENU);
    u8g.setPrintPos(55,6); // u8g.setPrintPos(81,6); Move Heatbed to Extruder 3 Position /ryan
    u8g.print(itostr3(int(degTargetBed() + 0.5)));
    lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
    u8g.setPrintPos(55,27); // u8g.setPrintPos(81,27); Move Heatbed to Extruder 3 Position /ryan
    u8g.print(itostr3(int(degBed() + 0.5)));
    lcd_printPGM(PSTR(LCD_STR_DEGREE " "));
    if (!isHeatingBed()) u8g.drawBox(62,18,2,2); // if (!isHeatingBed()) u8g.drawBox(88,18,2,2); Move Heatbed to Extruder 3 Position /ryan
        else
            {
             u8g.setColorIndex(0);    // white on black
             u8g.drawBox(62,18,2,2); // u8g.drawBox(88,18,2,2); Move Heatbed to Extruder 3 Position /ryan
             u8g.setColorIndex(1);    // black on white
            }
    Replace with the data above and you will move the Heated Bed to the Extruder 3 position.
     
    mark tomlinson likes this.

Share This Page