// Definición de pines
const int a = 4;
const int b = 16;
const int c = 17;
const int d = 5;
const int e = 18;
const int f = 19;
const int g = 21;
const int dig1 = 22; // Pin para el primer dígito
const int dig2 = 23; // Pin para el segundo dígito

// Contador
int counter = 0;

// Matriz para representar números en el display de 7 segmentos
const byte numToSegment[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 setup() {
    // Configuración de pines
    pinMode(a, OUTPUT);
    pinMode(b, OUTPUT);
    pinMode(c, OUTPUT);
    pinMode(d, OUTPUT);
    pinMode(e, OUTPUT);
    pinMode(f, OUTPUT);
    pinMode(g, OUTPUT);
    pinMode(dig1, OUTPUT);
    pinMode(dig2, OUTPUT);
    
    Serial.begin(115200);
}

void loop() {
    if (Serial.available()) {
        char command = Serial.read();

        if (command == '+') {
            counter++;
            if (counter > 99) {
                counter = 0; // Reiniciar si supera 99
            }
        } else if (command == '-') {
            counter--;
            if (counter < 0) {
                counter = 99; // Reiniciar si baja de 0
            }
        }
    }
  displayCounter(counter);
}

void displayCounter(int value) {
    int tens = value / 10;  // Dígito de las decenas
    int units = value % 10; // Dígito de las unidades

    // Mostrar el primer dígito (decenas)
    setSegment(tens);
    digitalWrite(dig1, LOW); // Activar el dígito 1
    delay(50); // Mantener encendido el dígito
    digitalWrite(dig1, HIGH); // Desactivar el dígito

    // Mostrar el segundo dígito (unidades)
    setSegment(units);
    digitalWrite(dig2, LOW); // Activar el dígito 2
    delay(50); // Mantener encendido el dígito
    digitalWrite(dig2, HIGH); // Desactivar el dígito
}

void setSegment(int num) {
    digitalWrite(a, numToSegment[num][0]);
    digitalWrite(b, numToSegment[num][1]);
    digitalWrite(c, numToSegment[num][2]);
    digitalWrite(d, numToSegment[num][3]);
    digitalWrite(e, numToSegment[num][4]);
    digitalWrite(f, numToSegment[num][5]);
    digitalWrite(g, numToSegment[num][6]);
}