Sie sind auf Seite 1von 11

INFORME LATEX EJERCICIO 1 Y 2 NIVELACION

Juan David Solarte Moreno February 20, 2019

1 Introduccion´

En este informe se desr´ıbe los pasos para programar y disenar˜ dos prototipos con el uso de arduino una plataforma electronica´ de codigo´ abierto en hard- ware y software flexibles y faciles´ de usar, un keypad 4x4 y una lcd. El primero se trata de un programa que le permita al usuario ingresar tres numeros´ y cal- cular la suma, promedio y el numero´ menor; el otro prototipo es una cuenta bancaria que permitira´ al usuario consignaciones y retiros.

2 Objetivos

*

Simular dos codigos´

funcionales.

* Recordar los conceptos basicos´

de programacion.´

* Basar una simulacion´

digital en una real con la ayuda de arduino.

3

Procedimiento

Elementos usados

* Arduino uno

*lcd *protoboard *teclado 4x4 keypad

3.1 Ejercicio´ 1

Se pide simular en arduino un programa que le de la opcion´ al usuario de in- gresar tres numeros´ y a partir de esa informacion´ calcular la suma, el promedio

y el menor de los tres numeros,´ 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 # < Keypad.h > # <

Figure 1: Montaje hecho en fritzing. Fuente propia

3.1.2

# <Keypad.h> # <LiquidCrystal.h>

Codigo

//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 numeros.´

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 numeros.´

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 codigo´

Codigo para sumar y promedio de los tres numeros.´ suma=num1+num2+num3; promedio=suma/3;

de los tres numeros.´ suma=num1+num2+num3; promedio=suma/3; Figure 2: Esquema del teclado de membrana 4x4 para el

Figure 2: Esquema del teclado de membrana 4x4 para el ejercicio´ 1. Fuente propia

3.2 Ejercicio´ 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 opcion´ al usuario de ingresar tres numeros´ y a partir de esa informacion´ calcular la suma, el promedio y el menor de los tres numeros,´ 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

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 Codigo´

# 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 pinMode(row2, INPUT pinMode(row3, INPUT pinMode(row4, INPUT pinMode(col1, OUTPUT); digitalWrite(col1, HIGH); pinMode(col2, OUTPUT); digitalWrite(col2, HIGH);

PULLUP);

PULLUP);

PULLUP);

PULLUP);

6

Figure 4: Montaje hecho en fritzing. Fuente propia pinMode(col3, OUTPUT); digitalWrite(col3, HIGH); pinMode(col4, OUTPUT);

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 codigo´

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 excepcion´

del int x=2; este no tiene que resetear.

k,o; A excepcion´ del int x=2; este no tiene que resetear. Figure 5: Esquema del teclado

Figure 5: Esquema del teclado de membrana 4x4 para el ejercicio´ 2. Fuente propia

10

Todo el circuito se lo instalo en una caja de plastico´ al usuario

4

Conclusiones

para dar mayor comodidad

* En el simulador de programas autodesk tinkercad funciona de manera difer-

ente a la simulacion´

loop. * Hay diferentes librer´ıas en arduino, hay que elegir la mas actualizada.

real de arduino las variables se tuvieron que sacar el void

11