Retired!

This is a retired product, but fear not as there is a newer, better version available: COM-11442

Creative Commons images are CC BY-NC-SA 3.0

Retired RETIRED

This product has been retired from our catalog and is no longer for sale.

This page is made available for those looking for datasheets and the simply curious. Please refer to the description to see if a replacement part is available.

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

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

Documents:

Comments 81 comments

  • 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.

      • 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 />

      • 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.

  • 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.

    • 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.

      • 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?

  • I made a Youtube demo for this product:
    Linky

  • 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).

  • 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.

  • 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.

  • 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.

  • 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

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

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

  • 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).

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

  • 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.

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

      • 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.

  • 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

  • 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/.

  • 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?

    • 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.

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

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

    http://paste.pocoo.org/show/509792/

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

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

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

  • 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.

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

  • 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.

  • 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
    http://tronixstuff.wordpress.com/2011/05/13/tutorial-arduino-and-the-spi-bus/
    But I had difficulty with serial TTL.
    I found demos that worked well with Thanks to
    http://www.arunet.co.uk/tkboyd/ec/ec1led4x7ser.htm
    NewSoftSerial library required…. Once again Thanks to
    http://arduiniana.org/libraries/newsoftserial/
    Bye…

  • 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?

  • 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.

    • 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.

  • 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?

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

    • 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.

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

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

  • 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.

  • 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.

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

  • 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?

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

    • 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?

  • 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.

    • 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.

  • 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?

  • 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? :)

  • 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.

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

    • 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.

  • 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
    http://www.youtube.com/watch?v=WFEq9U17cKk
    Thanks sparkfun for creating such a cool display. For your next trick can you make an alpha-numeric version of this?

  • 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.

    • 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.

    • Do these bugs affect the communication over Serial?

    • 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.

      • 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.

        • 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.

        • 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?

          Thanks.

  • 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

  • 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.

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

  • 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?
    thanks

  • 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.

    • 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.

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

  • 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.

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

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

      • 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.


Related Products