byte segValue[10][7] = {
{0,0,0,0,0,0,1}, // 0
{1,0,0,1,1,1,1}, // 1
{0,0,1,0,0,1,0}, // 2
{0,0,0,0,1,1,0}, // 3
{1,0,0,1,1,0,0}, // 4
{0,1,0,0,1,0,0}, // 5
{0,1,0,0,0,0,0}, // 6
{0,0,0,1,1,1,1}, // 7
{0,0,0,0,0,0,0}, // 8
{0,0,0,0,1,0,0} // 9
};
byte segPin[7] = {2, 3, 4, 5, 6, 7, 8};
byte digitPin[3] = {10, 11, 12};
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(segPin[i], OUTPUT);
}
for (int i = 0; i < 7; i++) {
digitalWrite(segPin[i], HIGH);
}
for (int i = 0; i < 3; i++) {
pinMode(digitPin[i], OUTPUT);
digitalWrite(digitPin[i], LOW);
}
}
void loop() {
displaySingleDigit(9, 2);
delay(1000);
displayDoubleDigit(9, 9);
delay(1000);
displayTripleDigit(9, 9, 9);
delay(1000);
}
void displaySingleDigit(int num1, int pos1) {
for (int i = 0; i < 500; i++) {
segOutput(pos1, num1);
delay(5);
}
}
void displayDoubleDigit(int num1, int num2) {
for (int i = 0; i < 500; i++) {
segOutput(1, num1);
delay(5);
segOutput(2, num2);
delay(5);
}
}
void displayTripleDigit(int num1, int num2, int num3) {
for (int i = 0; i < 500; i++) {
segOutput(0, num1);
delay(5);
segOutput(1, num2);
delay(5);
segOutput(2, num3);
delay(5);
}
}
void segClear() {
for (int i = 0; i < 7; i++) {
digitalWrite(segPin[i], HIGH);
}
}
void segOutput(int d, int Number) {
segClear();
digitalWrite(digitPin[d], HIGH);
for (int i = 0; i < 7; i++) {
digitalWrite(segPin[i], segValue[Number][i]);
}
delay(5);
digitalWrite(digitPin[d], LOW);
}