Descripción
Qué buen título, "Manejo del tiempo", quién lo quisiera!!!!! Nó!!!!
Arduino tiene un cristal piezoeléctrico interno que le permite el manejo de frecuencias que marcan el tiempo de procesamiento y que nos sirven para marcar un tiempo reloj casi preciso.
Podemos tener control sobre una variable de tiempo ( y no sobre el tiempo mismo) de dos maneras.
La primera es usando la librería time.h de arduino. El inconveniente es que al no tener una pila que mantenga la hora actualizada, esta se reinicia cada vez que se ejecuta el programa que contiene la instrucción.
Aquí va el código.
Código
#include <Time.h>
void setup()
{ Serial.begin(9600);
setTime(10,55,00,15,07,2016);
}
void loop()
{ time_t t = now();
Serial.print(day(t));
Serial.print(+ "/") ;
Serial.print(month(t));
Serial.print(+ "/") ;
Serial.print(year(t));
Serial.print( " ") ;
Serial.print(hour(t));
Serial.print(+ ":") ;
Serial.print(minute(t));
Serial.print(":") ;
Serial.println(second(t));
delay(1000);
}
La otra forma de controlar la variable tiempo es usando un reloj que se anexa a la placa arduino.
// Este programa esta funcionando con la librería RTC DS3231
Código
#include <Wire.h>
#include "Sodaq_DS3231.h"
char weekDay[][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
//year, month, date, hour, min, sec and week-day(starts from 0 and goes to 6)
//writing any non-existent time-data may interfere with normal operation of the RTC.
//Take care of week-day also.
DateTime dt(2016, 11, 16, 13, 4, 0, 5);
void setup ()
{
Serial.begin(57600);
Wire.begin();
rtc.begin();
rtc.setDateTime(dt); //Adjust date-time as defined 'dt' above
}
void loop ()
{
DateTime now = rtc.now(); //get the current date-time
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.date(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.print(weekDay[now.dayOfWeek()]);
Serial.println();
delay(1000);
}