/* Example test program to display digits [3 4 5 6] on 4-digit, 7-segment display. This example code is in the public domain. Author: Marsianin245 */ // Define digital pin numbers connected to the 7-segment display int A = 9; int F = 8; int B = 7; int E = 6; int D = 5; int C = 4; int G = 3; int digit1= 2; int digit2= 10; int digit3= 11; int digit4= 12; int state = 0; int digit = 1; // next digit to diplay, from 1 to 4 // the setup function runs once when you press reset or power the board void setup() { // initialize digital pins as output pinMode(A, OUTPUT); pinMode(F, OUTPUT); pinMode(B, OUTPUT); pinMode(E, OUTPUT); pinMode(D, OUTPUT); pinMode(C, OUTPUT); pinMode(G, OUTPUT); pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT); pinMode(digit4, OUTPUT); digitalWrite(A, LOW); digitalWrite(F, LOW); digitalWrite(B, LOW); digitalWrite(E, LOW); digitalWrite(D, LOW); digitalWrite(C, LOW); digitalWrite(G, LOW); digitalWrite(digit1, HIGH); digitalWrite(digit2, HIGH); digitalWrite(digit3, HIGH); digitalWrite(digit4, HIGH); } void clear_all(){ digitalWrite(A, LOW); digitalWrite(F, LOW); digitalWrite(B, LOW); digitalWrite(E, LOW); digitalWrite(D, LOW); digitalWrite(C, LOW); digitalWrite(G, LOW); } // selects which digit to display, from 1 to 4 // position of the next digit, from right to left // digit is selected when cathode pin is LOW void select_digit(int n){ digitalWrite(digit1, HIGH); digitalWrite(digit2, HIGH); digitalWrite(digit3, HIGH); digitalWrite(digit4, HIGH); switch(n){ case 1: digitalWrite(digit1, LOW); break; case 2: digitalWrite(digit2, LOW); break; case 3: digitalWrite(digit3, LOW); break; case 4: digitalWrite(digit4, LOW); break; } } void test_segments(){ switch(state){ case 1: digitalWrite(A, HIGH); break; case 2: digitalWrite(B, HIGH); break; case 3: digitalWrite(C, HIGH); break; case 4: digitalWrite(D, HIGH); break; case 5: digitalWrite(E, HIGH); break; case 6: digitalWrite(F, HIGH); break; case 7: digitalWrite(G, HIGH); break; case 8: clear_all(); state =0; break; } state+=1; delay(1000); } // Table of segments to lit, to display digit from 0 to 9 int table_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 }; void dislay_digit(int n){ clear_all(); if(table_digits[n][0]) digitalWrite(A, HIGH); if(table_digits[n][1]) digitalWrite(B, HIGH); if(table_digits[n][2]) digitalWrite(C, HIGH); if(table_digits[n][3]) digitalWrite(D, HIGH); if(table_digits[n][4]) digitalWrite(E, HIGH); if(table_digits[n][5]) digitalWrite(F, HIGH); if(table_digits[n][6]) digitalWrite(G, HIGH); } int number[4]; void display_number(int *number){ select_digit(digit); dislay_digit(number[digit-1]); digit+=1; if(digit>4) { digit =1;} } // the loop function runs over and over again forever void loop() { number[3]=3; number[2]=4; number[1]=5; number[0]=6; display_number(number); delay(6); }