New & Reviewed

Meet DIYsplay

Arduino-compatible 0.96" LCD display module

DIYODE Magazine

Issue 62, September 2022

DIYsplay has hundreds of applications, with just a few lines of code!

We’re not going to beat about the bush - we’re so excited about our latest skunkworks project that we just had to show it off before we fully release it.

Nearly a year ago, we set out to build a unique LCD display that could be used with any DIY project. Our goal was to squeeze awesome graphics and dead-simple programming into an ultra-compact size screen, and so, we’ve been working hard to make it a real product ever since.

The WHY

There are many display modules available for all sorts of ecosystems within the maker world, ranging from monochrome OLED screens with basic text support to full-blown HDMI displays with Raspberry Pi support and full HD resolution.

But one use-case that tends to surface quite often is needing to display some piece of information in a simple and readable format. Maybe a number display is needed, or a few lines of text need to be displayed. These are quite simple requirements but, throughout our years of working with the most popular Arduino-compatible displays, it turns out it’s not as simple as it should be.

Some displays, such as the 16x2 LCD character displays that come in many Arduino starter kits, have severe limitations and require numerous wire connections to make them work. Other displays, like full-size LCD touchscreens, are simply overkill from a size, feature and cost perspective. Many displays also greatly hamper the Arduino’s processor, making it hard to add other components or sensors alongside it.

What we wanted to make was something that represented a middle-ground between all of these products, but with as few of their compromises as possible.

The DIYsplay

Fast forward to now, and we’re finally ready to show off what we’ve managed to accomplish with this little powerhouse of a gadget. The DIYsplay features a beautifully vivid 0.96” LCD full colour display and can slot straight into any regular-sized breadboard. It’s easy to read thanks to the IPS panel and it has no protruding wires or cables from the display, keeping it nice and clean for your finished DIY projects.

We’ve crammed over 70 unique and customisable screens into the DIYsplay, and written an Arduino library that makes interfacing with it as simple as three lines of code. Everything from real-time audio spectrums to car dashboard-style gauges are available! It uses four GPIO pins on any modern Arduino board and, more importantly, it doesn’t stress out your Arduino with all of the processing - the display has its own in-built processor.

And not to blow our own trumpet or anything, but we think the DIYsplay could really change how Makers design and build projects. Regardless of whether someone has written two or two million lines of code in their life, we feel confident in saying that they could pick up a DIYsplay and get it working within a few minutes.

Plug-and-DIYsplay

We’ve always thought that the main obstacle for most Arduino screens comes down to actually getting it working in the first place. Precise pin connections, using the correct software library and supplying it the correct voltage are all things that confuse beginners in the Maker community. ››

›› While it’s not really possible to forgo those things completely, the programming geeks here in the DIYODE office have been working to simplify that process as much as possible. The DIYsplay itself is already preloaded with a huge variety of screens, any of which can be selected with just one line of code. The only thing that needs programming is the Arduino itself!

We’re including a bunch of examples in the library we wrote that immediately get you started with the DIYsplay without writing any code whatsoever.

No-Guess Programming

We’ve spent some time working all the technical stuff out behind the scenes so you can get to programming without a fuss. But, no matter how easy the programming is, you’ll probably hit a roadblock at some point.

We’ve fully documented the DIYsplay’s code library. Every screen available on the DIYsplay has dead-simple documentation that lets you see how to use it and what data to feed in. There is no need to remember specific code tricks!

Tech Specs

The DIYsplay’s built-in tech is clever and doesn’t require any configuration to get going. It has 16MB of inbuilt flash and more than enough computing power to remain snappy while showing images, widgets and text.

It can be used with both 3.3V and 5V, and has a simple Serial interface that can be used with just about any maker-friendly device. If you are more advanced and don’t mind losing the breadboard interface, it’s even possible to desolder the LCD module and wire your own cables onto it. The upshot is that the DIYsplay is hackable to your heart's content! Get creative and make the DIYsplay truly yours.

We plan on releasing both desoldered and soldered header versions of this board (though check our website for options), so if you’re not confident with a soldering iron, DIYsplay will still be ready to roll right out of the box.

taking it for a test drive

DIYsplay isn’t just a cool-looking gadget for your breadboard prototypes, it’ll look right at home in a finished build with 3D printed parts. It’s suitable for small and large builds alike, and is perfect for displaying small snippets of mission-critical information, debug statements, or gauges and graphs for data loggers.

Believe us, we could boast about the features of the DIYsplay all day, but nothing beats seeing it in action. We made a bunch of cool gadgets to show it off!

Example 1: Mini Digital Clock

Pair the DIYsplay with a simple Real Time Clock module to create a digital clock with the day of the week. This would be perfect for an alarm clock or desk dashboard project, and can be fully customised with whatever information you might want to display.

For this example, we used a generic I2C RTC module, which connects to any Arduino with two data pins for SDA and SCL. The DIYsplay itself also needs a few pins connected - in future months we’ll elaborate more on this with full projects.

void loop() {
  DateTime time = rtc.now();
  diysplay.setData(0, time.twelveHour());
  diysplay.setData(1, time.minute());
  diysplay.setData(2, time.second());
  diysplay.setData(3, daysOfWeek[time.dayOfTheWeek()]);
  delay(1000);
}

The loop function is about as simple as it gets! We just get the current time from the RTC and write it to the corresponding fields on the DIYsplay, waiting a second before writing the time to it again.

Remember, you can change this data to display however you want. It can be configured to display as a countdown timer, a date display or any other arbitrary text for a project.

As we release the libraries for using the DIYsplay, all of these example projects with the full versions of code will be included so they can be uploaded to your Arduino without first messing around with code.

Example 2: Temperature and Humidity Display

Needing to sense temperature and humidity are two of the most common Arduino-based tasks, used frequently for weather stations, greenhouses, environment monitoring and many other applications. Wouldn’t it be great if there was an easy way to display this information in a compact, easy to read package? (wink-wink!)

In this project, we used the DIYsplay, an Arduino Uno, and a basic DHT11 temperature and humidity sensor from Jaycar. The DHT11 only needs one data pin, so it’s dead-easy to hook up.

 dht.temperature().getEvent(&event);
  if (!isnan(event.temperature)) {
    diysplay.setData(0,event.temperature);
    // Note we need to multiply the reading by 10
    // as there is a decimal point here.
    diysplay.setData(1,event.temperature*10);
  }
  //Same process for the humidity data.
  dht.humidity().getEvent(&event);
  if (!isnan(event.relative_humidity)) {
    diysplay.setData(2,event.relative_humidity);
    diysplay.setData(3,event.relative_humidity);
  }

All of this code is in the loop() function, and while it might look a bit beefy to beginners, it’s actually not that complex. All it does is check if there is available data from the DHT11 to be read, and if there is, it uses the ‘diysplay.setData()’ command to write it to the DIYsplay.

On the left side is a blue gauge that displays temperature to one decimal place, and the right side is a red gauge for displaying a two-digit number. We displayed a temperature value and a relative humidity value respectively.

Like many of the screens included with the DIYsplay, this screen is fully configurable. You can change the subtitle text underneath each gauge of the screen, like follows:

//Sets the titles of both areas.
  diysplay.setData(4,"Temp");
  diysplay.setData(5,"RH");

Of course, these gauges could be adapted for any use! You could display the RPM of a drone motor, output power of a MOSFET, position of a stepper motor or virtually any other data source.

And remember, because the DIYsplay has all of these screens built in, it’s possible to change between them in real-time. Just use the ‘diysplay.setScreen()’ command and, depending on what your project requires, different layouts or sets of information can be displayed whenever needed!

Example 3: Voltmeter/Oscilloscope

Create a simple retro-style voltmeter with the DIYsplay, which shows voltage of an analog pin in real-time! It has both a mini digital voltmeter and an analog gauge for ease of use, both of which can be updated at any time. The code is very simple and only needs a few lines for getting the voltage from the Arduino’s analogue pin and formatting it onto the DIYsplay.

float inputVoltage = 5 * analogRead(INPUT_VOLTAGE_PIN) / 1024.0;
  diysplay.setData(0, inputVoltage * 10);
  diysplay.setData(1, inputVoltage * 10);

If a simple voltmeter isn’t enough, don’t worry. We’ve also made what is probably the world’s cutest oscilloscope! While it’s not as helpful as a full-size one, programming a simple waveform to be shown on the DIYsplay is as easy as two lines of code:

// in setup()
  diysplay.setScreen(FULL_SCOPE);
  // in loop()
  diysplay.setData(0, (80/1024.0) * analogRead(A0));

You can also display maths functions, audio signals or virtually any other numerical data type that can be stored on an Arduino.

Because there are so many screens built into the DIYsplay, many common display layouts will already be ready to use without uploading anything. Of course, we’re only scratching the surface in terms of what is possible with the DIYsplay. There is sure to be a screen that will match the functional and aesthetic requirements of your own project.

Go Further

If you’re more advanced in your electronics and programming knowledge, then the DIYsplay will still be incredibly handy. It’s fully compatible with MATES Studio software, letting you create your own display pages and widgets, as well as reprogram DIYsplay with custom firmware. While you will need a separate FTDI programmer board, using a DIYsplay is a great way to accomplish fully custom displays if the default screens aren’t enough.

In any case, we’ll be doing a lot more with the DIYsplay over the coming months, so keep a look-out in our future issues. We can’t wait to show off the projects we’re making with it!

Available from our very own Online Store:

  • DIYsplay $59.95
    First 100 orders via our website receive a BONUS DIYODE branded hat!

Own a DIYsplay?

If you have received a DIYsplay then here are some handy links to get things started: