#define btnA 13
#define btnB 12
#define btnC 14
#define btnD 27
int del=50, n=0, chr=99;
const int segmentPinsNum[] = {19,21,17,5,18,22,23};
const int digitPins[] = {16,4,0};
const byte chrs[5][7] = { // A-d
{0, 0, 0, 0, 0, 0, 0}, // cero
{1, 1, 1, 0, 1, 1, 1}, // A
{0, 0, 1, 1, 1, 1, 1}, // b
{0, 0, 0, 1, 1, 0, 1}, // c
{0, 1, 1, 1, 1, 0, 1} // d
};
const byte digits[10][7] = { // 0-9
{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 setup() {
pinMode(btnA, INPUT);
pinMode(btnB, INPUT);
pinMode(btnC, INPUT);
pinMode(btnD, INPUT);
for (int i = 0; i < 7; i++) {
pinMode(segmentPinsNum[i], OUTPUT);
}
for (int i = 0; i < 3; i++) {
pinMode(digitPins[i], OUTPUT);
}
}
void loop() {
if(digitalRead(btnA)){
while(digitalRead(btnA)){}
chr=1;n++;
}
if(digitalRead(btnB)){
while(digitalRead(btnB)){}
chr=2;n++;
}
if(digitalRead(btnC)){
while(digitalRead(btnC)){}
chr=3;n++;
}
if(digitalRead(btnD)){
while(digitalRead(btnD)){}
chr=4;n++;
}
if(n>99){n=0;}
if(n==0){chr=0;}
while (!(digitalRead(btnA) || digitalRead(btnB) || digitalRead(btnC)|| digitalRead(btnD))) {
displayNumber(n);
}
}
void displayNumber(int number) {
int tens = number / 10;
int ones = number % 10;
// Display tens digit
displayDigit(tens);
digitalWrite(digitPins[0], LOW);
delay(del);
digitalWrite(digitPins[0], HIGH);
// Display ones digit
displayDigit(ones);
digitalWrite(digitPins[1], LOW);
delay(del);
digitalWrite(digitPins[1], HIGH);
// Display letter digit
displayChr(chr);
digitalWrite(digitPins[2], LOW);
delay(del);
digitalWrite(digitPins[2], HIGH);}
void displayDigit(int digit) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPinsNum[i], digits[digit][i]);
}
}
void displayChr(int digit) {
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPinsNum[i], chrs[digit][i]);
}
}