Está en la página 1de 12

// Configuración decoder 1

int a1 = 4; //Bit 0 Decoder 1

int a2 = 5; //Bit 1 Decoder 1

int a3 = 6; //Bit 2 Decoder 1

int a4 = 7; //Bit 3 Decoder 1

// Configuración BCD 2

int b1 = 8; //Bit 0 Decoder 2

int b2 = 9; //Bit 1 Decoder 2

int b3 = 10; //Bit 2 Decoder 2

int b4 = 11; //Bit 3 Decoder 2

// Para mostrar el número de dos dígitos

int d1; // captura el primer dígito ingresado por Monitor serial

int d2; // captura el segundo dígito ingresado por Monitor serial

int decena; // almacena el ascii recibido, lo ‘convierte’ y asigna a las decenas

int unidad; // almacena el ascii recibido, lo ‘convierte’ y asigna a las unidades

int n;// número a mostrar, sumatoria de decenas y unidades

int DigDec; // guardará el dígito correspondiente a las decenas

int DigUnd; // guardará el dígito correspondiente a las unidades. // captura el segundo dígito
ingresado por Monitor serial // almacena el ascii recibido, lo ‘convierte’ y asigna a las unidades

int n1;

int r;// número a mostrar, sumatoria de decenas y unidades

// No es necesario DigUnd pues podría usarse la variable ‘unidad’ pero se coloca para tener cierta
lógica de variables en diferentes etapas del proceso

int suma1;

int dsm;

int resta1;

int drst;
int multiplicacion1;

int dmtp;

int division1;

int ddvs;

void setup() {

pinMode(4,OUTPUT);

pinMode(5,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(8,OUTPUT);

pinMode(9,OUTPUT);

pinMode(10,OUTPUT);

pinMode(11,OUTPUT);

//apaga los display

digitalWrite(a1, 1);

digitalWrite(a2, 1);

digitalWrite(a3, 1);

digitalWrite(a4, 1);

digitalWrite(b1, 1);

digitalWrite(b2, 1);

digitalWrite(b3, 1);

digitalWrite(b4, 1);

// Se abre el puerto serie y se establece la velocidad a 9600 bps

Serial.begin(9600);

}
void numero()

Serial.println ("Ingrese un numero: ");

while (!Serial.available() > 0); // permanece bloqueado mientras no haya dato disponible para
recibir el primer dígito

d1 = Serial.read(); // Asigna a d1 el primer valor

DigDec = d1-48; // restando 48 al ascii recibido se mostrará el valor del entero ingresado

decena = DigDec * 10; // convierte en decenas el valor entero ingresado como digito 1

while (!Serial.available() > 0); // bloqueado de nuevo mientras recibe el segundo dígito a ingresar
por el puerto serie

d2 = Serial.read();

unidad = d2 - 48;

DigUnd = unidad; //pudo usarse ‘unidad’ para no usar una nueva variable pero se creó una nueva
para estandarizar el proceso más adelante

// se suman las decenas y unidades para obtener el número ‘n’ a mostrar en display

n = decena + unidad;

if(n>=0 && n <=99){ // si el número está en este rango, ejecuta las sub rutinas siguientes.

Serial.print("El numero ingresado es: ");

Serial.println(n);

disp1(DigUnd);

disp2(DigDec);

else {

Serial.println("Dato ingresado no es valido. Siga las instrucciones.");

delay(2000);

void numero1()

{
Serial.println ("Ingrese otro numero: ");

while (!Serial.available() > 0); // permanece bloqueado mientras no haya dato disponible para
recibir el primer dígito

d1 = Serial.read(); // Asigna a d1 el primer valor

DigDec = d1-48; // restando 48 al ascii recibido se mostrará el valor del entero ingresado

decena = DigDec * 10; // convierte en decenas el valor entero ingresado como digito 1

while (!Serial.available() > 0); // bloqueado de nuevo mientras recibe el segundo dígito a ingresar
por el puerto serie

d2 = Serial.read();

unidad = d2 - 48;

DigUnd = unidad; //pudo usarse ‘unidad’ para no usar una nueva variable pero se creó una nueva
para estandarizar el proceso más adelante

// se suman las decenas y unidades para obtener el número ‘n’ a mostrar en display

n1 = decena + unidad;

if(n1>=0 && n1 <=99){ // si el número está en este rango, ejecuta las sub rutinas siguientes.

Serial.print("El numero ingresado es: ");

Serial.println(n1);

disp1(DigUnd);

disp2(DigDec);

else {

Serial.println("Dato ingresado no es valido. Siga las instrucciones.");

delay(2000);

void suma ()

Serial.print("El resultado de la suma es: ");

r = n+n1;
Serial.println(r);

suma1=r/10;

dsm=r-(suma1*10);

disp1(dsm);

disp2(suma1);

delay(2000);

void resta ()

Serial.print("El resultado de la resta es: ");

r = n-n1;

Serial.println(r);

resta1=r/10;

drst=r-(resta1*10);

disp1(drst);

disp2(resta1);

delay(2000);

void multiplicacion ()

Serial.print("El resultado de la multiplicacion es: ");

r = n*n1;

Serial.println(r);

multiplicacion1=r/10;

dmtp=r-(multiplicacion1*10);

disp1(dmtp);

disp2(multiplicacion1);

delay(2000);

}
void division ()

Serial.print("El resultado de la divicion es: ");

r = n/n1;

Serial.println(r);

division1=r/10;

ddvs=r-(division1*10);

disp1(ddvs);

disp2(division1);

delay(2000);

void loop()

//Imprimir en el Monitor Serial

numero();

numero1();

suma();

resta();

multiplicacion();

division();

// espera de 2 segundos antes de pedir otro número

//apaga los display

digitalWrite(a1, 1);

digitalWrite(a2, 1);

digitalWrite(a3, 1);

digitalWrite(a4, 1);

digitalWrite(b1, 1);

digitalWrite(b2, 1);

digitalWrite(b3, 1);
digitalWrite(b4, 1);

// declaración de funciones para mostrar en cada display

void disp1(int DigDec)

if(DigDec == 0)//0000

digitalWrite(a1, LOW);

digitalWrite(a2, LOW);

digitalWrite(a3, LOW);

digitalWrite(a4, LOW);

if(DigDec == 1)//0001

digitalWrite(a1, HIGH);

digitalWrite(a2, LOW);

digitalWrite(a3, LOW);

digitalWrite(a4, LOW);

if(DigDec == 2)//0010

digitalWrite(a1, LOW);//0

digitalWrite(a2, HIGH);//1

digitalWrite(a3, LOW);//0

digitalWrite(a4, LOW);//0

if(DigDec == 3)//0011

{
digitalWrite(a1, HIGH);//1

digitalWrite(a2, HIGH);//1

digitalWrite(a3, LOW);//0

digitalWrite(a4, LOW);//0

if(DigDec == 4)//0100

digitalWrite(a1, LOW);//0

digitalWrite(a2, LOW);//0

digitalWrite(a3, HIGH);//1

digitalWrite(a4, LOW);//0

if(DigDec == 5)//0101

digitalWrite(a1, HIGH);//1

digitalWrite(a2, LOW);//0

digitalWrite(a3, HIGH);//1

digitalWrite(a4, LOW);//0

if(DigDec == 6)//0110

digitalWrite(a1, LOW);//0

digitalWrite(a2, HIGH);//1

digitalWrite(a3, HIGH);//1

digitalWrite(a4, LOW);//0

if(DigDec == 7) //0111

digitalWrite(a1, HIGH);//1
digitalWrite(a2, HIGH);//1

digitalWrite(a3, HIGH);//1

digitalWrite(a4, LOW);//0

if(DigDec == 8) //1000

digitalWrite(a1, LOW);//0

digitalWrite(a2, LOW);//0

digitalWrite(a3, LOW);//0

digitalWrite(a4, HIGH);//1

if(DigDec == 9)//1001

digitalWrite(a1, HIGH);//1

digitalWrite(a2, LOW);//0

digitalWrite(a3, LOW);//0

digitalWrite(a4, HIGH);//1

void disp2(int DigUnd)

if(DigUnd == 0)//0000

digitalWrite(b1, LOW);//

digitalWrite(b2, LOW);//0

digitalWrite(b3, LOW);//0

digitalWrite(b4, LOW);//0

}
if(DigUnd == 1)//0001

digitalWrite(b1, HIGH);//1

digitalWrite(b2, LOW);//0

digitalWrite(b3, LOW);//0

digitalWrite(b4, LOW);//0

if(DigUnd == 2)//0010

digitalWrite(b1, LOW);//0

digitalWrite(b2, HIGH);//1

digitalWrite(b3, LOW);//0

digitalWrite(b4, LOW);//0

if(DigUnd == 3)//0011

digitalWrite(b1, HIGH);//1

digitalWrite(b2, HIGH);//1

digitalWrite(b3, LOW);//0

digitalWrite(b4, LOW);//0

if(DigUnd == 4)//0100

digitalWrite(b1, LOW);//0

digitalWrite(b2, LOW);//0

digitalWrite(b3, HIGH);//1

digitalWrite(b4, LOW);//0

if(DigUnd == 5) //0101
{

digitalWrite(b1, HIGH);//1

digitalWrite(b2, LOW);//0

digitalWrite(b3, HIGH);//1

digitalWrite(b4, LOW);//0

if(DigUnd == 6) //0110

digitalWrite(b1, LOW);//0

digitalWrite(b2, HIGH);//1

digitalWrite(b3, HIGH);//1

digitalWrite(b4, LOW);//0

if(DigUnd == 7) //0111

digitalWrite(b1, HIGH);//1

digitalWrite(b2, HIGH);//1

digitalWrite(b3, HIGH);//1

digitalWrite(b4, LOW);//0

if(DigUnd == 8) //1000

digitalWrite(b1, LOW);//0

digitalWrite(b2, LOW);//0

digitalWrite(b3, LOW);//0

digitalWrite(b4, HIGH);//1

if(DigUnd == 9)//1001

{
digitalWrite(b1, HIGH);//1

digitalWrite(b2, LOW);//0

digitalWrite(b3, LOW);//0

digitalWrite(b4, HIGH);//1

También podría gustarte