// 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; } } }