// 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]);
}