Skills

SparkFun 7-Segment Serial Display - Blue

Description: 4-digit 7-segment displays are really neat little devices, it’s a shame that they can be so cumbersome to control. Well we’ve solved that problem by making them a little bit “smarter.” The SparkFun 7-Segment Serial Display combines a classic 4-digit 7-segment display and an ATMega328 microcontroller allowing you to control every segment individually using only a few serial lines.

The Serial 7-Segment Display can be controlled in one of three ways: Serial TTL communication, SPI serial communication or I2C serial. You can even program it for stand-alone operation since the ATMega328 comes pre-loaded with the Arduino bootloader! There is also an FTDI header on board and we’ve provided a hardware profile for the Arduino IDE to make it even easier to program.

We’ve made some layout changes to this design as well which will make it easier to incorporate these into your project. We’ve moved the power and I2C pins to the sides of the board such that you can chain them together in order to display longer strings of digits. We’ve also added mounting holes to the boards so you can mount them on standoffs (no more hot glue!)

Customer Comments

This release is frustrating. I’ve come to depend on this component for a product I sell. Was there any heads up that you would be abandoning the old form factor? I now have to toss and redesign a batch of PCBs because the taller board ( for daisy chaining purposes?) won’t fit.

how about some updated firmware?? I tried modifying the code in loop() to display voltage read on the analog pins but all it displays is jumbled up characters. tried uploading the basic firmware again to bring the display back to original functionality but still displays wrong characters when setting over serial. my conclusion would be that the firmware available to download (and the hardware files) have incorrect pin mapping. I’ll go through it to try and correct it but it would be nice to have proper firmware!!

i installed the hardware profile and tried to upload some code using a 5v basic FTDI but unfortunately i keep getting this error ( avrdude: ser_recv(): programmer is not responding avrdude: stk500_recv(): programmer is not responding) and the uploading stops. what can possibly be the problem?

It’s not just you - but it’s not really intended to be soldered to. You’d only generally need to use those pads to hook up an FTDI type programmer, in which case a temporary solution (be that a pogopin bed, some hook clips, or just some quick soldering to the bottom of the board only) should suffice. If you did want a more permanent header, then a right angle header - or just a regular header soldered at 90 degrees - should do okay.

For those just starting with the displays, this blue one is nice and bright. I can see it no problem in the daylight. The white 7-segment display is a little tough to see in the daylight, since the color when these are off is white. Analogous to LEDs.

Received a defective one today. The baud rate is too far off to work on UART. These do not have a crystal for accurate baud rates. While it is possible to calibrate the internal oscillator I don’t think that is being done.

I am having trouble getting anything to show up. I have tried both the serial and SPI tutorials. Wired everything exactly like the pictures and used the provided code but still nothing. The other anomaly that is happening is that when wired for serial communication and the ground wire is disconnected the left bottom corner segments flash on the two right “8’s* as well as the decimal points for them. Does anyone have any ideas that I could try?

Hi, I have been using the Serial_7_Segment_Display_Firmware sketch, and I cannot make any sense of the output.

When I run the code as-is, my display looks like this:
http://imgur.com/UmmWysg

I have tried a lot of things, including replacing my loop to display a whole bynch of ints, none of which I can make sense of on the display. There are a few segments that never light up. Is my display broken? Is there a coding solution to this problem?

I’d like to use three of these for a project I’m working on; is there any way to change the default address of the I2C? Would this be in the bootloader on the chip, itself, or a simple setting I can send it?

The Eagle file schematics here and on github are incorrect and don’t agree with the Schematic link (http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Components/LED/Serial-7-Segment-Display-v31.pdf), which is correct. For instance, segment A is on PB0 not PD6, segment B is on PC0 not PB0, etc.

Guys - Has anyone been able to get these modules working on the I2C bus? I am using a Sparkfun UBW32 PIC32 board on I2C2 with code compiled by the Microchip C32 compiler and am getting good wave forms to the device, but I’m getting NACK’s back for each byte sent. I2C address is 0x71 and I’m sending that along with digit data with no luck. I’ve also tried the various commands with no luck. The waveforms are correct, but display defaults to 0000 and I’m not able to write anything to it. I’ve tried SCL rates from 5 kHz up to 100kHz with no luck. Any ideas? Is the I2C section even functional? Also, just for info, I2C addresses with a ‘1’ as the LSB are for reading a device. LSB of ‘0’ is for writing. (I tried address 0x70 as well just to see if that would work.) I would try the serial port, but they are already in use with high speed data. Would appreciate any info that might assist. Thanks! – Ed

Nice improvement over the older display. I’m trying to skip the arduino and hook up an analog sensor directly and here is where I am stuck. Jay’s
Serial_7_Segment_Display_Firmware.ino calls the function setupDisplay(). Yet that function is not defined in the sketch nor is it defined in the settings.h or SevSeg.h header files loaded by the sketch. So what am I missing here?

Thanks. One of these days I’ll have to learn how to use github properly :). Once I got all the files and set the DISPLAY_TYPE S7S correction noted above it works great. I have it hooked up to your LPG sensor and a battery and I’m good to check for propane leaks. Maybe next time I’ll get it mounted in the case right side up :)

It is definitely going to be dimmer now with the addition of current-limiting resistors on the LEDs. But it still seems pretty bright to me. Make sure the brightness is set at max (send 0x7A, 0xFF), which it should be by default.

What voltage are you powering it at? 5V will give you the brightest display, while 3.3V will be noticeably dimmer.

Bit of a maze to traverse (I don’t have this product), but as far as I can tell this uses the SevSeg library. SevSeg.h tells me that ‘y’ is not displayed, but ‘Y’ should be fine. If that doesn’t work, try 0x59 (should be the same thing). If that doesn’t work either, hopefully somebody from SFE will step in - but in the mean time you could try forming the Y yourself using individual segment control

This is following from member #4643 & 37129, we are still struggling to get the circuit working properly. As mentioned above, one of the segments (“E”) doesn’t work on any of the digits. Digging further we traced this back to the pins_arduino.h file, our sketch linked to the wrong one which didn’t describe the extra pins of the ATMega chip PB6&7 (not needing the external crystal) as digital pins D22 & 23. Indeed D22 is controlling the E-segments. However, when we do link to the right .h file, the Analog Inputs A6 & A7 (which worked previously with the wrong pins file…) stopped working, we get error messages from the compiler that “A6” & “A7” don’t exist. We tried “ADC6”, no luck. This may be something simple, any suggestions? Really keen on getting this circuit to work, for a project with interactive hand counters for a rehab ward where this can make a big difference.

Do you have the Serial7Seg folder installed in a “hardware” directory in your Arduino sketchbook? That should create a Serial 7-Segment Display option in your Tools>Board menu (for more info, see parts 1 and 2 here. When selected, that should handle all the D22/D23 definitions as well as A6 and A7.

Oops this morning we installed everything fresh on another Mac, now it all works! Few small things still but we are ironing those out, will post it all on our Interactivation projects site soon.
Thank you Sparkfun people for all your cool circuits, it has made our research and design work so much easier in the last years, fab!
- Bert

Oke we (I am working together with Member #4643) have been working on this one for a few days, had a lot of trouble. We mostly worked with the ‘ Serial_7_Segment_Display_Firmware.ino ’ in which the pinlocations seemed to be wrong, at least they do not correspond with the parallel connection. We tried everything, also in the SevSeg.h files etc. but without any clear result. Luckily we just fixed the ‘problem’!
It seems that everything is correct but one little thing, finally we found out that only this should be changed in that firmware Arduino code:
On line 38:
Original:

define DISPLAY_TYPE OPENSEGMENT

Changed into:

define DISPLAY_TYPE S7S

The other thing was the pin location, the provided schematic is incorrect!

So for further use:
Please fix this part in the firmware code and change the Schematic sheet!!

THANK YOU for posting this. I just bought this and thought there was some kind of bootloader issue because the display would not stop showing 999. I did not realize it was a pinout problem. I am going to repost this on the other colors. They really need to fix this.

Yes luckily we found out this little problem, should be al working good now! By the way somehow segment E doesnt work on any digit anymore now just after the weekend.. But thats probably fixed soon and not a general problem, because it worked perfect on friday! Oh and by the way thanks for reposting on the other product pages!

We have wired up this nice unit with an FTDI Basic 3.3V, installed the hardware profile for the Arduino IDE, but can’t make the display work. We wrote a sketch with Serial.begin(9600) and Serial.write(‘2’) but nothing appears on the display. The Arduino Examples section on the Github is empty, and so is the Customizing the display section…. help!

Did you upload new code to the display? Or is that sketch with the Serial.write('2') on an Arduino communicating with the display?

The S7S comes with the Serial_7_Segment_Display_Firmware code already loaded onto it, and is mostly designed to have a separate device send it serial data to be displayed. That said, you can definitely upload your own Arduino sketch to customize the firmware. I updated the customizing the display part of the wiki. Maybe that helps?

Thanks for that tip, will try that!
Sorry it might not be clear from our previous message, but the case is: we want to put Arduino code on the ATMega238 which is on the displays breakboard itself, so without an extra Arduino! So we just connected a header for the FTDI connection to the display and try to put the code on there!
Here is a picture of it
Anyone more experience with this so far?

Oh no! This would have made a perfect miniature-clock if ‘segment E’ wasn’t tied to the Xtal pins now(It wasn’t in the other rev), decimal points could be ignored in that instance and disconnected. I suppose with a bit or rewiring though!

Looking forward to seeing one of these in white be it the new or old style. Is there a reason that hasn’t happened yet?

Customer Reviews

SparkFun is an online retail store that sells the bits and pieces to
make your electronics projects possible. Whether it's a robot that can
cook your breakfast or a GPS cat tracking device, our products and
resources are designed to make the world of electronics more accessible.

In addition to products, SparkFun also offers
classes and online tutorials to help educate
individuals in the wonderful world of embedded electronics.