// 7-segment display, harvested from old darts board, "reverse engineered".
// Common-anode type => LOW (or 0) lights up the LED.
// So to clear it up, set all segments to HIGH (or 1).
// 4 digits (well, 3 digits + some :)
// Look from above, decimal points are on top!
// a dp b
// _____|__|__|__|__|__|_____
// | |
// | |
// |_____ __ __ __ __ __ _____|
// | | | | | |
//
// Define pins
// a - g: individual segment
// dp: "decimal point"
// dx: select digit pin
int a = 8;
int b = 7;
int c = 6;
int d = 5;
int e = 4;
int f = 3;
int g = 2;
int dp = 1;
int d1 = 9;
int d2 = 10;
int d3 = 11;
int d4 = 12;
int seg[] {a, b, c, d, e, f, g, dp}; // segment pins
byte chars[12][9] {
{'0',0,0,0,0,0,0,1,1},//0
{'1',1,0,0,1,1,1,1,1},//1
{'2',0,0,1,0,0,1,0,1},//2
{'3',0,0,0,0,1,1,0,1},//3
{'4',1,0,0,1,1,0,0,1},//4
{'5',0,1,0,0,1,0,0,1},//5
{'6',0,1,0,0,0,0,0,1},//6
{'7',0,0,0,1,1,1,1,1},//7
{'8',0,0,0,0,0,0,0,1},//8
{'9',0,0,0,0,1,0,0,1},//9
{'h',1,1,0,1,0,0,0,1},//h
{'t',1,1,1,0,0,0,0,1},//t
};
void setup()
{
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c ,OUTPUT);
pinMode(d ,OUTPUT);
pinMode(e ,OUTPUT);
pinMode(f ,OUTPUT);
pinMode(g ,OUTPUT);
pinMode(dp, OUTPUT);
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
}
void clearDisplay()
{
// currently only deal with the fisrt (right most) digit
digitalWrite(d1, 1);
digitalWrite(d2, 1);
// clear display (turn off all LEDs)
for (int i=0; i<sizeof(seg); i++)
{
digitalWrite(seg[i], 1);
}
}
void oneDigit()
{
//clearDisplay(); // reset the display (clear it up)
digitalWrite(d1, 1); // select first digit
// print all characters from chars array with 1 second pause
for (int i=0; i<12; i++) // i=0 .. 12
{
for (int j=0; j<8; j++) //j=0..7
{
digitalWrite(seg[j], chars[i][j+1]);
};
delay(500); // wait for 1 second
};
}
void twoDigits()
{
//clearDisplay(); // reset the display (clear it up)
digitalWrite(d1, 1); // select first digit
// print all characters from chars array with 1 second pause
for (int i=0; i<12; i++) // i=0 .. 12
{
for (int j=0; j<8; j++) //j=0..7
{
digitalWrite(seg[j], chars[i][j+1]);
};
delay(500); // wait for 1 second
};
digitalWrite(d2, 1); // select first digit
// print all characters from chars array with 1 second pause
for (int i=0; i<12; i++) // i=0 .. 12
{
for (int j=0; j<8; j++) //j=0..7
{
digitalWrite(seg[j], chars[i][j+1]);
};
delay(500); // wait for 1 second
}
}
void loop()
{
//oneDigit();
twoDigits();
// =========== OLD CODE BELOW ===========
// digitalWrite(a, 0);
// digitalWrite(b, 0);
// //...
// digitalWrite(dp, 1);
// digitalWrite(pina, LOW);
// digitalWrite(pinb, LOW);
// digitalWrite(pinc, LOW);
// digitalWrite(pind, LOW);
// digitalWrite(pine, LOW);
// digitalWrite(pinf, LOW);
// digitalWrite(ping, HIGH);
// delay(1000);
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
sevseg1:A
sevseg1:B
sevseg1:C
sevseg1:D
sevseg1:E
sevseg1:F
sevseg1:G
sevseg1:DP
sevseg1:DIG1
sevseg1:DIG2
sevseg1:DIG3
sevseg1:DIG4
sevseg1:COM
sevseg1:CLN