How to flash only one digit on an 8-digit 7-segment display?

Hi,

I'm trying to create a kind of scoreboard on my 7 segment display module, including editing scores with a joystick. I have figured out how to flash all digits on and off by using max brightness and then lowest brightness:

void loop()
{
output(0x0a, 0x0f); //bring intensity (brightness) to maximum
delay(500);
output(0x0a, 0x00); //drop intensity (brightness) to minimum
delay(500);
}

However, I wanted to be able to flash only one digit on the display with the other digits on max brightness? This is to indicate which number the scorer is changing. Thanks for any help in advance.

This is a wild guess based on the little information that you have provided but try

void loop()
{
  output(0x0a, 0x01); //bring intensity (brightness) to maximum
  delay(500);
  output(0x0a, 0x00); //drop intensity (brightness) to minimum
  delay(500);
}

UKHeliBob:
This is a wild guess based on the little information that you have provided but try

void loop()

{
  output(0x0a, 0x01); //bring intensity (brightness) to maximum
  delay(500);
  output(0x0a, 0x00); //drop intensity (brightness) to minimum
  delay(500);
}

Unfortunately this just makes the bright part of the flash a little bit dimmer than before, and still flashes all digits. I’ll attach my full code below, but what I’m trying to do is have the display light up with certain numbers (the letters and numbers used in my code are just examples), while one of them is flashing either on and off, or between a higher brightness and a lower brightness (whichever is easier). I’m going to use this to control whichever number is shown at the flashing digit - e.g. when the basketball team’s score is 17 and a player scores two points, I want to change the 7 when it is flashing to a 9, by flicking the joystick up. Hopefully that makes sense?

int DisplayDIN = 10;
int DisplayCS = 11;
int DisplayCLK = 12;

void initialise()
{
digitalWrite(DisplayCS, HIGH);
pinMode(DisplayDIN, OUTPUT);
pinMode(DisplayCS, OUTPUT);
pinMode(DisplayCLK, OUTPUT);
}

void output(byte address, byte data)
{
digitalWrite(DisplayCS, LOW);
shiftOut(DisplayDIN, DisplayCLK, MSBFIRST, address);
shiftOut(DisplayDIN, DisplayCLK, MSBFIRST, data);
digitalWrite(DisplayCS, HIGH);
}

void setup()
{
initialise();
output(0x0c, 0x01); //shutdown register - normal operation
output(0x0b, 0x07); //scan limit register - display digits 0 thru 7
output(0x0a, 0x0f); //bring intensity (brightness) to maximum
output(0x09, 0xff); //decode mode register - CodeB decode all digits
output(0x08, 0x0c); //print ‘H’ in digit 7 (leftmost digit)
output(0x07, 0x0b); //print ‘E’ in digit 6
output(0x06, 0x0d); //print ‘L’ in digit 5
output(0x05, 0x0e); //print ‘P’ in digit 4
output(0x04, 0x08); //print ‘8’ in digit 3
output(0x03, 0x07); //print ‘7’ in digit 2
output(0x02, 0x06); //print ‘6’ in digit 1
output(0x01, 0x05); //print ‘5’ in digit 0
}

void loop()
{
output(0x0a, 0x0f); //bring intensity (brightness) to maximum
output(0x01, 0x05); //print ‘5’ in digit 0
delay(500);
output(0x0a, 0x00); //drop intensity (brightness) to minimum
output(0x01, 0x05); //print ‘5’ in digit 0
delay(500);
}