Which muliplexing IC you are using?? analog or digital
Check this part of your code
byte sevenSegment[10][7] =
{
//a b c d e f g
{ 0,1,1,1,1,1,1,}, // = 0
{ 0,0,0,1,0,0,1 }, // = 1
{ 1,0,1,1,1,1,0 }, // = 2
{ 1,0,1,1,0,1,1 }, // = 3
{ 1,1,0,1,0,0,1 }, // = 4
{ 1,1,1,0,0,1,1 }, // = 5
{ 1,1,1,0,1,1,1 }, // = 6
{ 0,0,1,1,0,0,1 }, // = 7
{ 1,1,1,1,1,1,1 }, // = 8
{ 1,1,1,1,0,1,1 }, // = 9
};
void segmentWrite(byte digit)
{
byte pin = 2;
for (byte i=0; i<7; ++i)
{
digitalWrite(pin, sevenSegment[digit][i]);
++pin;
}
}
If you check your code you Keep reading 1234 in main loop . You not reading other values. thats reason it keep displaying 1234
/* Arduino pin 7 segment
2 a
3 b
4 c
5 d
6 e
7 f
8 g
9 dp(dot pin)
10 digit 0
11 digit 1
12 digit 2
13 digit 3
*/
byte digit0 = 10;
byte digit1 = 11;
byte digit2 = 12;
byte digit3 = 13;
byte dotPin = 9;
byte digit11=1;
byte sevenSegmentPins[] = {2,3,4,5,6,7,8};
byte sevenSegment[10][7] =
{
//a b c d e f g
{ 0,1,1,1,1,1,1,}, // = 0
{ 0,0,0,1,0,0,1 }, // = 1
{ 1,0,1,1,1,1,0 }, // = 2
{ 1,0,1,1,0,1,1 }, // = 3
{ 1,1,0,1,0,0,1 }, // = 4
{ 1,1,1,0,0,1,1 }, // = 5
{ 1,1,1,0,1,1,1 }, // = 6
{ 0,0,1,1,0,0,1 }, // = 7
{ 1,1,1,1,1,1,1 }, // = 8
{ 1,1,1,1,0,1,1 }, // = 9
};
void setup()
{
Serial.begin(9600);
pinMode(dotPin, OUTPUT); //pin 9
pinMode(digit0, OUTPUT); //pin 10
pinMode(digit1, OUTPUT); //pin 11
pinMode(digit2, OUTPUT); //pin 12
pinMode(digit3, OUTPUT); //pin 13
for(int i=0; i<7; i++)
{
pinMode(sevenSegmentPins[i], OUTPUT);
}
digitalWrite(dotPin, HIGH);
digitalWrite(digit0, HIGH);
digitalWrite(digit1, HIGH);
digitalWrite(digit2, HIGH);
digitalWrite(digit3, HIGH);
}
void segmentWrite(byte digit)
{
byte pin = 2;
for (byte i=0; i<7; ++i)
{
digitalWrite(pin, sevenSegment[digit][i]);
++pin;
}
}
void loop()
{
digitalWrite(digit1, LOW); //disable digit
digitalWrite(digit2, LOW); //disable digit
digitalWrite(digit3, LOW); //disable digit
digitalWrite(digit0, HIGH); //enable digit0
for (int i=0;i<7;i++)
{
Serial.print("Segment write:");
Serial.println(sevenSegment[digit11][i]);
delay(5);
}
digit11= digit11+1;
if(digit11>=7)
{
digit11=1;
}
delay(1000);
Serial.println(".....................");
}
try this code once