Calculando cuantos dias a vivido con Arduino (4 / 4 étapes)

Étape 4: Código

El siguiente código fue utilizado con la placa Arduino Uno e incluye algunos comentarios para entender mejor su funcionamiento. Recomiendo Qué descargues el código y que lo analices desde el programa. Recuerda descargar las Edición necesarias para utilizar el Teclado matriciels 4x4 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 

Articles Liés

SIM900 GSM GPRS bouclier CON ARDUINO UNO

SIM900 GSM GPRS bouclier CON ARDUINO UNO

Esta es una tarjeta GPRS ultra compacta de comunicación inalámbrica. La tarjeta es compatibles con todos los modelos de Arduino con el formato UNO, además puedes controlarla con otros microcontroladores también. La tarjeta está basada en el módulo SI
WebCam Con Arduino YUN Y PIR MOTION

WebCam Con Arduino YUN Y PIR MOTION

Aunque existen diversas formas de conectar una cámara al Arduino YUN y realizar un proyecto parecido, una forma sencilla de hacerlo es con ONU teléfono celular que ya aucun usemos, para utilizarlo como una WebCam.Sin embargo la complejidad estaria en
Alcancia de Signo de Mario Bros con Arduino

Alcancia de Signo de Mario Bros con Arduino

1 x Arduino UNO1 x Bocina o Buzzer1 x Resistencia de 1 k ohms3 x Resistencia 330 ohms1 x omhs Resistencia 5,7 k1 x Placa fenólica x 4 LEDs1 x Tabla de acrílico 450 x 300 x 3 mm (blanco y amarillo)Câble de 12 x Pijas1 x LM3391 x QRD11141 x Potenciómet
Visualiser sensores con Arduino y GPRS (IoT)

Visualiser sensores con Arduino y GPRS (IoT)

Si deseas reportar el valor de tus sensores, esta es Nations Unies alternativa sencilla, usando una de las tarjetas GPRS que se presentan a continuación y la plataforma web de MCI para levantar los datos es tu opción.Étape 1: PasosRegístraEnvía ONU c
GPS Sistema con Arduino + M2M bouclier

GPS Sistema con Arduino + M2M bouclier

En el siguiente realizaremos tutorial un sistema GPS con ja, estos pueden ser ambientales como temperatura, Arduino y ONU bouclier especial para ello Lama Arduino M2M bouclier desarrollado por électronique MCI, humedad, donde obtendremos el recorrido
Como controlar remotamente ONU LED con Arduino y Ubidots

Como controlar remotamente ONU LED con Arduino y Ubidots

Luego de realizar esté podrás tutoriel controlar el encendido o apagado de ONU actuador remotamente, desde la plataforma de Ubidots. En éste caso usaremos ONU LED por facilidad, sin emabrgo podrás extendeur éste tutoriel, teoría fr, cualquier otro ti
Controlando affichage LCD I2C con Arduino

Controlando affichage LCD I2C con Arduino

Hace unos días amendements llegaron unas LCD I2C de 16 × 2 y aucun soi si alguna vez te ha pasado que estas haciendo un proyecto con muchos componentes y debes usar una pantalla LCD que se lleva 6 pins de tu Arduino y todo se vuelve ONU caos porque y
PONG con Arduino

PONG con Arduino

Esta vez vamos un recrear el famoso juego de PONG usando Arduino, para ello vamos a necesitar los siguientes materiales :Arduino Nano Atmega328. (puede ser cualquier otro, pero nosotros decidimos utilizar este por comodidad)Afficher I2C OLED de 128 x
Portaretrato digital con Arduino

Portaretrato digital con Arduino

En este pequeño tutoriel vamos a aprender bouclier hacer un pequeño portraretraros numérique usando un Arduino UNO y ONU LCD tactile de 2.8".El objetivo de este es tutoriel familiarizarse con el bouclier y la lectura de imagenes bmp desde una tarjeta
Héros de Clicker Hackear juego con Arduino

Héros de Clicker Hackear juego con Arduino

Hace poco descubrimos fr vapeur ONU juego llamado « Clicker Heroes » en el que por medio de clique sur obtienes monedas en el juego para mejorar habilidades de monstruos.Gabo ONU amigo del hackerspace realizo un pequeño hack con el Arduino Micro (o L
Conexion de capteur de alarma para ventana o puerta con Arduino

Conexion de capteur de alarma para ventana o puerta con Arduino

En este explico instructable de forma sencilla como conectar un capteur magnético un arduino de manera que cuando se este dispare, Arduino encienda ONU LED.Este es el primer paso Québec il dado para construirme una alarma con diferentes sensores basa
Braccio Robotico con Arduino

Braccio Robotico con Arduino

Questo è il mio primo progetto che pubblico, quindi siate clementi.Piccola premessa : Poiché il progetto è stato realizzato tempo fa, mi manca il materiale par una presentazione dettagliata del processo di realizzazione del braccio, quindi non ci sar
Arpegiador Con Arduino (polymath3)

Arpegiador Con Arduino (polymath3)

En este instructable construiremos una caja que produire arpegios con un sonido de sintetizador, creado por una onda triangulaire. Un esta colección de efectos y aparatos de música la llamo polymathe. Pueden revisar este mélangeur y esta otra generad
Contrôle De moteur paso a paso con Arduino nano

Contrôle De moteur paso a paso con Arduino nano

Aquí les dejo un proyecto que surgió une causa de mis ansias de hacer mi propia taladradora CNC pero luego que obtuve mi Arduino debía aprender a controlar de forma básica los motores paso a paso!! Aquí podrán ver el resultado de mi primera prueba.MA