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!
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:
- 1 x Custom PCB - Get the files from GitHub, or Order through PCBWay
- 3 x WS2811 - Adafruit
- 1 x 7 Segment Display - Needs to be Common Anode! Sparkfun Has Them
- 3 x 33OHM Resistor 0805 - Digikey
- 3 x 1uF Capacitor 0805 - Digikey
- 1 x 3-Pin Right Angle Header - Female - Digikey
- 1 x 3-Pin Right Angle Header - Male - Digikey
- 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!
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:
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!
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:
And finally, if you want to see more and possible bigger projects, you can also become a patron 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.
Second Prize in the