Llevar el tiempo en Arduino normalmente requiere de utilizar módulos de reloj, como el DS3231 o cualquiera de los muchos otros de que se encuentran en el mercado. Estos dispositivos poseen una pila del tipo de las que utilizan los relojes o los motherboard de las computadoras que les permite seguir contando el tiempo aún cuando el Arduino no esté conectado a una fuente de poder.
Luego tenemos el Arduino Yún. Este dispositivo que posee la capacidad intrínseca de conectarse a Internet, sea por WIFI o por Ethernet es capaz de obtener la hora desde la distribución del Sistema Operativo Open Wrt, Linino, el cual es capaz de actualizar la hora desde Internet al establecer una conexión con servidores especiales para este propósito.
Hoy compartiré con ustedes cómo obtener la fecha y hora con el Arduino Yun. Para ello tendremos que subir a nuestro Yún el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <Process.h> Process date; void setup() { //Se inicia el Bridge que comunica a Arduino con el procesador Atheros Bridge.begin(); //Se inicia comunicacion serial con la computadora Serial.begin(9600); while (!Serial); Serial.flush(); } void loop() { //Si se le envía un comando al Arduino... if (Serial.available() > 0) { //Se lee el comando String command = Serial.readString(); //Si el comando recibido es igual a getTime... if (command == "getTime") { //Se ejecuta la función que lee la hora getTime(); //Se imprime la hora while (date.available() > 0) Serial.println(date.readString()); } } } void getTime() { if (!date.running()) { //Se inicia la variable date date.begin("date"); //Se establece el parámetro que se desea recibir date.addParameter("+%F"); date.run(); } } |
Cuando lo subimos, entramos al Monitor Serie y escribimos «getTime» (sin comillas) y le damos Enter. El resultado debe ser: Este resultado se debe a que se utilizó el parámetro %F en la sentencia addParameter. Existen diferentes tipos de parámetros que podemos utilizar. A continuación les presento los posibles parámetros y los resultados que se pueden obtener.
%% | Imprime el signo % |
%a | Día de la semana abreviado (por ejemplo: SUN) |
%A | El nombre completo del día de la semana (por ejemplo: Sunday) |
%b | Nombre del mes abreviado (por ejemplo: Jan) |
%B | Nombre completo del mes (por ejemplo: January) |
%c | Fecha completa (por ejemplo: Thu Mar 3 23:05:25 2015). |
%C | El siglo actual (por ejemplo: 20 en el año 2015) |
%d | Día del mes (por ejemplo 01) |
%D | La fecha completa (por ejemplo 06/11/2015) |
%e | Día del mes (por ejemplo 01) |
%F | Fecha completa (por ejemplo, AAAA-MM-DD) |
%h | Lo mismo que %b. |
%H | Hora (00-23) |
%I | Hora (01-12) |
%j | Día del año (001-366) |
%k | Hora. Lo mismo que %H (0-23) |
%l | Hora (1-12) |
%m | Meses (01-12) |
%M | Minutos (00-59) |
%n | Salto de línea |
%N | Nanosegundos (000000000..999999999) |
%p | AM/PM |
%P | am/pm |
%r | Hora local en formato 12 horas (ejemplo, 11:11:04 PM) |
%R | Hora local en formato 24 horas (ejemplo, 23:11:04 PM) |
%s | Segundos desde 1980-01-01 00:00:00 UTC. |
%S | Segundos |
%t | Un Tab |
%T | Tiempo (HH:MM:SS) |
%u | Día de la semana (1-7); 1 es lunes. |
%U | Semana del año (00-53) |
%V | Semana del año (01-53) |
%w | Día de la semana en número (el 0 es para el domingo) |
%W | Número de la semana en el año (de 0 a 52) |
%x | Representación local de la fecha (por ejemplo: 12/31/99) |
%X | Representación local del tiempo (por ejemplo: 23:13:48) |
%y | Los dos últimos dígitos del año (15 para el año 2015) |
%Y | Año |
%z | Zona horaria (-0400) |
%:z | Zona horaria (-04:00) |
%::z | Zona horaria (-04:00:00) |
%:::z | Zona horaria. Los «:» indican la precisión (Ejemplo: -04, +05:30). |
%Z | Abreviación de la zona horaria |
Si modificamos el la línea:
1 |
date.addParameter("+%F"); |
Y colocamos:
1 |
date.addParameter("+%B %e, %Y - %r"); |
Según la tabla debemos obtener el nombre del mes completo (%B), el día del mes (%e), el año (%Y) y la hora en formato 12 horas (%r). Este es el resultado:
Esperamos que esta información sea de utilidad para ustedes.
Saludos.