Creative Commons images are CC BY-NC-SA 3.0


added to your
shopping cart

In stock 95 in stock
12.95 1+ units
11.66 10+ units
10.36 100+ units

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 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!)

  • 4 digit red alpha-numeric display with TTL, SPI or I2C Serial Interface
  • Display numbers, most letters, and a few special characters
  • Individual control of decimal points, apostrophe, and colon
  • Selectable baud rate
  • Selectable brightness
  • Baud rate and brightness values retained in non-volatile memory
  • Individual segment control for each digit


Replaces: COM-09766

Comments 27 comments

  • Obscure tip department: Talking to this from a Raspberry Pi on I2C will experience occasional errors due to a bug in the Raspberry Pi CPU I2C peripheral. Building the software for this display with a delayMicroseconds(3) in the Wire library twi.c file works around the issue. This line goes in the IRQ handler SIGNAL(TWI_vect) right after the slave receiver “case TW_SR_GCALL_ACK”. Hackish but errors go away. Keep in mind the problem is in the Pi not this display. // Slave Receiver case TW_SR_SLA_ACK: // addressed, returned ack case TW_SR_GCALL_ACK: // addressed generally, returned ack delayMicroseconds(3);

  • Why don’t the pics have the ruler scale included in the picture like they used to? I’ve noticed this on various products in the past few months, means you need to spend time digging into the data sheets rather than quickly glancing whether it’s what you want or not.

  • Repost from blue display:

    Ok 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:


    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!!

    • Looks like they just changed the default DISPLAY_TYPE to S7S in the git repo and tweaked the net names in comments to line up better. Another tip, I needed to reset the EEPROM to defaults after the first time it was reprogrammed to the latest.

      • I just downloaded the firmware and it is NOT set to S7S. It is still set to OPENSEGMENT.

        Note for others: If you try and load an S7S with this setting wrong, you will get an AVR Dude error.

  • There seems to be a (minor) bug in the firmware of the device: Sending the brightness command 0x78 with the parameter 117 (0x76) or 118 (0x77) results in ressetting the display - I suspect that the device interprets these two parameters as a special command.

  • I just wrote another library to print floats for this display, it does everything for you and is quite simple to use. Check it out, there are a few features I still want to add but it works quite well! Github

  • Hi! After downloading and updating the firmware from “define DISPLAY_TYPE OPENSEGMENT into:define DISPLAY_TYPE S7S” I still have the same problem. I can’t get the display to properly show the data with decimals. I have a temperature string from a DHT11 with this format: 23.20 and all I can get to display is 23 Can anyone help? I’m sure it’s something simple in the code but… Thanks!

    • The only way to print decimals is by sending the Decimal control command.

      If you wanted to print “23.20”, you’d have to send 2320. Then, to print the second decimal, you’d need to send a byte value of 0x77 (decimal command) followed by 0x02 (turns the second decimal on).

  • Anyone have any information about troubleshooting the FTDI connection? I keep getting a not-in-sync response (avrdude: stk500_getsync(): not in sync: resp=0x00) and I don’t know what to do. The datasheet says that FTDI can power the display and reprogram it, but it seems like that might not be the case.

  • How can I print a floating number to a 7 segment display ? I don’t want to copy in a new library - I want to learn how to code it in. I have a temperature I want to display on my 7 segment display but I want 2 decimal places. I am currently casting it as an int but I need more accuracy. Can anyone point me in the direction of a good tutorial on how to do this. Im not a professional - just a guy who is keen to learn but after 2 hours searching on the net, Im still at a loss on how to do it and im pulling my hair out…

  • Ok guys, I have read as much as I can find in the docs on github and doing some searching on this module but I am not seeing/understanding how to get letters/strings of letters to display in I2C mode. I see a couple of examples that reference serial mode. Do I have to change everything to serial mode to display letters?

  • I don’t understand what happened. I was working great. displaying numbers just fine. Now all of a sudden all I can display are letters and single digits. I used to be able to use serial.print now that only works for “v” and “xxxx”. I have tried resetting it to the factory defaults. Baud is good. Anybody have this experience?


  • Is it possible to use one of these to control another of the same displays I2C? I’d like to make a 12 digit display, wondering if I need a separate ATMEGA/Arduino.

  • Any simple example of using float?

  • I Try to rebuilt this circuit on a braedboard with a ATMega328P in DIP Package. I use the Board 7SegDisplay, but the Circuit dont work after Uplaod without Crystal. But i need this two Pins any idea?

  • I got 2 of these and connected them through I2C to an Arduino. I changed the I2C address of one of the displays (0x70). It all worked just fine but after a while the display with the changed address changed back to the original address (0x71). I can change it back to 0x70, but after a while it sits on 0x71 again, really annoying. Does anyone know why this happens?

  • Is it possible to connect two (or more) of these to a single ardunio on the same serial line (just connect it in parallel) and have them display the same information.

    • Yes, use the I2C connection. If the displays have the same address, they’ll show the same information.

  • I bought 2 reds and a blue. None turn on when given power (the old ones just went to 0000) Am I missing something here or is there a design error???

    • Just so others know, there was a design change, the boards no longer default to 0000. You have to give them data, otherwise they turn off. At least, that’s the situation I’m finding on my breadboard.

Related Products