Calculando cuantos dias heeft vivido Arduino con (4 / 4 stap)

Stap 4: Código

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

Bibliotheek al final de las Útima hora en fotos:

 ///////////////////¿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 

Gerelateerde Artikelen

Caja para Arduino con corte laser - Uno, Mega, Leonardo, Yun

Caja para Arduino con corte laser - Uno, Mega, Leonardo, Yun

Una caja para nuestras tarjetas Arduino, es un gran aliado para protegerlas y manipularlas de forma más sencilla. Y qué mejor forma para conseguir una caja para tu Arduino que fabricarla tu mismo?Nl este Instructable encontrarás los archivos para fab
Muzikale gevuld dier met LilyPad Arduino

Muzikale gevuld dier met LilyPad Arduino

dit is pruim.  Ze speelt "Oude MacDonald is een boerderij" wanneer de knop in haar rechteroor is geduwd.Ze is een project dat ik gemaakt heb voor een klasse - jeugd en technologie in bibliotheken.  Het beschikt over een knuffeldier met een druks
Controlando display LCD I2C Arduino con

Controlando display LCD I2C Arduino con

Hace unos días amendementen llegaron Oenas LCD's I2C de 16 × 2 y neen se si alguna vez te ha pasado que estas haciendo VN proyecto con muchos componentes y debes usar una pantalla LCD que se BELLISIMA 6 dennen de tu Arduino y todo se vuelve VN caos p
Arduino con pantalla LCD 1602

Arduino con pantalla LCD 1602

La pantalla LCD sirve para poder tener una The con el usuario, es decir, desplegar información, y usar botones para poder ejecutar acciones nl el Arduino. Nl este proyecto utilizamos la pantalla LCD 1602que es bastante Bueno, pues viene como "schild&
SIM900 GSM GPRS SHIELD CON ARDUINO UNO

SIM900 GSM GPRS SHIELD CON ARDUINO UNO

Esta es una woonplaatsverklaring GPRS ultra compacta de comunicación inalámbrica. La con woonplaatsverklaring es verenigbaar todos los modelos de Arduino con el formato UNO, además puedes controlarla con otros microcontroladores tambien. La woonplaat
Modulos RF433 Mhz con Arduino

Modulos RF433 Mhz con Arduino

Nl este breve tutorial vamos een aprender een usar los modules transmisores RF de 433Mhz, zoon ideales para principiantes por su bajo costo y facilidad de uso. Ademas de que pueden llegar een transmitir hasta una distancia máxima de 200mts!!! Para el
Spidercholo Puppet Arduino

Spidercholo Puppet Arduino

Este fue un proyecto para la materia de Interfaces Físicas, quisimos relacionar el arte y cratividad, con las interfaces físicas, de este modo surgió este proyecto.Stap 1: Descripción El proyecto consiste nl crear VN-sistema al que se le pueda verbin
Robot Educativo Fischertechnik Arduino (RAFA)

Robot Educativo Fischertechnik Arduino (RAFA)

Este proyecto trata de como crear VN robot con boetes educativos usando el sistema Fishertechnik y potenciandolo con todas las prestaciones de Arduino, con ello conseguimos una plataforma educativa:-muy processor-flexibele een diferentes niveles-dive
Proteus, Arduino & Hyperterminal.

Proteus, Arduino & Hyperterminal.

Con este instructable quiero dejaros unos ejemplos que realice con arduino simulado desde VN ordenador, una buena forma de empezar zonde gastarnos dinero nl componentes y placas. Si queréis descargaros los ejercicios estan nl:https://Mega.co.nz/#! qA
Arduino Aquaponics: Real-tijd-klok deel I

Arduino Aquaponics: Real-tijd-klok deel I

AA fundamentele noodzaak van een systeem van controles is de mogelijkheid om de tijd bijhouden.  Voor zover wij weten, heeft de Arduino drie methoden die het kunt gebruiken:1. seriële.  Herhaaldelijk de tijd te krijgen via de seriële verbinding.2. ex
Monteren van een Arduino Nano / LCD projecten Platform

Monteren van een Arduino Nano / LCD projecten Platform

De "Arduino Nano / 1.8" TFT LCD projecten Platform "bestaat uit een 3D gedrukte geval dat wraps een aangepaste ontworpen PCB waarop is gemonteerd een Arduino Nano, een 1.8" TFT LCD met een SD-kaartlezer en drie drukknoppen die blootsta
Dot matrixprinter vanaf een CD/DVD-lezer met Arduino

Dot matrixprinter vanaf een CD/DVD-lezer met Arduino

Hey!Enige tijd geleden tijdens het doorlopen van de pagina's hier in Instructables, iets mijn aandacht vangen, een printer gemaakt van een CD-lezer, en ik was verbaasd.Ik dacht: "Dit is ongelooflijk, ik heb een te maken!"Ik weet dat dit soort pr
Acryl Fish Tank met Arduino aangedreven Feeder

Acryl Fish Tank met Arduino aangedreven Feeder

Heb je ooit wilde een meer handen op gevoel bij het ophalen van een vis? Of wilde iets anders dan de gemiddelde aquaria gevonden in de winkels? Dit aquarium is volledig aangepast en afgestemd op uw grootte kan worden gewijzigd en heeft een Arduino aa
IPhone universele afstandsbediening Learing met Arduino

IPhone universele afstandsbediening Learing met Arduino

Hallo, en welkom op mijn eerste Instructable.Ik weet niet over u, maar ik kan de afstandsbediening nooit vinden voor mijn TV. Het altijd lijkt te verdwijnen wanneer ik het nodig hebt en vervolgens alleen opduikt dagen later ingeklemd in de Bank door