• We would like to remind our members that this is a privately owned, run and supported forum. You are here at the invitation and discretion of the owners. As such, rules and standards of conduct will be applied that help keep this forum functioning as the owners desire. These include, but are not limited to, removing content and even access to the forum.

    Please give yourself a refresher on the forum rules you agreed to follow when you signed up.

Multi-Screen DIY controller


Hey there

== Friday update ==

While playing guitar on the AxeFxIII I can easily forget about time, space and almost even to breath ... I really love it when I hit the zone, all warmed up and my hands are creating the sounds that my head has in mind.

Because of this state of mind, I forget about the wife, kids, job, bills etc. For this I found a solution to help me not to forget all these things ;)

I build in a DS3231 I2C active digital clock unit. It is very cheap and has a battery to hold the actual time month and year and some other stuff. really cool add-on for € 2,-


For the digital clock I implemented the code in the V4.3 build, so now the 16 * 2 LCD is showing digital time on the bottom row.
Before i had several output written on the bottom row, but all that wasn't really necessary. The clock is a nice add-on to the screen. It updates only on every new second and does not slow down the peddleboard at all.

Using the timer to do stuff:
As for giving me a notice on a specific time, lets say 00:00, the code can do an action like load a next page that gives me a notice on each screen or something. Maby blinking screens or whatever lol, is it really a cool gadget to implement.
This add-on part i still have to develop but its a sure thing i will do. DIY is the best to be in control :)


@Piing waiting for that sneak preview of your build dude :)

Have a great weekend all
Last edited:


Fractal Fanatic
@Piing waiting for that sneak preview of your build dude :)
Not much progress. At these pictures I note that it is already collecting dust 😅

I have space for a Nextion 3.5" touch display. But cutting the box now would be a challenge. Maybe I will install it outside in a 3D printed bezel, like I did at my previous built with a 4,3" Nextion. The external mount has the advantage that you can re-program it without opening the box (programming the Nextion requires to insert a micro SD card)
I hope that I can see it working soon


Hey there @prongs_386

Quite some time that this thread had any update, but i have been developing on my programming in the meantime. (Just learning little features day by day and how to use them)

Just lately I have updated my program with some of your advice by using a loop for screen buildup. My goal is to reprogram the entire software so in the future i can create a Java GUI editor to manage the peddleboard buttons and screens instead of hard coding it. Long way to go, but sure is interesting getting there.

Using the loop functionality in the code brings some delay in the buildup of the screens (like very very little delay) but that points to me that the arduino does take some constructiontime with the read/write actions, longer than just typing out every single line without read/write but just write actions. (Like in my program)

To do something about this delay i am searching for memory management on the due and i found something very interesting. Thought of sharing it here, maby it is of any use for you also.


The library usage describes the folowing:
The library does allow connection to some of the lower resolution LCD controllers that used index addressing and can speed up read/write times considerably.
I have not tried this to implement at all but will get to it next week I hope.

The goal is to use this lib to speed things up with the buildup of the 15 TFT screens.. even to be a nanosecond faster is progress in my book, but hope for better results ;)

That's good to hear you're iterating and still improving it.

Definitely keen to see if you can get that library to work.

In my solution I had a json file hold the configuration for the layouts, but I didn't implement reading it from an sd card or anything like that so I still need to compile and upload when changing a layout. Could be interesting to play with adding an SPI usb serial interface so you could plug into the computer to talk directly to your editor software. I guess you'd need to add some kind of non-volatile storage component in as well to keep the config file on.


Hey there @prongs_386

I had the idea to save a config file on a external sd card and use that config as base for all screen/button settings and variables. The GUI interface will compile the config file and then it is just a matter of putting the file on the sd card.

The config image will only be read / loaded at startup and the global variables could be in the arduino code, but maby the usb works fast so the globals could be on the SD as well.

It is a easy plan.. hope to get it to work.
First i will get the program ready so it is configurable. Still working on that one. Hope that the arduino's memory can handle it.

To be able to see what amount of memory is used and what remains, i am searching for a solution to implement and show the memory on the 16x2 i2c screen somehow.

It is a great project. Once getting started the possibilitys seem endless...
The solution is allready there, Just need to find it and implement ;)

Last edited:


Hey there,

=== Friday update ====

Free memory is available to print on a screen. I added it to the 16*2 on the top row so i can see what every page / function is using in the amount of RAM memory (bytes)

To make this possible, I make use of this libriary: https://github.com/mpflaga/Arduino-MemoryFree

In my program i only added the folowing:
#include <MemoryFree.h>;

void availablememory()
lcd.setCursor(0, 0); lcd.print("Free RAM: "); lcd.print(freeMemory());

In the various screens i call the function for that screen:
void preset_LCD_text() // "preset" could be "scene", "effect", "numbers"
lcd.clear(); availablememory(); digitalClockDisplay();


I added this just for testing.. it gives me the info i need that the program will be stable when adding a lot of new variables.

I followed this guide to manually create a file that shows what the global variables are using in bytes:
During compiling you get an additional line telling what amount off bytes is used by the global variables.

Cheers and good weekend
Top Bottom