I am from a mobile development background and very new to Arduino. I am trying to make an electronic cricket score board. The logic is simple.

Score - 888 (3 Digits) - I have implemented this logic using shift registers. Three pin used from Arduino Uno and this is working fine.

Overs - 88 (2 Digits) - Need to find a best way to implement it

Wickets - 8 (1 Digit) - Need to find a best way to implement it

Now I need to add Wickets and Overs to the logic. I think there are two ways to do it.

  1. One is passing data from Score shift registers. I think this way is a bit complicated in logic level. But if this is a good way, then great.

  2. The other is, connect to Arduino Uno pins directly rather than getting information from score shift registers. There are only few pins.

Please Note: I need to print this design in PCB

This might be a basic question. But I would like to the know which way is efficient, and its advantages. If both are not, I would like to the know the best one.

  • Are you saving pins on the Uno for something else? Dec 7 '15 at 9:28
  • 1
    I'd just daisy chain them all together. I code, you can have 3 variables (score,overs,wickets), and something like an update function that converts the values in the 3 variables, into bytes to send to the shift registers. I don't see any real advantage to using separate pins for the three different chains of shift registers. I'd suggest using the SPI pins to connect to the shift register, in case you ever need super fast update rates (e.g. for smoothly fading digits on/off).
    – Gerben
    Dec 7 '15 at 15:50
  • @Gerben Thanks for your suggestion. It makes sense. I thought passing information via all serial registers may cause delay. Now i am clear with it.
    – vinothp
    Dec 7 '15 at 16:02

There isn't really a best way (and such questions are usually discouraged as they can easily descend into argument).

Personally I would go for chaining all of the '595s together so you only ever use the 3 pins; it gives you the opportunity to use a smaller MCU like the ATtiny when you put it all on a board later which makes it (slightly) cheaper and (potentially) smaller.

From a software point of view, it doesn't make a huge amount of difference - doing it the way I have suggested means you send the 3 values out in the correct order every time one of them updates. Separating the 3 scores with their own dedicated pins means juggling which one needs to be updated each time. Neither option is particularly complicated and with this sort of application efficiency of code is mostly redundant because the entire MCU is dedicated to the (simple) task.

  • Thanks for your suggestion and your answer. It helps me to decide which way to go.
    – vinothp
    Dec 7 '15 at 16:03

You could use a 16x2 LCD to display the information; then you wouldn't need so many separate lines from the Arduino, the PCB would be simple and compact, etc.

However, if you need a big high-power display that is not multiplexed, you could use one 74HC595 per digit, assigning one bit per segment with 7-segment LED displays, with a driver transistor on each output.

The six '595s would be in series, which would use only two output lines from the Arduino: clock and data.

Another approach is to build your display from 84 or 126 WS2811 or WS2812B LEDs (2 or 3 per segment, and 7 segments times 6 digits). About $10 to $15 on Ebay. This would use one data pin from the Arduino to drive the whole display and would supply bright RGB light.

  • Thanks for your suggestion. Actually i am doing the same.Using 74HC595 per digit which works fine. But my question is there are three different logics for leds. I asked what is the best way to implement it. Did you get my question?
    – vinothp
    Dec 7 '15 at 9:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.