// segment cathodes
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
// digit anodes (driven by PNP transistors)
int one = 9;
int ten = 10;
int hund = 11;
int thou = 12;
int tetho = 13;
int hutho = A1;
// <ignore these names>
unsigned long num = 0;
unsigned int cislo = 0;
unsigned int cislodesat = 0;
unsigned int cislosto = 0;
unsigned int cislotisic = 0;
unsigned int cislodesattisic = 0;
unsigned int cislostotisic = 0;
// </ignore these names>
unsigned long myTime = 0;
int position[6]; // converted value
int digit_pin[] {9, 10, 11, 12, 13, 14}; // Digit pins
//--------------------------------------------------------------
void setup() {
for (int x = 2; x < 15; x++) { // Define mode pins as OUTUT
pinMode(x, OUTPUT);
}
// digit anodes are driven by PNP transistors // HIGH all Pins
for (int y = 2; y < 15; y++) {
digitalWrite(y, HIGH);
}
}
//-------------------------------------------------------------
void loop() {
if (millis() - myTime >= 400) { // Time to increment num
num++; // Increment num
myTime = millis(); // Refresh myTime
cislo = num % 10; // Module num calculet unit
converter(0, cislo ); // Call convert to convert 7 seg pins
cislodesat = (num / 10) % 10; // module num/10 ten
converter(1, cislodesat ); // Call convert to convert 7 seg pins
cislosto = (num / 100) % 10; // module num/10 hundred
converter(2, cislosto ); // Call convert to convert 7 seg pins
cislotisic = (num / 1000) % 10; // module num/10 thousand
converter(3, cislotisic ); // Call convert to convert 7 seg pins
cislodesattisic = (num / 10000) % 10; // module num/10 million
converter(4, cislodesattisic ); // Call convert to convert 7 seg pins
cislostotisic = (num / 100000) % 10; // module num/10 Billion
converter(5, cislostotisic ); // Call convert to convert 7 seg pins
}
for (int k = 0; k < 6; k++) { // Turn on/off 7seg pins by convert
int p = 2;
for (int t = 6; t >= 0; t--) { // turn on/off pins (2 to 8)
digitalWrite(p, bitRead(position[k], t));
p++; // increment pin number
}
digitalWrite(digit_pin[k], !LOW); // define digit pin turn LOW
for (int m = 9; m < 15; m++) {
digitalWrite(m, !HIGH); // Turn all pin HIGH
}
}
}
//------------------------------------------------------------------
void converter(int j, int newNum ) {
// Serial.print(newNum); Serial.print(" ");
if (newNum == 0) position[j] = 0x01; // 00 = 01
if (newNum == 1) position[j] = 0x4F; // 01 = 4F
if (newNum == 2) position[j] = 0x12; // 02 = 12
if (newNum == 3) position[j] = 0x06; // 03 = 06
if (newNum == 4) position[j] = 0x4C; // 04 = 4C
if (newNum == 5) position[j] = 0x24; // 05 = 24
if (newNum == 6) position[j] = 0x20; // 06 = 20
if (newNum == 7) position[j] = 0x0F; // 07 = 0F
if (newNum == 8) position[j] = 0x00; // 08 = 00
if (newNum == 9) position[j] = 0x04; // 09 = 04
// Serial.print(position[j],HEX); Serial.println(" ");
}