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

Custom Boot Screen for Marlin and Full Graphics LCD

Discussion in 'Mods and Upgrades' started by danzca6, Dec 8, 2016.

  1. danzca6

    danzca6 Well-Known Member

    Joined:
    Jul 27, 2015
    Messages:
    2,161
    Likes Received:
    1,077
    @WheresWaldo is including a custom boot screen file with the newest Marlin 1.1.0 firmware he's been maintaining for us. Didn't know if some of you would ever want to make your own image. It's really pretty straight forward.

    Things needed:
    • A RepRap Full Graphics LCD Controller
    • A way to create a BMP file. I use Paint.NET which is free found here
    • A Monochrome BMP data array converter like LCDAssistant found here

    How it's done:
    The most important part of using/creating an image is that it needs to be 2 color, black and white only image. You can start with a larger picture, but it needs to scale down to 128x64 pixels cleanly. A picture with a lot of detail, may not work since you need adequate width of color and spacing in order for it to translate correctly in the converter to show on the LCD screen. You can see on my example below of the original Robo3d logo that the 3d was too thin to translate into the final image for the screen.

    Creating you image with Paint.NET:
    1. Open Paint.Net and start with a fresh canvas or an existing image.
    2. Adjust the canvas size to be divisible by 128 for the width and 64 for the height without a remainder. Open the Image -> Canvas Size menu item. Make sure the anchor option is middle to keep you image centered. Be mindful of the "Maintain aspect ratio" option if needing to adjust one direction at a time.
    3. The R1+PLUS logo, for example, was blue, black, and white. I used the paint bucket tool to fill all the shapes to be fully black. Even if the image looks close to black, use the paint bucket to make sure.
    4. Remove the background. I did this by selecting the Magic Wand tool and clicking on the background. For my examples the backgrounds where solid white. You may need to do more work depending on the image you are using. Then simply press the delete key and everything selected should become a grey and white checkered pattern indicating transparency.
    5. If your image was greater than 128x64 pixels, then you need to open the Image -> Resize menu item and resize the width to 128 and height to 64 maintaining aspect ratio. I left it at 72 pixels/inch for resolution.
    6. Once all that is complete, use the File -> Save As menu option to save the image as a BMP file. You may have to change the "Save as type" drop down in order to save as a BMP.
    7. Exit the program.

    Converting your image using LCDAssistant:
    1. Run the lcdassistant.exe file and select the File -> Load Image menu option. Select the BMP file you just created and click the Open button.
    2. Byte Orientation should be set to Horizontal.
    3. Everything else can stay the default.
    4. Select the File -> Save Output menu option and save it as whatever name you want and as a TXT file for ease of use later.
    5. Exit the program.
    Creating the _Bootscreen.h file:
    In the example files below you will find some _Bootscreen.h files to use as a starting point.
    • Using a text editor, open the TXT file you created in the last section. Copy all the lines between the curly braces {} as you see an stripped down example in the code below.
    Code:
    const unsigned char r1pluslogo [] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    ...
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };
    
    • Open the _Bootscreen.h file you are using from below as a starting point.
    • Replace all the lines of text between the curly braces with what you just copied.
    • Verify the defined variable values are correct.
      • CUSTOM_BOOTSCREEN_TIMEOUT is the number of milliseconds the image will show during boot.
      • CUSTOM_BOOTSCREEN_BMPWIDTH should be set to 128
      • CUSTOM_BOOTSCREEN_BMPHEIGHT should be set to 64
    • Make sure the array size is set to 1024 as highlighted here
      • const unsigned char custom_start_bmp[1024] PROGMEM = {
    • Save your changes and exit.
    Firmware changes:
    1. The _Bootscreen.h file needs to be copied into your root Marlin sketch directory (where all the other firmware files are under).
    2. In the Configuration.h tab/file you need to search for #define SHOW_BOOTSCREEN and remove the // characters in front of the line if they exist in order to uncomment the line.
    3. Compile and Upload the firmware to you printer from the Arduino IDE as usual.
    Examples:
    Here are a couple variations I put together. We all love options right? Just download the rar files below that you want. You can then just extract the _Bootscreen.h file to your Marlin files folder.

    New Robo Logo:
    New Robo.jpg

    R1+Plus Logo:
    R1+Plus.jpg

    Old Robo3d Logo (the 3D is too small to render):
    Original Robo3d.jpg
     

    Attached Files:

    Ryan TeGantvoort, olix, Geof and 3 others like this.
  2. Alexander Sorokin

    Alexander Sorokin New Member

    Joined:
    Mar 22, 2018
    Messages:
    1
    Likes Received:
    0
    Also uncomment line
    Code:
    #define SHOW_CUSTOM_BOOTSCREEN
     
  3. WheresWaldo

    WheresWaldo Volunteer ( ͠° ͟ʖ ͡°)
    Staff Member

    Joined:
    Feb 18, 2015
    Messages:
    5,905
    Likes Received:
    3,593
    @Alexander Sorokin Yes you will need to do that with the normal firmware from Robo. They do not enable the bootscreen, the Community firmware posted here already does that for you.
     

Share This Page