Sie sind auf Seite 1von 11

INFORME LATEX EJERCICIO 1 Y 2

NIVELACION
Juan David Solarte Moreno
February 20, 2019

1 Introducción
En este informe se desrı́be los pasos para programar y diseñar dos prototipos
con el uso de arduino una plataforma electrónica de código abierto en hard-
ware y software flexibles y fáciles de usar, un keypad 4x4 y una lcd. El primero
se trata de un programa que le permita al usuario ingresar tres números y cal-
cular la suma, promedio y el número menor; el otro prototipo es una cuenta
bancaria que permitirá al usuario consignaciones y retiros.

2 Objetivos
* Simular dos códigos funcionales.
* Recordar los conceptos básicos de programación.
* Basar una simulación digital en una real con la ayuda de arduino.

3 Procedimiento
Elementos usados
* Arduino uno
*lcd
*protoboard
*teclado 4x4 keypad

3.1 Ejercició 1
Se pide simular en arduino un programa que le de la opción al usuario de in-
gresar tres números y a partir de esa información calcular la suma, el promedio
y el menor de los tres números, utilizando un teclado de membrana 4x4 y una
lcd.

3.1.1 Montaje
Para que el programa arduino reconozca el teclado de membrana se descargo
la librerı́a del keypad 4x4.

1
Figure 1: Montaje hecho en fritzing. Fuente propia

3.1.2 Codigo
# <Keypad.h>
# <LiquidCrystal.h>

//se conecta la lcd a los puestos 8,9,10,11,12,13.

LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

//Se genera la matriz cuatro filas y cuatro columnas.

const byte ROWS = 4;


const byte COLS = 4;
char keys[ROWS][COLS] =
{’1’,’2’,’3’,’a’},
{’4’,’5’,’6’,’b’},
{’7’,’8’,’9’,’c’},
{’*’,’0’,’#’,’d’}
};

//se conecta la lcd a los pines 0,1,2,3,4,5,6,7.

byte rowPins[ROWS] = {7,6,5,4};

2
byte colPins[COLS] = {3,2,1,0};
Keypad keypad=Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup(){
lcd.begin(16,2);
lcd.print(”Ingrese”);
lcd.setCursor(0,1);
lcd.print(”3 numeros:”);
}

//las variables son globales

int n=0;
float num1,num2,num3,suma,promedio,menor;
void loop()

//condicionales para generar e imprimir los números.

char key = keypad.getKey();


if (key==’1’){n=1;lcd.print(n);}
if (key==’2’){n=2;lcd.print(n);}
if (key==’3’){n=3;lcd.print(n);}
if (key==’4’){n=4;lcd.print(n);}
if (key==’5’){n=5;lcd.print(n);}
if (key==’6’){n=6;lcd.print(n);}
if (key==’7’){n=7;lcd.print(n);}
if (key==’8’){n=8;lcd.print(n);}
if (key==’9’){n=9;lcd.print(n);}
if (key==’0’){n=0;lcd.print(n);}
if (key== ’a’)
{
num1=n; lcd.clear();
lcd.print(”numero 1:”);
lcd.setCursor(12,0);
lcd.print(num1);
}
if (key== ’b’) { num2=n;
lcd.clear();
lcd.print(”numero 2:”);
lcd.setCursor(13,0);
lcd.print(num2);
}
if (key== ’c’)
{ num3=n;
lcd.clear();
lcd.print(”numero 3:”);
lcd.setCursor(13,0);
lcd.print(num3);
}
if (key== ’*’)

3
//Operaciones suma, promedio y el menor de los tres números.

suma=num1+num2+num3;
promedio=suma/3;
if(num1 < num2 && num1 < num3)
{ menor=num1; } else
{
if(num1 < num2 && num1 < num3)
{
menor=num2;
}
else
{
menor=num3;
}
}
lcd. clear ();
lcd.print(”suma:”);
lcd.setCursor(0,1);
lcd.print(num1);
lcd.setCursor(3,1);
lcd.print(”+”);
lcd.setCursor(5,1);
lcd.print(num2);
lcd.setCursor(9,1);
lcd.print(”+”);
lcd.setCursor(10,1);
lcd.print(num3);
lcd.setCursor(13,0);
lcd.print(suma);
delay (5000);
lcd. clear ();
lcd.print(”promedio:”);
lcd.setCursor(13,0);
lcd.print(promedio);
delay (2000);
lcd. clear ();
lcd.print(”Menor:”);
lcd.setCursor(13,0);
lcd.print(menor);
if(key==’#’) { lcd.clear(); lcd.print(”Ingrese n:”);
num1=num2=num3=0;
}
if(key==’d’)
{
lcd. clear ();
lcd.print(”numeros:”);
lcd.setCursor(0,1);
lcd.print(num1);

4
lcd.setCursor(3,1);
lcd.print(” ”);
lcd.setCursor(5,1);
lcd.print(num2);
lcd.setCursor(9,1);
lcd.print(” ”);
lcd.setCursor(10,1);
lcd.print(num3);
}
}
//fin del código

Codigo para sumar y promedio de los tres números.


suma=num1+num2+num3; promedio=suma/3;

Figure 2: Esquema del teclado de membrana 4x4 para el ejercició 1. Fuente


propia

3.2 Ejercició 2
Para que el programa arduino reconozca el teclado de membrana se descargo
la librerı́a del keypad 4x4.
Se pide simular en arduino un programa que le de la opción al usuario
de ingresar tres números y a partir de esa información calcular la suma, el
promedio y el menor de los tres números, utilizando un teclado de membrana
4x4 y una lcd.

5
Figure 3: Panel del mando. Fuente propia

3.2.1 Montaje
Se utiliza un teclado de menbrana 4x4 keypad, una pantalla lcd y arduino uno.

3.2.2 Código
# include <Keypad.h>
# include <LiquidCrystal.h>
# define row1 7
# define row2 6
# define row3 5
# define row4 4
# define col1 3
# define col2 2
# define col3 1
# define col4 0
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
void setup(){
pinMode(row1, INPUT PULLUP);
pinMode(row2, INPUT PULLUP);
pinMode(row3, INPUT PULLUP);
pinMode(row4, INPUT PULLUP);
pinMode(col1, OUTPUT);
digitalWrite(col1, HIGH);
pinMode(col2, OUTPUT);
digitalWrite(col2, HIGH);

6
Figure 4: Montaje hecho en fritzing. Fuente propia

pinMode(col3, OUTPUT);
digitalWrite(col3, HIGH);
pinMode(col4, OUTPUT);
digitalWrite(col4, HIGH);
lcd.begin(16,2);
lcd.print(”CUENTA BANCARIA”);
lcd.setCursor(1,1);
lcd.print(”A.int B.out”);
}
char scan keyboard()
{
static int rows[] = row1, row2, row3, row4;
static int cols[] = col1, col2, col3, col4;
static char teclas[4][4] = {
{ ’1’, ’2’, ’3’, ’A’ },
{ ’4’, ’5’, ’6’, ’B’ },
{ ’7’, ’8’, ’9’, ’C’ },
{ ’*’, ’0’, ’#’, ’D’ }
};
int row, col;
int result = ’ 0’;
for(col = 0; col < 4 && result == ’
0’; ++col){
digitalWrite(cols[col], LOW);
for (row = 3; row >= 0; –row){
if (digitalRead(rows[row]) == LOW){
result = teclas[row][col];
break;

7
}
}
digitalWrite(cols[col], HIGH);
}
return result;
}
float acum=0;
float in,out;
char key1,key2,key3,key4;
int k,o;
void loop()
{ int x=2;
if (key1=scan keyboard()==’A’) {
x=1;
lcd.clear ();
lcd.print(”VALOR INGRESO:”);
do { switch(key3=scan keyboard())
{
case ’1’: in=10000;k=1;key3=’
0’;break;
case ’2’: in=20000;;k=1;key3=’
0’;break;
case ’3’: in=30000;k=1;key3=’
0’;break;
case ’4’: in=40000;k=1;key3=’
0’;break;
case ’5’: in=50000;k=1;key3=’
0’;break;
case ’6’: in=60000;k=1;key3=’
0’;break;
case ’7’: in=70000;k=1;key3=’
0’;break;
case ’8’: in=80000;k=1;key3=’
0’;break;
case ’9’: in=90000;k=1;key3=’
0’;break;
}
}while (k!=1);
}
if (key2=scan keyboard()==’B’)
{
x=0;
if (acum==0)
{
lcd.clear ();
lcd.print(”saldo”);
lcd.setCursor(0,1);
lcd.print(”Insuficiente:”);
} else lcd.clear (); lcd.print(”VALOR RETIRO:”);
do {

8
switch(key4=scan keyboard())
{
case ’1’: out=10000;o=1;key4=’\0’;break;
case ’2’: out=20000;;o=1;key4=’\0’;break;
case ’3’: out=30000;o=1;key4=’\0’;break;
case ’4’: out=40000;o=1;key4=’\0’;break;
case ’5’: out=50000;o=1;key4=’\0’;break;
case ’6’: out=60000;o=1;key4=’\0’;break;
case ’7’: out=70000;o=1;key4=’
textbackslash0’;break;
case ’8’: out=80000;o=1;key4=’
textbackslash0’;break;
case ’9’: out=90000;o=1;key4=’\0’;break; }while (o!=1);
}
}
if (x==1)
{ acum=acum+in;
lcd.clear ();
lcd.print(”VALOR INGRESADO:”);
lcd.setCursor(0,1);
lcd.print(in);
delay(1000);
lcd. clear ();
lcd.print(”NUEVO SALDO:”);
lcd.setCursor(0,1);
lcd.print(acum);
in=0;////////////////////
k=2;
}
if (x==0)
{
if(acum¿=out)
{
acum=acum-out;
lcd. clear ();
lcd.print(”VALOR RETIRADO:”);
lcd.setCursor(0,1);
lcd.print(out);
delay(1000);
lcd. clear ();
lcd.print(”NUEVO SALDO:”);
lcd.setCursor(0,1);
lcd.print(acum);
out=0;//////////////////////
o=2;}
else
{
lcd.clear();
lcd.print(”saldo”);
lcd.setCursor(0,1);

9
lcd.print(”Insuficiente:”);
delay(2000);
lcd.clear();
lcd.print(”Saldo:”);
lcd.print(acum);
}
}
if (scan keyboard()==’C’)
{
lcd.clear();
lcd.print(”Saldo:”);
lcd.print(acum);
}
if (scan keyboard()==’D’)
{
lcd.clear();
lcd.print(”continue operacion”);
lcd.setCursor(1,1);
lcd.print(”A.depo B.retiro”);
}
} //fin del código

Estas variables se las saco del void loop para convertirlas en variables globales.
float acum=0;
float in,out;
char key1,key2,key3,key4;
int k,o;
A excepción del int x=2; este no tiene que resetear.

Figure 5: Esquema del teclado de membrana 4x4 para el ejercició 2. Fuente


propia

10
Todo el circuito se lo instalo en una caja de plástico para dar mayor comodidad
al usuario

4 Conclusiones
* En el simulador de programas autodesk tinkercad funciona de manera difer-
ente a la simulación real de arduino las variables se tuvieron que sacar el void
loop.
* Hay diferentes librerı́as en arduino, hay que elegir la mas actualizada.

11

Das könnte Ihnen auch gefallen