7-Segment Serial Display - Blue

Replacement:COM-11442. We've overhauled this board adding I2C functionality, and Arduino bootloader and mounting holes! This page is for reference only.

The 7-Segment Serial Display turns the thirteen pins necessary to control a 4-digit seven segment display into just one or three. The display will give you full control of all digits, decimal points, the colon and the apostrophe. At the heart of the display is an ATMega328 which controls all the serial communications and the 4-digit 7-segment display through an easy to use API.

The Serial 7-Segment Display can be controlled in one of two ways: (1) serial TTL communication or (2) SPI serial communication. Regardless of which method you use to communicate with the display, the display is controlled with 4-byte packets and special 2-byte commands.

*New for version 2: *The input and power pins have been moved to the top of the display, allowing you to place the displays side-by-side. Additional characters have been added, including the "-". A reset display command and single character control have also been added. See the new user's manual below for detailed information about all of the new features!

  • 4 digit blue alpha-numeric display with serial (1 pin) or SPI interface (3 pins)
  • Display numbers, most letters, and a few special characters
  • Individual control of decimal points, apostrophe, and colon
  • Selectable baud rate (2400 to 57600 bps)
  • Selectable brightness
  • Baud rate and brightness values retained in non-volatile memory
  • Individual segment control for each digit


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Erl / about 13 years ago / 3

    Could someone explain to me how this board can work without resistors?<br />
    <br />
    I would have thought the AVR processor would feed 5V to the LEDs, and with a maximum output current of 40 mA per digital pin, would burn the LED.<br />
    <br />
    Why does this not happen?<br />
    <br />
    Trying to learn!

    • Check the user's manual. It is driven through the ATmega controller, so it takes care of all of that for you.

      • Erl / about 13 years ago / 4

        The user's manual does not explain how the circuit works internally.<br />
        <br />
        From what I can tell the ATMega digital outputs (5V when high) are connected directly to the 7-segment display.<br />
        <br />
        Even if the ATMega uses PWM, 5V (or 40 mA for that matter) even for a short time should be enough to burn the LEDs.<br />
        <br />
        Can you explain what current goes to the segment LEDs when they are turned on by the ATMega?<br />
        <br />
        Thank you.<br />
        <br />
        RobertC.:<br />
        <br />

        Check the user's manual. It is driven through the ATmega controller, so it takes care of all of that for you.
        <br />
        <br />
        <br />

      • J.R. / about 13 years ago / 2

        Mine just burned out (46 minutes before a semester long project presentation!), running from Arduino into the board.... Do you replace boards since you claim they shouldn't burn out?

        • That's unfortunate. You will have to talk to either customer service or tech support about that though.

  • tom jennings / about 12 years ago / 2

    no current limit resistor? sorry, no way I'll buy this device! it won't last long enough.

    YES, i realize you control average power in the LEDs via PWM but the PEAK current is limited by the inherent resistance of the output drivers. They're called ABSOLUTE MAXIMUM RATINGS for a reason. Even if your average current meets LED spec the PEAK will exceed the ATmega328 output pin abs max.

    "It takes care of all that for you" is not an acceptable justification for lack of series PEAK current limiting.

    • Noter / about 12 years ago / 1

      Turn down the brightness a little and it will definitely last. I've been running one a couple of notches below max brightness for quite a while with no problems. It's not the current that damages things, it's the dissipated heat. The PWM method utilizing pulse width and duty cycle is a good way to manage heat but too large a pulse or too high a duty cycle can burn things anyway.

      • tom jennings / about 12 years ago / 2

        this will be my last, you can have the last response after this if you want -- but exceeding the manufacturers ABSOLUTE MAXIMUM RATINGS is simply bad practice. I fully, deeply, understand the average dissipated heat (Tj) issue; but peak current within the final driver transistor is still exceeded.

        And "turn down the brightness and it will last" is basically admission that the design is inadequate. I simply don't buy it, and won't. It simply needs an 80-ohm resistor in series with each cathode for the worst case (red LEDs (1.34V or whatever) to limit peak to 50mA. Why design in limited life when full product life is just a few resistors away?

  • pikachu / about 13 years ago / 2

    I made a Youtube demo for this product:

  • garygid / about 11 years ago / 1

    CAUTION: The replacement part is not fully program compatible. Here, the Brightness is FF to 00, but in the replacement part, the Brightness is 00 to FF (dim to bright).

  • Member #164396 / about 12 years ago / 1

    Very nice product. Had some trouble getting it to work correctly. The following link was very helpful: http://www.arunet.co.uk/tkboyd/ec/ec1led4x7ser.htm The key is to initialize the display a couple times on start up using the 0x76 command for reset. ("v" works also) Then load it with your favorite charters to make sure it worked.
    Then the set the brightness command 0x7A command. I use 0x7A, 0X40 for 75% brightness.
    75% brightness should extend battery life, and prevent the display from burning out prematurely. (remember 0x254 is 100% too bright. 0x7F or 50% is probably too dim). This product needs a little patience for inexperience programmers. It is good to send the reset command before you send other commands. ( send the reset command on one line of code then your special command, or 4 byte display command on the next line.) Again nice product; good alternative to a LCD, when cost is a issue.

  • Noter / about 12 years ago / 1

    I notice different numbers do not illuminate at the same brightness. Most noticeable between 1 and 8 or the apostrophe and 8. I guess it is because the ATmega can't supply enough current to drive segments equally regardless of how many are on.

    Still a great display for development but maybe not for a finished product. Especially nice that it is open source and you can enhance if desired.

  • Stuelpner / about 12 years ago / 1

    Why does the display work without a Vcc-connection (only GND and RX)? I found and tested this example in "Environmental Monitoring with Arduino" from MakerPRESS, page 21.

  • musiq021 / about 12 years ago / 1

    Here's a simlpe 3D sketchup model for anyone rendering their boards in 3D. I am using a simple 8x1 header in my eagle board and associating it to this model with Eagleup (sketchup exporter) : http://cl.ly/3Q3T26330j44073d2T2V

  • Member #103796 / about 12 years ago / 1

    Is there a recommended bezel or method for mounting this in a panel?

  • Member #330318 / about 12 years ago / 1

    None of the links above work, could you fix them?

  • AustinSaintAubin / about 12 years ago / 1

    Just finish a library for this display: https://www.dropbox.com/s/ssvydwuf3js3cb5/Serial7.zip It has a lot of features and works great on the Arduino UNO. Also supports the ATtiny45 & ATtiny85 (except floating point math).

  • simo9836 / about 12 years ago / 1

    Would it be possible to paste the source code into the Arduino bootloader?

  • tim7 / about 12 years ago / 1

    A properly alpha-numeric version of this would be super useful (with "starburst" type displays like this one). LCDs are ok, but are nothing like as bright and clear as LED displays.

    • MikeGrusin / about 12 years ago / 1

      It's not quite as self-contained as this one, but do take a look at the Serial Alphanumeric Display Driver.

      • tim7 / about 12 years ago / 1

        Thanks for the reply. I had noticed that board before, but you really need at least 4 characters to spell out messages. Four of those boards stacked together becomes a bit bulky and expensive.

        I love the SparkFun 4-digit LED modules and have used them in almost all my projects. But text on 7-segment displays is ugly and difficult to read, and there's no k, m, v, w or x.

  • azrobbo / about 12 years ago / 1

    I made a basic clock using this module with an Arduino and a DS1307 RTC module. My code has support for this module and the earlier revision (include the appropriate define in the .h file). https://github.com/azrobbo/Arduino-Clock-Seven-Segment

  • Member #122644 / about 12 years ago / 1

    Hey all. I wrote an Arduino library for this display and figured others might find it useful. It essentially takes care of outputting a number over serial including shifting around the decimal point. More info at http://javconcepts.com/39/Serial7_Arduino_Library/.

  • Member #244850 / about 12 years ago / 1

    I'm a Newb with perhaps a silly question. Can I use 2 of these at once with 1 arduino? I am trying to make a PID controller. If so which pins should I use?

    • Madone / about 12 years ago / 1

      You will need to use the software serial lib. Once you have that included you should be able to use any two of the digital I/O pins to communicate to each display independently. Your other option would be use SPI communication. This has a chip select ability to control multiple displays. In this case you would use the MOSI and SCK pins of the Arduino then you will need to use one digital out to each display's CSN pin.

      • MikeGrusin / about 12 years ago / 1

        From experience, the SPI interface makes it very easy to talk to multiple displays using one Arduino.

  • vindolin / about 13 years ago * / 1

    Python script to reset a misprogrammed display to a new baud rate:


    The script tries all supported baud rates to set the desired rate.

  • Chris Parsons / about 13 years ago * / 1

    Total noob here. Can someone please get me started on the code that I need to create a light meter. I plan on using a basic CdS photosensor to feed a voltage (that is proportional to intensity) into my arduino's analog input. Then, I would like to use this 7 segment display to output that intensity, and I don't care about about units or scale at this point. Thank You in advance!

  • kristeller / about 13 years ago / 1

    any chance this could be packaged with a ic socket so i can swap out the 4x7?

  • vindolin / about 13 years ago * / 1

    Really nice bright display :)
    geek clock
    ^ looks much more deep blue in real life
    Hey Sparkfun! for the next version, why not add a jumper to prevent accidentally setting the baud rate?!
    Connecting cables to the display often generates enough noise that gets mistaken for a set baud rate command :/
    As a workaround, I run a setup routine at startup which tries every available baud rate to set the desired baud rate.

  • n / about 13 years ago / 1

    I really like these displays, I've used the blue, green, and red. I connect them to an FTDI cable or break-out, heat shrink the assembly, then trim out a window for the digits with an exacto. Makes a nice little toy for a geek.
    A request though, for the next revision... please consider calling the UART TX pin as well as RX. That way a UART programmable bootloader could be installed, making firmware updates much easier. In fact, you could even pre-install the bootloader! :)

  • SlyVixsky / about 13 years ago / 1

    obscure question: why not breakout the unused ADC6/7 lines? 2 buttons and a little more code, you have a clock, or a timer, or an ADC input for voltage measurement :) I like SPI, but i believe a lot more use could be put into this if it didn't rely entirely on a master controller elsewhere, especially with the SPI/programming pins being broken out already.

  • JPK / about 13 years ago / 1

    Hello All
    I just started to play with this little guy. Love the cool blue display.
    However the "Users Manual" on this devivce is a bit thin on interfacing to the Uno - especially (1Pin) Serial TTL Mode.
    I got this working on SPI ok with Thanks to
    But I had difficulty with serial TTL.
    I found demos that worked well with Thanks to
    NewSoftSerial library required.... Once again Thanks to

  • A. Citizen / about 13 years ago / 1

    i have this. I connected it via SPI as from the forum example (http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1247533060). It works perfectly when it is running off the arduino 5V pin, however when I attempt to run it from the 3.3v pin the display shows garbled results.
    I was under the assumption that it could run from 3.3v as per the datasheet. "The
    display can be powered at anywhere between 2.6 to 5.5V"
    I need to be able to run it from a pro-mini 3.3v and lithium battery to keep it small- it is for a wrist watch. Any reason that 3.3 would make it display gibberish?

  • Tahsin / about 13 years ago / 1

    Hooked it up to my computer usb serial port with 5volt power. Used Realterm to send data. All it shows on the display is gibberish. Re-flashed the chip and it still does the same thing.

    • tim7 / about 13 years ago / 1

      Does the gibberish change continuously? If so you may need to ground SCK. If the gibberish changes only when you try to send data, you probably have the wrong baud.

  • tim7 / about 13 years ago / 1

    This module is great - inexpensive and really flexible. Just a couple of things I wish it had:
    - Fixing holes in the PCB
    - Pull-down resistors on (at least) the RX and SCK pins.
    Without the resistors the module is extremely sensitive to noise, which corrupts the display and can reprogram the baud rate. Since the baud is kept between resets, for a moment I thought I had bricked one of my displays.
    Maybe enabling the built-in pull-up resistors in the ATmega328 would be sufficient to resist interference?

  • mwalsh5757 / about 13 years ago * / 1

    Silly question, but I'm using this display for one of my projects and there appears to be a clear plastic film over it. I can pick up a corner, but it's otherwise glued down pretty good. Do you know if this is just a protection for shipping/install purposes? I don't want to pull it off if I'm not supposed to!

    • musiq021 / about 13 years ago / 1

      Rip away, it's just a protective film. I had the same worry, that it may be necessary for protection, but then I got brave and ripped it off, all is well.

  • musiq021 / about 13 years ago / 1

    I used this beauty for the interface on the slide scanner I built ( http://adigitalshoebox.com/slidesnap )

  • mike24026 / about 13 years ago / 1

    Anyone measure typical/max current consumption? At 3V?

  • Helios / about 13 years ago / 1

    I am able to change the brightness of the display over SPI using my ATmega16. Does anyone have issues with looping the brightness level between 0-254 ? Mine stops at roughly level 118 and then clears the screen.

  • Member #123727 / about 13 years ago / 1

    Thanks so much for this. Only problem I ran into is that displaying the numbers by decimal can be a bit confusing. I'm using it to display the time ( 24Hr Time), and when my clock switched past 19:59 to 20:00, it really went to 1A:00. This caused the display to go nutz. with the 1A and trying to realize that 0x00 was really something I wanted to display. I switched to sending ascii representation and everything seems to be working fine.

  • swort / about 13 years ago / 1

    where is SparkFun NL, this rocks man...!!
    I almost buy everything on Sparkfun today, no more 100x websites searching just go to sparkfun... But a Sparkfun in the EU / NL would be great (to get products faster @ home)

  • Member #199231 / about 13 years ago / 1

    I'm looking at a 7-Segment Serial Display - Blue,
    sku: COM-09765, that someone gave me today. I downloaded the schematic from this page (products/9765) but it doesn't reflect the hardware correctly (i.e., JP2). I think I've figured it out but is there a current schematic?

  • SirPoonga / about 13 years ago / 1

    Can the atmega be reprogrammed? Or an command added to mirror the digits (in case you want to display them using e mirror).

    • trend321 / about 13 years ago / 1

      Check the user manual, you'll see that you can control each segment of each digit individually. So you could reverse/mirror the display with some custom commands. It would just be a bit of effort.

  • anyone knows if the microcontroller ATMega328 is already programmed?

  • trend321 / about 13 years ago / 1

    I was not able to get this working using SPI (UBW32) - but I'm no expert. It displayed something, but it seemed bit-shifted left.
    UART works very well, and at 9600 I managed to get it working in software (rather than use a hardware UART). I cheated on the timing and used a TIMER.

    • robalack / about 13 years ago / 1

      You are probably clocking data at the falling edge instead of the rising edge. Look at the datasheet for the SPI on your Micro, and there will be a bit you can set or clear to change this option. I had the same problem, and this fixed it.

  • Young Maker / about 13 years ago / 1

    Hmmm. I have tried several times to send serial commands to the display, only to get garbage. tried it at every baud rate except 14400. Its not very easy to set strange baud rates on a PICAXE. Any pointers?

  • esm / about 13 years ago / 1

    Ah, what I wouldn't give for the unused pins on the AVR to be exposed somewhere! Those two unused ADCs and three PORTB pins would be great for making this a completely self-contained (sans power supply) project I'm working on. :)
    Wonder how good my fine soldering skills are? :)

  • Member #155499 / about 13 years ago / 1

    The data sheet for this device says that:
    "Sending the reset display command, 0x76, will clear
    the display and set the cursor to the first digit."
    However, I want to send 0x7B 0x76 (which should illuminate a capital "H" on the first digit because 0x76 is the correct segment bit pattern. However, in the source, one can see that the check for blanking (0x76) is made before the "digit control" check.
    I'd call that a bug. One can easily work around it, but it'd be a good idea to fix it in a later rev of the firmware.

  • LogicStorm / about 14 years ago / 1

    I wanted to put together a Ponoko project with these. What are the dimensions (especially depth)?

    • billbaitsg / about 14 years ago / 1

      It's 0.4150" deep from the face of the LED's to the top of the capacitor on the back. <br />
      <br />
      It's .3500" from the face of the LED's to the back of the PCB.<br />
      <br />
      And it's .3865" from the face of the LED's to the top of the ATMega328.

  • twich / about 14 years ago / 1

    This display is fantastic. It has a nice old school look to it. The blue LED's make it even more awesome.
    Here is an example of scrolling text on the display using an Arduino. My code is linked in the video description
    Thanks sparkfun for creating such a cool display. For your next trick can you make an alpha-numeric version of this?

  • Alan Burlison / about 14 years ago / 1

    The original datasheet says the SPI interface would run at 2MHz whereas it will only do 250KHz at best - and even then it won't ever be 100% reliable. The firmware is absolutely shocking, and (amongst other problems) the SPI ISR overruns. See http://bleaklow.com/2010/08/28/sparkfun_are_less_than_electrifying.html for the sorry details. My advice - avoid this product.

    • robalack / about 13 years ago / 1

      This comment almost scared me away from this product. But I bought it anyways because I want something simple. I had this thing working within 30 minutes of soldering it into my board. GREAT PRODUCT. EASY TO USE. And I can't see faster than 250khz anyways. The only problem would be if you want to bit bang the SPI bus. But if you have a SPI port on your micro, it should be pretty easy to deal with.

    • pikachu / about 13 years ago / 1

      Do these bugs affect the communication over Serial?

    • billbaitsg / about 14 years ago / 1

      I wonder if the SPI pins and the reset are connected to the corresponding pins on the ATMega 328? If they are, then couldnt the chip be reprogrammed via ISP?<br />
      <br />
      This would allow an update of the firmware and the loading of some custom character and such.

      • billbaitsg / about 14 years ago / 1

        yes, you can reprogram it. i messed up the program on mine (probably ESD) and i reprogrammed it using my AVR pocket programmer and the source code provided.

        • AustinSaintAubin / about 12 years ago / 1

          How did you manage to reprogram this? I have the sparkfun pocket avr and I have had NO LUCK in connecting to or reprograming this thing. I can connect the pocket avr to a standard arduino just fine. But when trying to connect to this thing all I get is: "avrdude -c usbtiny -B 1 -patmega328p"

          avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check.

          avrdude done. Thank you.

        • Valentin / about 12 years ago / 1

          very nice display. Thanks to Sparkfun. However, I would like to modify the firmware, in order to add a new command and other things: I need a new command to ask the name to the device (It has to return me some bytes to identify the kind of display).

          I need to add one byte more, with a checksum of the first four ones (it is going to work in a noisy place).

          Yes, I need a Tx connection. ¿Does it have) (with other name...) Is possible to update the display firmware, using the existing connections? What is the way? Could you give me more details?


  • Whatartist / about 14 years ago / 1

    I have solved it. The issue was that although i was calling the SLAVESELECT LOW/HIGH in different functions they didn't get along.
    To make the display show clean you must call it only once per loop cycle and place all display calls between a single SLAVESELECT low and SLAVESELECT high

  • Whatartist / about 14 years ago / 1

    I have been enjoying toying around with this display for a new clock I am making. However, if I am having problems with the first digit. It flashes 0 whenever I am trying to calculate numbers before writing them. I posted a forum question at http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1281958058
    any advice on how to make it show blank when time is less than 12 and not flicker 0 when above.

  • Volkemon / about 14 years ago / 1

    I was looking for a serial 7-segment display, and the blue sold me. :) I have 2 coming via FedEx.
    I would like to mask the display with a lens to give a 'blackout' look when off.
    I am guessing blue, but any input on color? Thanks!

  • Sormaz / about 14 years ago / 1

    can anyone get me some proper dimensions on these? i'd like to use them in a project but not have to buy them to make sure it fits :)
    also, how bright are they? easily visible in daylight?

  • Barrett / about 14 years ago / 1

    Can't seem to change the baud rate. I need it to work at 4800 or less because I wanted to use it with those cheap little RF links. I have it working with an arduino, I can change brightness,but I've never been able to change the baud rate.

    • kaydub / about 14 years ago / 1

      I bought several of these, and one mysteriously came set to 57600. I kept trying to change the baud rate, unsuccessfully. Tried to change another to 57600 so I'd have two with the same baud rate, and instead, it set it to 4800. There's definitely something fishy with the baud rate command.

  • Keebler / about 14 years ago / 1

    Ok...so I'm an idiot and got this thing to work via spi so I can vouch for its being idiot-proof! I do have a feature request though... while interfacing with an arduino I realized I was writing a lot of code to convert my data (a four digit integer stored as a 16 bit integer) into a char array so that I could easily send the data to the LCD. I started worrying about the effect on my execution time and how maybe I could move the int-to-BCD function to another micro offboard when it hit me... why not add the capabilty to convert UNIT16s to BCD to this board! I'd suggest yet another command byte, followed by two bytes representing the 16 bit INT which the module could correctly parse into the four display characters. Thanks in advance!

  • Layne / about 14 years ago / 1

    I got this item and am so excited for it. Everything seems to be in working order, but for the life of me I can't figure out what goes where and why. Could someone throw me a bone? Thanks.

  • MilesTag / about 14 years ago / 1

    You guys ROCK! Finally we can put blue "HALO-style" ammo displays on our guns.

    • Exactly! Why do you think we made these!?

      • MilesTag / about 14 years ago / 1

        Yeah, I think you guys are going to have to crank up production on these. ;-) I'm letting my customers know they are available in more colors now. Though I would expect the blue ones to be the most popular just because of the HALO games. I hooked one of these up to my laser tag system and it is ULTRA COOL to watch those blue digits counting off your rounds. Thanks again for getting these out in all the colors!

        • Sure. We are trying to get them built, but with Maker Faire and other things, we are a little behind. Check back soon.

Customer Reviews

No reviews yet.