Documentos de Académico
Documentos de Profesional
Documentos de Cultura
// Configuración BCD 2
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;
// 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);
digitalWrite(a1, 1);
digitalWrite(a2, 1);
digitalWrite(a3, 1);
digitalWrite(a4, 1);
digitalWrite(b1, 1);
digitalWrite(b2, 1);
digitalWrite(b3, 1);
digitalWrite(b4, 1);
Serial.begin(9600);
}
void numero()
while (!Serial.available() > 0); // permanece bloqueado mientras no haya dato disponible para
recibir el primer dígito
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.println(n);
disp1(DigUnd);
disp2(DigDec);
else {
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
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.println(n1);
disp1(DigUnd);
disp2(DigDec);
else {
delay(2000);
void suma ()
r = n+n1;
Serial.println(r);
suma1=r/10;
dsm=r-(suma1*10);
disp1(dsm);
disp2(suma1);
delay(2000);
void resta ()
r = n-n1;
Serial.println(r);
resta1=r/10;
drst=r-(resta1*10);
disp1(drst);
disp2(resta1);
delay(2000);
void multiplicacion ()
r = n*n1;
Serial.println(r);
multiplicacion1=r/10;
dmtp=r-(multiplicacion1*10);
disp1(dmtp);
disp2(multiplicacion1);
delay(2000);
}
void division ()
r = n/n1;
Serial.println(r);
division1=r/10;
ddvs=r-(division1*10);
disp1(ddvs);
disp2(division1);
delay(2000);
void loop()
numero();
numero1();
suma();
resta();
multiplicacion();
division();
digitalWrite(a1, 1);
digitalWrite(a2, 1);
digitalWrite(a3, 1);
digitalWrite(a4, 1);
digitalWrite(b1, 1);
digitalWrite(b2, 1);
digitalWrite(b3, 1);
digitalWrite(b4, 1);
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
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