Addressable 7-Segment Displays

28,465

307

35

About: I'm a content creator. I make open source projects and videos for said projects. My goal is to create free and open knowledge for everyone.

Every so often an idea clicks in my brain and I think, "how has this not been done before?" and majority of the time, it actually has been. In the case of the "Addressable 7-Segment Display" - I really don't think its been done, at least not like this.

Most of the time 7-segment displays end up being way more complicated than you think they would be. Essentially you're just lighting a bunch of LEDs to display numbers or letters. That means you need to have control over each segment of each digit you have, so if you have 4 digits, thats 4 * 7 = 28 outputs! Not to mention wiring and resistors. Then once you start driving a bunch of them, things don't look so simple anymore. I decided to create a simple way to have as many, or as little, 7-segment displays as you want, and they're super modular. Whether you want 20, or 2, you only need one data line from the Arduino to control them. Follow along to see how I did this, or to make your own, or to just know how they work!

If you don't feel like making your own, or you just feel like supporting the open source projects I create, I'm current running a crowdfunding campaign for these displays on my website! https://shop.idlehandsdev.com/

Step 1: Watch the Video

If you learn better by watching videos, I explain how I built them and how they work here.

Don't forget to subscribe!

https://www.youtube.com/seanhodgins

Step 2: Get the Parts and Tools!

There aren't many parts, which is what makes this great, but you will have to be okay with surface mount soldering.

Parts per display:

Tools:

  • Soldering Iron
  • Reflow Oven or Hot Air (Optional but easier)
  • Solder Paste or Solder

If you want to skip the build and just buy a couple, go here!

https://shop.idlehandsdev.com/products/addressable-7-segment-display

Step 3: Start With Surface Mount Components!

On the back, apply the solder paste. These are all really forgiving components, so it would be a good project to start on if you have never reflowed surface mount components. After applying the solder paste, place the caps, resistors, and finally the WS2811. Follow the markings on the board.

Step 4: Reflow!

Get that hot air or reflow oven out, heat them up until all of the solder paste sets. If you don't have hot air or a reflow oven, you can use a soldering iron and solder. Its more tedious but totally doable. I have a video on this if you want to know some techniques. Check it out here: https://www.youtube.com/watch?v=uQjjcaN57y8

Step 5: Add the Pin Headers.

The order of steps this Instructable is in is important. The pin headers need to be soldered next, because their pads will soon be hidden under the 7-segment display component. The board shows you which direction the male and female pin headers go. Try to make them straight!

Step 6: Solder the 7-Segment Display

Lastly we have to solder on the 7-segment display component. Make sure its in the correct orientation by following the direction of the silkscreen.

Once you're done soldering, clean the board with your favourite cleaner and you're done!

Step 7: How the Hardware Works.

The WS2811 IC is capable of driving 3 LEDs with variable current. Normally these are a Red, Green, and Blue LEDs to be able to make thousands of different colours. In the case of the 7-segment display we are using 3 WS2811s to control the brightness of 8 different segments of the 7-segment display. Two of the WS2811s are connected to 3 segments and the last one is connected to 2 segments, with one remaining. The remaining one is actually connected to an unpopulated LED, which I thought could possibly be useful for something.

The way a WS2811 is addressable is that it is able to pass data from one WS2811 to another. So when you send a string of bits(data), it will take in its own information about what LEDs to turn on, and pass along some information to the following WS2811s until they have all received the information. That means this method of communication only requires a single data line. Once the data has been received for the single digit, it pushes data to the next three.There is a very simplified schematic in the image above. The free green wire is what goes onto the next display.

Step 8: How the Demo Program Works.

I quickly put together an Arduino program to demonstrate how to display things on the Addressable 7-Segment Display. It utilizes the Adafruit NeoPixel Library to control the number displays. It basically turns each digit into 3 Neopixels. You can send a single digit to a single display and control its brightness by simply writing:

writeDigit(DisplayNumber, Number, Brightness);

Display number being the number from right to left of which display you want to write to starting with 0. Number is the actual number you want to show up on the display from 0-9, and brightness being a value from 0-255 for how bright you want it to be.

Each time you want to refresh the displays you have to send:

segments.show();

Since there is no multiplexing going on here, it makes it really easy to do things like pulse the numbers, dim them, make cool animations.

There is no standalone library, but I may being working on one soon. If you want to contribute to the project and write a library, feel free to contact me and I will send you some displays.

Step 9: Daisy Chain Them Together!

This is the best part. If you have a project that requires 5 displays, just connect 5 together and change the code to show 5 displays. If you need 10, just connect 10! Its that simple, and the wiring stays exactly the same! Just 3 wires.

Step 10: Support These Projects!

As I mentioned before, this project and basically all of my other projects are open source. That means you can build your own using the resources I provide online, all for free. However these projects do cost me time and money, so if you want to support future or current projects consider purchasing a couple of these displays directly from me. Check out my web-store where I am running my own crowdfunding campaign!

https://shop.idlehandsdev.com/

I like crowdfunding because it allows me to reduce the overall cost of the product by only purchasing the parts if I know they have sold.

If you prefer to build your own, there are other ways to support me and my projects. Consider subscribing to my YouTube Channel:

SeanHodgins on YouTube

And finally, if you want to see more and possible bigger projects, you can also become a patron on Patreon.

SeanHodgins on Patreon

My patrons really do help with my ability to create projects, as their support allows me to put more time and money into the projects that don't bring me any in return. These are often the most fun and interesting projects, and I like that I am able to release them to the world for free for anyone else to try and recreate.

PCB Contest

Second Prize in the
PCB Contest

Share

    Recommendations

    • Arduino Contest 2019

      Arduino Contest 2019
    • Trash to Treasure

      Trash to Treasure
    • Tape Contest

      Tape Contest

    35 Discussions

    0
    None
    SkeletU

    2 months ago

    Всё неплохо но эти микросхемы во первых достаточно дорогие. Во вторых что более важно заказные. И доступны к заказу минимальной партией от 100шт. что очень осложняет их покупку. При этом оптовики не работают с физическими лицами.

    Так что решение выглядит несколько сомнителным. Сдвиговый регистр в этом отношении по моему проще и самое главное они намного доступнее и дешевле.

    0
    None
    Amardes

    3 months ago

    That was fantastic!!

    0
    None
    RussellKelly84

    3 months ago

    Love this project, a really clever use of existing ICs to achieve another very useful function.

    0
    None
    jtechian

    3 months ago

    Have a look at this: https://neosegment.com/ .. I still like your project :) Made me design a pcb for the ws2812b chip leds like this before I found the one at neosegment.

    1
    None
    jtechian

    3 months ago on Step 10

    Simplify this with the neopixel leds arranged in the segments on a pcb, apply a window mask over the leds to form uniform segments, and use the existing libraries. Still 3 wire interconnect, but able to be multi color along with brightness. What you think?

    1 reply
    0
    None
    jtechianjtechian

    Reply 3 months ago

    I did some work designing a pcb for a display of what I mentioned doing, then I found this is already available. Here is the link : https://neosegment.com/ I still like the exercise to design one like this, always fun! Thanks for sharing your project.

    0
    None
    instructible01

    Question 3 months ago on Introduction

    Sean, my I was in your store and tried to use the contact link -> https://shop.idlehandsdev.com/pages/contact-us
    But it has no info so I'll ask here. First, I like these. If the project funds, I'm in for 4 to start, consider a slight design option of making them connectible from top and bottom as well. Then someone can make a larger multi line display.

    1 answer
    0
    None
    binarybeninstructible01

    Answer 3 months ago

    They'd work like a string of neopixels. Just make multiple rows and then chain them together at the ends with jumper wires (no need for more components, or worse, PCB space). It's a beautiful design really in so many ways.

    1
    None
    Chefmike66

    3 months ago

    Nice work. I thank you for sharing, for free, what could undoubtedly be a very profitable idea. I really like this.

    0
    None
    Sajjad_A

    3 months ago

    Woah....that's....groundbreaking......
    well done!

    0
    None
    n4mwd

    3 months ago

    I don't think the WS2811 chips are the best choice for a single 7 segment display. You need three of them at a cost of $1.50. A better and cheaper, but not easier, choice would be to use a single $0.60 Busy Bee (EFM8BB10F8G-A-SOIC16). The Busy Bee is an 8051 mcu with everything built in. It has 13 IO lines that can drive the 7 segment display directly - only a single resistor and a pair of power coupling caps are necessary. Actually, you could actually drive two multiplexed digits plus the decimal point with it. That particular MCU is in a giant 16 pin soic so its really easy to solder. Because the Busy Bee is a MCU, you can program whatever communication protocol you want including bidirectional with error correction. It has built in hardware CRC to make that easier.

    I just completed a large chain of 8x8 matrix displays that were daisy chainable like your 7 seg displays are. I used, and regretted it, a set of MAX7219 chips. The problem was that the serial communication broke down with longer chains. I finally found a way to fix it, but its still not perfect. If you use bidirectional communication with error correction then you don't have that problem.

    2 replies
    0
    None
    n4mwdBerenV

    Reply 3 months ago

    Those chips work good for LED strips which is what they were intended for. A MAX 7219 chip, which I frown upon, can handle eight 7-seg + DP displays. Those are about $20 for 50 but they have problems. Mostly because they are counterfeit. I suspect the Ali WS chips are also. Might work - might not. Still, the Busy Bee is a single chip solution that can handle up to 3 digits and provide error corrected communication. That was the biggest problem with the MAX chip, it was basically a big shift register and any noise that got shifted in also got shifted out to the next chip in the line. The more chips, the more chance of an error creeping in to the data stream. I briefly looked at the WS datasheet and suspect that it works the same way.

    EDIT: I looked again and the WS chip uses an embedded clock NRZ communication. Its generally less susceptible to noise than straight logic levels. Its still using the shift register method though.

    1
    None
    Antzy Carmasaic

    3 months ago

    Great idea! I do it with shift registers and transistor array ICs but this is much more modular. Also the brightness control is a plus and I like how the digits fade into reach other. It is a shame that one pin gets wasted. I could help you out with wiring the library if you are still looking for help.

    1
    None
    memjr73

    3 months ago

    I did something similar but used just one 74595 shift register per 7 see display :)

    2 replies
    0
    None
    ellisglmemjr73

    Reply 3 months ago

    2 x 74x595 will give you 8 7 segment displays.

    0
    None
    memjr73ellisgl

    Reply 3 months ago

    That's true, you can use one for the segments and the other to multiplex them.

    0
    None
    SloanT1

    3 months ago on Step 8

    Did you make the stand alone library? If not, I'd be willing to give it a go. Let me know the specs for the library (ie. properties and methods), and I'll see if it's something I can do.

    0
    None
    Gun Maniac

    Question 3 months ago on Step 7

    In theory with a tweak to the code, could you have 4 WS2811s per display and replace the 7 segment displays for 11 segment (starburst type) displays?

    0
    None
    mickeypop

    3 months ago

    Great Idea
    Being a semi retired i would love to write the library. I figure 3 or 4 would be ample to test all functionality.

    The likely best would be to write it as a library dependant rather than a stand alone. Simply make it a wrapper around the NeoPixel library.

    This would allow using WS2811 LEDs as well in the same circuit with minimal extra ram usage. Just declare the LEDs and numeric displays on separate pins.

    Let me know if that sounds like a right way.
    =====
    Oh by the way; In the video plugging and unplugging live would be smart if the data pin was just a tad shorter for safe Hot Swapping.

    ====
    a relay board variant might be a good idea too.