int numeros[10][7] = { // Para Anodo Comun
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0}}; // 9
int Segmentos[] = {2, 3, 4, 5, 6, 7, 8};
int Posiciones[4] = {9, 10, 11, 12};
byte VariableA;
byte VariableB;
byte Centenas;
byte Decenas;
byte Unidades;
void setup() {
for (int i = 0; i < 7; i++) {
pinMode(Segmentos[i], OUTPUT);
}
for (int i = 0; i < 4; i++) {
pinMode(Posiciones[i], OUTPUT);
}
Serial.begin(9600);
}
void loop() {
Serial.println("Presiona cualquier tecla para iniciar un nuevo cálculo.");
Serial.end();
Serial.begin(9600);
while (Serial.available() == 0) {}
VariableA = PedirNumero();
VariableB = PedirNumero();
int Resultado = SumarNumero(VariableA, VariableB);
Centenas = Resultado / 100 ;
Resultado = Resultado - Centenas * 100 ;
Decenas = Resultado / 10;
Resultado = Resultado - Decenas * 10;
Unidades = Resultado;
MostrarNumero(Centenas, Decenas, Unidades);
Serial.end();
Serial.begin(9600);
while (Serial.available() == 0) {
MostrarNumero(Centenas, Decenas, Unidades);
}
}
int PedirNumero() {
int Numero = -100;
Serial.println("ingresa un numero entre 0 y 100:");
while (Numero < 0 || Numero > 100) {
Serial.end();
Serial.begin(9600);
while (Serial.available() == 0) {}
Numero = Serial.parseInt();
Serial.print("Número ingresado: ");
Serial.println(Numero);
if (Numero < 0 || Numero > 100) {
Serial.println("ingrese un número entre 0 y 100.");
}
}
return Numero;
}
int SumarNumero(byte A, byte B) {
return A + B;
}
void MostrarNumero(byte centenas, byte decenas, byte unidades) {
for (int i = 0; i < 4; i++) {
digitalWrite(Posiciones[i], LOW);
}
for (int i = 0; i < 7; i++) {
digitalWrite(Segmentos[i], numeros[centenas][i]);
}
digitalWrite(Posiciones[2], HIGH);
delay(50);
for (int i = 0; i < 4; i++) {
digitalWrite(Posiciones[i], LOW);
}
for (int i = 0; i < 7; i++) {
digitalWrite(Segmentos[i], numeros[decenas][i]);
}
digitalWrite(Posiciones[1], HIGH);
delay(50);
for (int i = 0; i < 4; i++) {
digitalWrite(Posiciones[i], LOW);
}
for (int i = 0; i < 7; i++) {
digitalWrite(Segmentos[i], numeros[unidades][i]);
}
digitalWrite(Posiciones[0], HIGH);
delay(50);
}