// Code for 3 7-segment displays (approx. 1 second timer)
// Are there better ways to do this? Yes.
int seg[] = {6, 7, 8, 9, 10, 11, 12};
int sel[] = {3, 4, 5};
int a = 0;
int b = 0;
int c = 0;
int n = 0;
void setup() {
pinMode(seg[0], OUTPUT);
pinMode(seg[1], OUTPUT);
pinMode(seg[2], OUTPUT);
pinMode(seg[3], OUTPUT);
pinMode(seg[4], OUTPUT);
pinMode(seg[5], OUTPUT);
pinMode(seg[6], OUTPUT);
pinMode(sel[0], OUTPUT);
pinMode(sel[1], OUTPUT);
pinMode(sel[2], OUTPUT);
}
void writeDigit(int pos, int val) {
digitalWrite(sel[0], (pos==0)?HIGH:LOW);
digitalWrite(sel[1], (pos==1)?HIGH:LOW);
digitalWrite(sel[2], (pos==2)?HIGH:LOW);
digitalWrite(seg[0], (val==0||val==2||val==6||val==8)?LOW:HIGH);
digitalWrite(seg[1], (val==1||val==4||val==7||val==9)?HIGH:LOW);
digitalWrite(seg[2], (val==2)?HIGH:LOW);
digitalWrite(seg[3], (val==5||val==6)?HIGH:LOW);
digitalWrite(seg[4], (val==1||val==4)?HIGH:LOW);
digitalWrite(seg[5], (val==1||val==2||val==3||val==7)?HIGH:LOW);
digitalWrite(seg[6], (val==0||val==1||val==7)?HIGH:LOW);
}
void loop() {
writeDigit(0, a);
delay(3);
writeDigit(1, b);
delay(3);
writeDigit(2, c);
delay(4);
n++;
if (n == 100) {
n = 0;
c++;
if (c == 10) { c = 0; b++; }
if (b == 10) { b = 0; a++; }
if (a == 10) { a = 0; }
}
}