/* Project: 4-Digit 7-segment display module (common anode total 12 pins) Function: Stopwatch. You can see the number increases by one per second from 0 to 20 then it's off and restart the counting in 2 seconds. */ //************************************************************* //the pins of 4-digit 7-segment display attached to arduino board digital pins 2 - 13 respectively int a = 2; int b = 3; int c = 4; int d = 5; int e = 6; int f = 7; int g = 8; int DP = 9;// dot is not used in this project int D1 = 10; int D2 = 11; int D3 = 12; int D4 = 13; int dig1 = 0;//first digit begins from zero int dig2 = 0;//second digit begins from zero int dig3 = 0;//third digit begins from zero int dig4 = 0;//forth digit begins from zero int delayTime = 5;//delay set to 5 ms int i = 0; //declare the count value long timer = millis() + 1000;// if you put number less then 1000 the counting will be faster //************************************************************* void setup() { Serial.begin(9600);//initialize serial communications at 9600 bps //set all the pins of the LED display as output pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(D1, OUTPUT); pinMode(D2, OUTPUT); pinMode(D3, OUTPUT); pinMode(D4, OUTPUT); pinMode(DP, OUTPUT); } void loop() { //the counter while (i < 20) //stopwatch counts till 20.it is the max value here. you can change it. it is possible to get 10000 seconds or 2 hours 46 minutes 40 seconds maximum { if (millis() > timer) { i++; if (i > 19) { //19 is the next number below 20. change it together with max value delay(2000); //delay set for 2 seconds before the stopwatch do reset i = 0; } dig1 = i / 100; dig2 = (i - (dig1 * 100)) / 100; dig3 = (i - (dig1 * 100 + dig2 * 100)) / 10; dig4 = i % 10; timer = millis() + 1000; // if you put number less then 1000 the counting will be faster } digitalWrite(D4, HIGH); //Digit 4 pickNumber(dig4); delay(delayTime); digitalWrite(D4, LOW); digitalWrite(D3, HIGH); //Digit 3 pickNumber(dig3); delay(delayTime); digitalWrite(D3, LOW); digitalWrite(D2, HIGH); //Digit 2 pickNumber(dig2); delay(delayTime); digitalWrite(D2, LOW); digitalWrite(D1, HIGH); //Digit 1 pickNumber(dig1); delay(delayTime); digitalWrite(D1, LOW); } } // end loop //************************************************************* //The function is to control the 7-segment LED display to display numbers. Here x is the number to be displayed. It is an integer from 0 to 9 void pickNumber(int x) { switch (x) { case 1: number1(); break; case 2: number2(); break; case 3: number3(); break; case 4: number4(); break; case 5: number5(); break; case 6: number6(); break; case 7: number7(); break; case 8: number8(); break; case 9: number9(); break; default: number0(); break; } } //************************************************************* void clearLEDs() { digitalWrite(a, HIGH); digitalWrite(b, HIGH); digitalWrite(c, HIGH); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); digitalWrite(DP, HIGH); } void number1() //Number 1 { digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); } void number2() //Number 2 { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, HIGH); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, HIGH); digitalWrite(g, LOW); } void number3() //Number 3 { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, LOW); } void number4() //Number 4 { digitalWrite(a, HIGH); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, LOW); } void number5() //Number 5 { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, LOW); } void number6() //Number 6 { digitalWrite(a, LOW); digitalWrite(b, HIGH); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); } void number7() //Number 7 { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, HIGH); digitalWrite(e, HIGH); digitalWrite(f, HIGH); digitalWrite(g, HIGH); } void number8() //Number 8 { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); } void number9() //Number 9 { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, HIGH); digitalWrite(f, LOW); digitalWrite(g, LOW); } void number0() //Number 0 { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, HIGH); }