Code for driving segment display. To drive a common cathode the NOT operator ! must be removed from the front of the array in the highlighted part of the code.
//
make an array to save Sev Seg pin configuration of numbers
int
num_array[10][7] = { { 1,1,1,1,1,1,0
}, // 0
{ 0,1,1,0,0,0,0
}, // 1
{ 1,1,0,1,1,0,1
}, // 2
{ 1,1,1,1,0,0,1
}, // 3
{ 0,1,1,0,0,1,1
}, // 4
{ 1,0,1,1,0,1,1
}, // 5
{ 1,0,1,1,1,1,1
}, // 6
{ 1,1,1,0,0,0,0
}, // 7
{ 1,1,1,1,1,1,1
}, // 8
{ 1,1,1,0,0,1,1
}}; // 9
//function
header
void
Num_Write(int);
void
setup()
{
// set pin modes
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
}
void
loop()
{
for (int counter = 10; counter > 0;
--counter)
{
delay(1000);
Num_Write(counter-1);
}
delay(5000);
}
//
this functions writes values to the sev seg pins
void
Num_Write(int number)
{
int pin= 6;
for (int j=0; j < 7; j++) {
digitalWrite(pin, !num_array[number][j]);
//Inverted array value due to Common Anode display
pin++;
}
}
No comments:
Post a Comment