const int segA = 13;
const int segB = 12;
const int segC = 14;
const int segD = 27;
const int segE = 26;
const int segF = 25;
const int segG = 33;
const int segDP = 32;
// Pre-defining the sements which light up depending on the number it wants to display.
int digits[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, 1, 0, 1, 1}}; // 9
//Setting pins to output.
void setup() {
pinMode(segA, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segE, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(segDP, OUTPUT);
}
// Checks if the number is positive or negative to display the correct symbol.
void loop() {
int num = -123; // example number to display
int digit = 0;
if (num < 0) {
digitalWrite(segG, HIGH);
num = -num;
}
while (digit < 3) {
int n = num % 10;
int *seg = digits[n];
digitalWrite(segA, seg[0]);
digitalWrite(segB, seg[1]);
digitalWrite(segC, seg[2]);
digitalWrite(segD, seg[3]);
digitalWrite(segE, seg[4]);
digitalWrite(segF, seg[5]);
if (digit == 0 && num < 100) {
digitalWrite(segG, LOW);
} else {
digitalWrite(segG, seg[6]);
}
delay(5);
digitalWrite(segA, LOW);
digitalWrite(segB, LOW);
digitalWrite(segC, LOW);
digitalWrite(segD, LOW);
digitalWrite(segE, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
num /= 10;
digit++;
if (num == 0 && digit < 3) {
if (digit == 1 && num < 0) {
digitalWrite(segG, HIGH);
}
delay(5);
}
}
}