6×14-Segment i2c Backpack

When working on a Geocaching Project, I ended up with a substantial number of small 6×14-segment displays:

Remembering how useful Adafruit’s 4 digit 14-segment display backpacks were, I thought it might be a good idea to manufacture some similar backpacks utilising the smaller 6 digit displays.
I created a prototype in Eagle and had some boards manufactured in china. Unfortunately, due to the size of the HT16K33 IC and the display being somewhat similar, I was unable to locate the IC under the display as is the case with the larger Adafruit backpack. Still, more than small enough for most projects:

First Prototype
First prototype
Backpack Comparison
Size comparison

These prototypes worked great, so I began creating a new Arduino library with plenty of example code, which would support multiple displays. By simply setting the number of displays when instancing the library object, up to eight displays can be used easily.

If these are going to be manufactured and sold, then they need to look a lot prettier. Additionally why not make use of that extra space thanks to the HT16K33? Plug and socket so that the displays could be “daisy-chained”. Some changes were made whilst enjoying the view on holiday in Crete:

The new prototypes turned out well, with only a minor further change to be made before I was happy enough to place a large order.

Final design
6 Modular 6x14 displays connected together

Below is a project by Daniel using the same code for his awesome teletype terminal and display:


2 thoughts on “6×14-Segment i2c Backpack

  1. Good morning Wayne.
    Personally, not being a programmer by trade (physics based analog hardware engineer), I was looking at adapting your code for some 4 x 14 displays that I use for system status readout on instruments. You library seems to be more comprehensive than what Adafruit supplies. Is the code easily adaptable to a 4 digit display, rather than 6?

    1. Hi Antonio,
      Yes it should be straight forward to adapt, in the WarmCat_6x14Backpack.cpp file.
      For example the function “disp6Char” it iterates through the given text 6 times:
      “for (uint8_t x=0;x<6;x++) {"
      Also in the "scrollText" function you should see that for each connected display it moves the character buffer one place for 6 places.
      I guess in hindsight I should have written the code with this in mind and used a global variable for the number of digits, that would have made it easier.

      One other thing to consider when using Adafruit's displays is two of the segments in her display library and hardware are the wrong way round compared to mine.
      You would have to amend the const "FourteenSegmentASCII[96]" in WarmCat_6x14Backpack.h which is easy but timetaking.

      If you like, email me your address to waynekjones at gmail.com and I'll send you one of the 6-segment prototypes to play with.

Leave a Reply

Your email address will not be published. Required fields are marked *