Introduction: How to Add a Splash Screen to PanelDue
the first step in adding a splash screen to your PanelDue is creating the splash screen.
Depending on which Paneldue you have you need to start with the right resolution. 480x272 for the 4.3" panel, or 800x480 for the 5" and 7" panels. i made my splash screen in inkscape so i'll use that in my example. to keep this tutorial simple i just added an image to the center of the 800x480 page. you can add wathever you want as long as you dont exceed the page size (you can always scale ofcourse). Its best to start with a background since inkscape will export png which alows for transparency (this will show up as black later on).
dont over complicate the splash screen. full color images will result in a larger file later on and might not fit on the boards memory.
when the image is done export as png (inkscape does not do bmp directly). make sure to select page in the export menu. Now we need to convert this png to bmp. the easiest way to do this is to just open the png in paint and save it to bmp.
Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.
Step 1: Converting the Bmp to C
basically this step converts the image to c code. this code will draw the image on the screen later. to do this you need to download the bmp2c program from dc42's github : https://github.com/dc42/PanelDueFirmware/tree/mast...
i find it easiest to put the bmp2c-escher3d.exe and the bmp in the user folder since you dont need to add any location info. In my case this users/siemen (you can always just navigate to another folder as long as they are all in the same folder).
finally run : bmp2c-escher3d.exe testbmp.bmp testimage.bin -b -c
bmp2c-escher.exe is the program
testbmp.bmp is the bitmap i created
testimage.bin is the output image (this will be put in the same folder as the image)
edit these last 2 to your image name.
Step 2: Combining the Image and Firmware.bin
now that we have an image in c code we need to add it to the firmware.
go to this link: https://github.com/dc42/PanelDueFirmware/releases
and download the no-logo version for the right screen you have. i have the 7.0i.
add the downloaded bin file to the same folder we already worked in and run :
copy /b PanelDue-v3-7.0i-nologo.bin+testimage.bin PanelDueFirmware.bin
this command wil combine the image and firmware and create a resulting firmware.
replace PanelDue-v3-7.0i-nologo.bin with the firmware file for your board
replace testimage.bin to the name of your bin image.
PanelDueFirmware.bin can remain the same since this is just the resulting firmware file.
Step 3: Upload the Firmware to the PanelDue
the final step is to upload the firmware to the PanelDue. to do this disconnect it from the duet and plug in the micro usb cable.
now we need to download a program called Bossa: http://www.shumatech.com/web/products/bossa
the binary can be downloaded in the bottom of the page. download and install the program.
next step is to hold the erase button on the PanelDue for a few seconds. then let it go and press the reset button. the board is now ready to be programmed. this needs to be done every time you want to upload new firmware. all you need to do now is select the right com port. select the PanelDueFirmware.bin file we created in the last step and mark : erase all, boot to flash, lock.
to conclude this just press write.
congrats you now have a personalised splash screen.
Step 4: Oh No I Get a White Screen!
No worries. the white screen is the whole reason i started this instructable in the first place. i erased my firmware and could not flash the new one on there. Before you freak out stay calm and make sure to check everything:
- did you select the right screen size firmware?
- did you select the righ board version? (v1,v2,v3)
- was the final bin file smaller than your boards flash memory?
if you have a 7.0i make sure to select the i firmware and not the 7.0.
if bossa tells you it cannot connect unplug it, restart bossa, press the reset button.
ive had to do this countless times and worked every time.