Go Down

Topic: intelligent auto dimming display (Read 1 time) previous topic - next topic


I have used auto dimming displays in scoreboards for a couple of years now - since LEDs got so bright that they could dazzle a player.

I have been using a LDR  ( light dependant resistor ) usually  fitted to the back of the scoreboard,  to measure the background light, and adjust the brightness,so that if it is night time, the displays will be dim.

One  problem is that if the daylight only warrants 50% drive to the LEDs say - and if the score is 1-1 ( on a simple 4 digit scoreboard ) then only 4 LED segments are lit .

If the score was 88 - 88 , with the same daylight dimming, then 28 segments are lit, giving 7 times the amount of glare as the player runs by.  ( and 7 times the current )

The main problem however, is that the power supply has to be able to supply all 28 segments ( with 88-88 set for checking if all the LEDs are on )  at full sunshine, which would never happen in a game.

I have been purposely introducing resistance in the LED supply circuit, to reduce the current with more LEDs on, so that I can get away with a smaller power supply ( and limit the glare )  but this introduces heat which I do not need inside the scoreboard on a sunny day.

Do any of you guys know of a way to add together all the binary " 1"  bits in  a stream of numbers  ?

I send 8 bits to each display chip ( daisy chained shift registers )  x the number of digits.

Each bit lights one segment of LEDs,  so if I could just tell how many 1 bits there were in the stream, I could modulate the overall brightness to cancel out the glare variations with different scores.  ( and also reduce the current capability = cost of the power supply when testing with all 8s on.)

45 years of editing projects with a knife and soldering iron, then I found Arduino !


Where bit_holder is a copy of the variable that you're shifting out and totalbits is the number of segments that would be turned on:

Code: [Select]
  while (bit_holder > 0) {
    totalbits += bit_holder & 1;
    bit_holder = bit_holder >> 1;


May 10, 2014, 09:10 am Last Edit: May 10, 2014, 09:29 am by Boffin1 Reason: 1
Thanks   I will look into that , and see if I can find some examples .

Thinking about it, there are only 10 values, (  0 = 6bits, 1 = 2 bits, 3 = 5 bits etc ) as I already have the decimal numbers to send, before I convert them to a bitmap for each 7seg display.

I could just have an array with how many segments are on for each number, then as I am setting up the numbers to send, I could just add all the bits from the array, and use this to modulate the brightness pwm.

But I will have a look at your suggestion, its  not something I have come across before.
45 years of editing projects with a knife and soldering iron, then I found Arduino !

Go Up