Calculando cuantos dias tiene vivido con Arduino (4 / 4 paso)

Paso 4: Código

El siguiente código fue utilizado con la placa Arduino Uno e incluye algunos comentarios para entender mejor su funcionamiento. Recomiendo descargues el código y que lo analices desde el programa. Recuerda descargar las librerias necesarias para utilizar el Teclado Matrical 4 x 4 y el Modulo Serial I2C. descargar código

Libreria al final de las viñetas:

 ///////////////////¿Cuantos días has vivido?<br>/* Programa para calcular los dias transcurridos de una fecha determinada a otra. Materiales: -Teclado Matrical 4x4 -Display LCD 16x2 con Modulo Serial I2C -Placa Arduino Aunque este código puede ser reducido, en este caso esta escrito de tal forma que se puedan identificar facilmente los pasos que se siguieron para llegar al resultado final. La formula que se utilizó para determinar la cantidad de días transcurridos toma en cuenta los años bisietos y otras variantes. Recuerda descargar las librerias Keypad y Liquid Crystal para Modulo serial I2C. */ #include <Keypad.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); 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'} }; byte rowPins[ROWS] = {2,3,4,5}; //Filas byte colPins[COLS] = {6,7,8,9}; //Columnas Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); int val=0;//Valor de referencia int cuadro= 1023;// El numero 1023 dibuja un cuadro en el LCD //////////////Bases para el calculo int diah= 0;// Dia de hoy int mesh= 0;//Mes de Hoy int anosh= 0;//Año de hoy int diac= 0;//Dia de cumple int mesc= 0;//Mes de cumple int anosc= 0;//Año de cumple int anosvividos= 0;//Años vividos int total= 0;//Total de dias vividos ///////////////////////////////////////////////////////////////////////////////VOID SETUP void setup(){ lcd.begin(16,2);//Arranca LCD } ///////////////////////////////////////////////////////////////////////////////VOID LOOP void loop(){ char key = keypad.getKey(); ////////////////////////////Inicio if (val == 0){//si val es igual a 0 entonces.. lcd.setCursor(1,0); lcd.print("Oprime A para"); lcd.setCursor(4,1); lcd.print("iniciar"); } //////////////////////////////////BORRAR FECHA if(key && val==1 | val==2 |val==3 | val==4 | val==5 |val==6 | val==7 | val==8 | val==9) {//Si se oprima la tecla C y val esta en alguno de los valores del 1 al 9 entonces.. switch (key) { case 'C': val= 1; diah=0; mesh=0; anosh=0; lcd.clear(); lcd.setCursor(1,0); lcd.print("Fecha de hoy:"); lcd.setCursor(2,1); lcd.print("dd/mm/aaaa"); break; } } //////////////////////////////////INGRESA FECHA DE HOY if(key && val==0) {//Si val es igual a 0 entonces.. switch (key) { case 'A'://Al oprimir la letra A el display escribe.. val= 1;//val cambia a 1 lcd.clear(); lcd.setCursor(2,0); lcd.print("Fecha de hoy:"); lcd.setCursor(2,1); lcd.print("dd/mm/aaaa"); break; } } //////////////////////////////////PRIMER NUMERO DIAH if(key && val==1) {//Si val es 1 entonces.. switch (key) { case '0'://al escribir el numero 0 lcd.setCursor(2,1); lcd.print(key);//El display escribe el numero que se oprimio val= 2;//el valor cambia a 2 diah=diah+0;// se suman 0 dias a los dias break; case '1': lcd.setCursor(2,1); lcd.print(key); val= 2; diah=diah+10; break; case '2': lcd.setCursor(2,1); lcd.print(key); val= 2; diah=diah+20; break; case '3': lcd.setCursor(2,1); lcd.print(key); val= 2; diah=diah+30; break; } } //////////////////////////////////////SEGUNDO NUMERO DIAH else if(key && val==2) { switch (key) { case '0': val= 3; diah=diah+0; lcd.setCursor(3,1); lcd.print(key); break; case '1': val= 3; diah=diah+1; lcd.setCursor(3,1); lcd.print(key); break; case '2': val= 3; diah=diah+2; lcd.setCursor(3,1); lcd.print(key); break; case '3': val= 3; diah=diah+3; lcd.setCursor(3,1); lcd.print(key); break; case '4': val= 3; diah=diah+4; lcd.setCursor(3,1); lcd.print(key); break; case '5': val= 3; diah=diah+5; lcd.setCursor(3,1); lcd.print(key); break; case '6': val= 3; diah=diah+6; lcd.setCursor(3,1); lcd.print(key); break; case '7': val= 3; diah=diah+7; lcd.setCursor(3,1); lcd.print(key); break; case '8': val= 3; diah=diah+8; lcd.setCursor(3,1); lcd.print(key); break; case '9': val= 3; diah=diah+9; lcd.setCursor(3,1); lcd.print(key); break; } } //////////////////////////////////PRIMER NUMERO MESH else if(key && val==3) { switch (key) { case '0': val= 4; lcd.setCursor(5,1); lcd.print(key); break; case '1': val= 4; mesh=mesh+10; lcd.setCursor(5,1); lcd.print(key); break; } } //////////////////////////////////SEGUNDO NUMERO MESH else if(key && val==4) { switch (key) { case '0': val= 5; mesh= mesh+0; lcd.setCursor(6,1); lcd.print(key); break; case '1': val= 5; mesh= mesh+1; lcd.setCursor(6,1); lcd.print(key); break; case '2': val= 5; mesh= mesh+2; lcd.setCursor(6,1); lcd.print(key); break; case '3': val= 5; mesh= mesh+3; lcd.setCursor(6,1); lcd.print(key); break; case '4': val= 5; mesh= mesh+4; lcd.setCursor(6,1); lcd.print(key); break; case '5': val= 5; mesh= mesh+5; lcd.setCursor(6,1); lcd.print(key); break; case '6': val= 5; mesh= mesh+6; lcd.setCursor(6,1); lcd.print(key); break; case '7': val= 5; mesh= mesh+7; lcd.setCursor(6,1); lcd.print(key); break; case '8': val= 5; mesh= mesh+8; lcd.setCursor(6,1); lcd.print(key); break; case '9': val= 5; mesh= mesh+9; lcd.setCursor(6,1); lcd.print(key); break; } } //////////////////////////////////PRIMER NUMERO AÑO else if(key && val==5) { switch (key) { case '1': val= 6; anosh= anosh+1000; lcd.setCursor(8,1); lcd.print(key); break; case '2': val= 6; anosh= anosh+2000; lcd.setCursor(8,1); lcd.print(key); break; } } //////////////////////////////////SEGUNDO NUMERO AÑOH else if(key && val==6) { switch (key) { case '0': val= 7; lcd.setCursor(9,1); lcd.print(key); break; case '9': val= 7; anosh=anosh+900; lcd.setCursor(9,1); lcd.print(key); break; } } //////////////////////////////////TERCER NUMERO AÑOH else if(key && val==7) { switch (key) { case '0': val= 8; lcd.setCursor(10,1); lcd.print(key); break; case '1': val= 8; anosh=anosh+10; lcd.setCursor(10,1); lcd.print(key); break; case '2': val= 8; anosh=anosh+20; lcd.setCursor(10,1); lcd.print(key); break; case '3': val= 8; anosh=anosh+30; lcd.setCursor(10,1); lcd.print(key); break; case '4': val= 8; anosh=anosh+40; lcd.setCursor(10,1); lcd.print(key); break; case '5': val= 8; anosh=anosh+50; lcd.setCursor(10,1); lcd.print(key); break; case '6': val= 8; anosh=anosh+60; lcd.setCursor(10,1); lcd.print(key); break; case '7': val= 8; anosh=anosh+45; lcd.setCursor(10,1); lcd.print(key); break; case '8': val= 8; anosh=anosh+80; lcd.setCursor(10,1); lcd.print(key); break; case '9': val= 8; anosh=anosh+90; lcd.setCursor(10,1); lcd.print(key); break; } } //////////////////////////////////CUARTO NUMERO AÑOH else if(key && val==8) { switch (key) { case '0': val= 9; lcd.setCursor(11,1); lcd.print(key); break; case '1': val= 9; anosh=anosh+1; lcd.setCursor(11,1); lcd.print(key); break; case '2': val= 9; anosh=anosh+2; lcd.setCursor(11,1); lcd.print(key); break; case '3': val= 9; anosh=anosh+3; lcd.setCursor(11,1); lcd.print(key); break; case '4': val= 9; anosh=anosh+4; lcd.setCursor(11,1); lcd.print(key); break; case '5': val= 9; anosh=anosh+5; lcd.setCursor(11,1); lcd.print(key); break; case '6': val= 9; anosh=anosh+6; lcd.setCursor(11,1); lcd.print(key); break; case '7': val= 9; anosh=anosh+7; lcd.setCursor(11,1); lcd.print(key); break; case '8': val= 9; anosh=anosh+8; lcd.setCursor(11,1); lcd.print(key); break; case '9': val= 9; anosh=anosh+9; lcd.setCursor(11,1); lcd.print(key); break; } } //////////////////////////////////BORRAR FECHA DE NACIMIENTO if(key && val==10 | val==11 |val==12 | val==13 | val==14 |val==15 | val==16 | val==17 | val==18) { switch (key) { case 'C': val= 10; diac=0; mesc=0; anosc=0; lcd.clear(); lcd.setCursor(2,0); lcd.print("Nacimiento:"); lcd.setCursor(2,1); lcd.print("dd/mm/aaaa"); break; } } //////////////////////////////////INGRESA FECHA DE NACIMIENTO//////////////////////////////// if(key && val==9) { switch (key) { case 'B': val= 10; lcd.clear(); lcd.setCursor(2,0); lcd.print("Nacimiento:"); lcd.setCursor(2,1); lcd.print("dd/mm/aaaa"); break; } } //////////////////////////////////PRIMER NUMERO DIAC if(key && val==10) { switch (key) { case '0': lcd.setCursor(2,1); lcd.print(key); val= 11; diac=diac+0; break; case '1': lcd.setCursor(2,1); lcd.print(key); val= 11; diac=diac+10; break; case '2': lcd.setCursor(2,1); lcd.print(key); val= 11; diac=diac+20; break; case '3': lcd.setCursor(2,1); lcd.print(key); val= 11; diac=diac+30; break; } } //////////////////////////////////////SEGUNDO NUMERO DIAC else if(key && val==11) { switch (key) { case '0': val= 12; diac=diac+0; lcd.setCursor(3,1); lcd.print(key); break; case '1': val= 12; diac=diac+1; lcd.setCursor(3,1); lcd.print(key); break; case '2': val= 12; diac=diac+2; lcd.setCursor(3,1); lcd.print(key); break; case '3': val= 12; diac=diac+3; lcd.setCursor(3,1); lcd.print(key); break; case '4': val= 12; diac=diac+4; lcd.setCursor(3,1); lcd.print(key); break; case '5': val= 12; diac=diac+5; lcd.setCursor(3,1); lcd.print(key); break; case '6': val= 12; diac=diac+6; lcd.setCursor(3,1); lcd.print(key); break; case '7': val= 12; diac=diac+7; lcd.setCursor(3,1); lcd.print(key); break; case '8': val= 12; diac=diac+8; lcd.setCursor(3,1); lcd.print(key); break; case '9': val= 12; diac=diac+9; lcd.setCursor(3,1); lcd.print(key); break; } } //////////////////////////////////PRIMER NUMERO MESC else if(key && val==12) { switch (key) { case '0': val= 13; lcd.setCursor(5,1); lcd.print(key); break; case '1': val= 13; mesc=mesc+10; lcd.setCursor(5,1); lcd.print(key); break; } } //////////////////////////////////SEGUNDO NUMERO MESC else if(key && val==13) { switch (key) { case '0': val= 14; mesc= mesc+0; lcd.setCursor(6,1); lcd.print(key); break; case '1': val= 14; mesc= mesc+1; lcd.setCursor(6,1); lcd.print(key); break; case '2': val= 14; mesc= mesc+2; lcd.setCursor(6,1); lcd.print(key); break; case '3': val= 14; mesc= mesc+3; lcd.setCursor(6,1); lcd.print(key); break; case '4': val= 14; mesc= mesc+4; lcd.setCursor(6,1); lcd.print(key); break; case '5': val= 14; mesc= mesc+5; lcd.setCursor(6,1); lcd.print(key); break; case '6': val= 14; mesc= mesc+6; lcd.setCursor(6,1); lcd.print(key); break; case '7': val= 14; mesc= mesc+7; lcd.setCursor(6,1); lcd.print(key); break; case '8': val= 14; mesc= mesc+8; lcd.setCursor(6,1); lcd.print(key); break; case '9': val= 14; mesc= mesc+9; lcd.setCursor(6,1); lcd.print(key); break; } } //////////////////////////////////PRIMER NUMERO AÑOC else if(key && val==14) { switch (key) { case '1': val= 15; anosc= anosc+1000; lcd.setCursor(8,1); lcd.print(key); break; case '2': val= 15; anosc= anosc+2000; lcd.setCursor(8,1); lcd.print(key); break; } } //////////////////////////////////SEGUNDO NUMERO AÑOC else if(key && val==15) { switch (key) { case '0': val= 16; lcd.setCursor(9,1); lcd.print(key); break; case '9': val= 16; anosc=anosc+900; lcd.setCursor(9,1); lcd.print(key); break; } } //////////////////////////////////TERCER NUMERO AÑOC else if(key && val==16) { switch (key) { case '0': val= 17; lcd.setCursor(10,1); lcd.print(key); break; case '1': val= 17; anosc=anosc+10; lcd.setCursor(10,1); lcd.print(key); break; case '2': val= 17; anosc=anosc+20; lcd.setCursor(10,1); lcd.print(key); break; case '3': val= 17; anosc=anosc+30; lcd.setCursor(10,1); lcd.print(key); break; case '4': val= 17; anosc=anosc+40; lcd.setCursor(10,1); lcd.print(key); break; case '5': val= 17; anosc=anosc+50; lcd.setCursor(10,1); lcd.print(key); break; case '6': val= 17; anosc=anosc+60; lcd.setCursor(10,1); lcd.print(key); break; case '7': val= 17; anosc=anosc+45; lcd.setCursor(10,1); lcd.print(key); break; case '8': val= 17; anosc=anosc+80; lcd.setCursor(10,1); lcd.print(key); break; case '9': val= 17; anosc=anosc+90; lcd.setCursor(10,1); lcd.print(key); break; } } //////////////////////////////////CUARTO NUMERO AÑOC else if(key && val==17) { switch (key) { case '0': val= 18; lcd.setCursor(11,1); lcd.print(key); break; case '1': val= 18; anosc=anosc+1; lcd.setCursor(11,1); lcd.print(key); break; case '2': val= 18; anosc=anosc+2; lcd.setCursor(11,1); lcd.print(key); break; case '3': val= 18; anosc=anosc+3; lcd.setCursor(11,1); lcd.print(key); break; case '4': val= 18; anosc=anosc+4; lcd.setCursor(11,1); lcd.print(key); break; case '5': val= 18; anosc=anosc+5; lcd.setCursor(11,1); lcd.print(key); break; case '6': val= 18; anosc=anosc+6; lcd.setCursor(11,1); lcd.print(key); break; case '7': val= 18; anosc=anosc+7; lcd.setCursor(11,1); lcd.print(key); break; case '8': val= 18; anosc=anosc+8; lcd.setCursor(11,1); lcd.print(key); break; case '9': val= 18; anosc=anosc+9; lcd.setCursor(11,1); lcd.print(key); break; } } //////////////////////////////////CALCULANDO else if(key && val==18) { switch (key) { case 'B': val= 20; lcd.clear(); lcd.setCursor(2,0); lcd.print("Calculando..."); lcd.setCursor(0,1); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.clear(); lcd.setCursor(2,0); lcd.print("Calculando..."); lcd.setCursor(0,1); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.clear(); lcd.setCursor(2,0); lcd.print("Calculando..."); lcd.setCursor(0,1); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); lcd.write(cuadro); delay (45); break; } } //////////////////////////////////Calculo total=((anosh-anosc)*(365.242189))+((diah-diac)+((mesh-mesc)*(365.242189/12)));// Formula par determinar los dias anosvividos=anosh-anosc; //////////////////////////////////USTED HA VIVIDO if(val==20 && anosvividos <=89) {//Si los años vividos son menos que 89 y val es igual a 20 entonces... val= 21; lcd.clear(); lcd.setCursor(0,0); lcd.print("Usted ha vivido:"); lcd.setCursor(2,1); lcd.print(total); lcd.setCursor(9,1); lcd.write("dias"); } else if (val==20){// De lo contrarios, es decir si los años ingresados son mayores que 89 entonces.. val= 21; lcd.clear(); lcd.setCursor(1,0); lcd.print("Usted deberia"); lcd.setCursor(1,1); lcd.write("estar muerto"); } 
 //////////////////////////////////RESET if(key) {//Volvemos a poner todos los valores en 0 para que inicie de nuevo switch (key) { case '*': lcd.clear(); diah= 0; mesh= 0; anosh= 0; diac= 0; mesc= 0; anosc= 0; anosvividos= 0; total= 0; val= 0; break; } } //////////////////////////////////FIN } //ElectroCrea.com 

Artículos Relacionados

Gamepad de PC Bluetooth Android DIY con arduino leonardo

Gamepad de PC Bluetooth Android DIY con arduino leonardo

Tutorial y prueba de vídeo:Enlace al archivo de App Inventor y Arduino en youtube video en la descripción.Paso 1: De parte lista, cableado y jugando -Arduino Leonardo (leonardo tablero tiene emulación de teclado y ratón. Im usando micro pro)-Bluetoot
PHloat2 DIY agua ácida prueba escultura y kit con arduino

PHloat2 DIY agua ácida prueba escultura y kit con arduino

pHloatpHloat es un kit de bricolaje para uso junto con un microcontrolador arduino seminuevo / preexistente. Su propósito es poner a prueba los niveles de pH en ríos, lagos y arroyos debido a la afluencia de aire y agua contaminación causada a menudo
Uber domótica con Arduino y Pi

Uber domótica con Arduino y Pi

[EDITAR] He creado un foro para colaborar en el código de puerta de enlace.http://homeautomation.proboards.com/Board/2/openha...Hace unos años me convertí en propietario de un perro por primera vez. Me gustaba salir de Cody en la perrera solo todo el
Controles de lectura/emular con Arduino y frambuesa Pi

Controles de lectura/emular con Arduino y frambuesa Pi

Mandos a distancia están en todas partes. Son la interfaz a su televisores, sistemas de música y qué no. Probablemente tienes unos cuantos de repuesto ahí, devastada en la desaparición de su mejor. Animarlos y les ponga en uso! (Skynet aprueba...)Aqu
Control de Motor de BLDC con Arduino, salvado el motor del HD y sensores Hall

Control de Motor de BLDC con Arduino, salvado el motor del HD y sensores Hall

hay un gran interés estos días entre los aficionados a los hobbys en el control de motores brushless de la C.C. (BLDC), que han mejorado el rendimiento y mejor eficiencia energética enmotores tradicionales, pero son más difíciles de usar. Muchos prod
Cómo utilizar el control remoto IR con Arduino (actual y actualizada)

Cómo utilizar el control remoto IR con Arduino (actual y actualizada)

Estoy cansado de estos complicados tutoriales sobre cómo hacer ciertas cosas. Me gusta simple, fácil de entender, las instrucciones paso a paso. Mi mayor problema era con IR y POV *. Yo finalmente he dominado cómo controlar mi proyecto con cualquier
Cómo crear un módulo de Bluetooth 4.0 compatible con Arduino

Cómo crear un módulo de Bluetooth 4.0 compatible con Arduino

ACTUALIZACIÓN: Permite hacer Robots, mi hogar digital hackerspace, fue comprado por RobotShop. No quiero entrar, pero los nuevos propietarios prohibición yo y la mayoría de los miembros veteranos. Dijo la mayoría de los enlaces allí estará rota. Por
PuttDuino agujero de putt-putt con arduino

PuttDuino agujero de putt-putt con arduino

mi empresa tiene eventos anuales donde todos nos reunimos para que divertirnos - golpe de vapor y un poco de competencia. En el pasado hemos tenido Softbol y competiciones de bolos. Este año alguien tuvo una inspiración: cada departamento sería const
Paraguas LED con Arduino

Paraguas LED con Arduino

el paraguas del LED con Arduino combina un paraguas, una matriz de LED 8 x 10 y un microcontrolador Arduino para crear un controlable, programable LED experiencia en la intimidad de su propio paraguas. Este proyecto fue inspirado por la cobertura elé
Programar un ATtiny44/45/84/85 con Arduino

Programar un ATtiny44/45/84/85 con Arduino

Este tutorial da proporciona los pasos para configurar, programar y probar un ATtiny44/45/84/85 con un Arduino. También proporciona algunas explicaciones sobre el funcionamiento interno de virutas del AVR en general.Paso 1: AVR y ISP explicó Muchos t
8 x 8 x 8 LED cubo con Arduino Mega (+ sonido + PS controlador + juego)

8 x 8 x 8 LED cubo con Arduino Mega (+ sonido + PS controlador + juego)

este es un instructivo que se basa en el cubopor Chr, (por SuperTech-IT, (y por das-labor.org, (http://www.das-labor.org/wiki/Borg3d_Bauanleitung...)pero creo que su mejor y más fácil.Comencé este proyecto sin ninguna habilidad de toprogramming de so
Cómo hacer un sistema de alarma con Arduino

Cómo hacer un sistema de alarma con Arduino

Con Arduino es realmente posible hacer proyectos complejos, particularmente a través de Internet, se puede utilizar a través del escudo diferentes disponibles para el microcontrolador. En este artículo, veremos cómo hacer un sistema de alarma profesi
Alarma/Despertador con Arduino

Alarma/Despertador con Arduino

Este es el primer proyecto subo y escribo y me posiciones compartirlo pues me parece un proyecto muy interesante y muy entretenido.La idea para este proyecto fue porque tenia en casa un pequeño reloj despertador desde navidad que no había usado pues
Audio estéreo con Arduino

Audio estéreo con Arduino

Recientemente yo he publicando un montón de proyectos que usan un 8 bit escala de resistenciaconvertidor digital a analógico (DAC) y un Arduino para hacer sonido. (ver el cuadro de efectos vocales de Arduino, Arduino tambor sampler y mi tutorial de s