Novedades
Más comprados
- T7000 HNBC Pegamento Adhesivo T-7000 15ml NEGRO transparente Pantalla LCD Móvil 3,14€
- T7000 HNBC Pegamento Adhesivo T-7000 50ml NEGRO transparente Pantalla LCD Móvil 5,14€
- PANTALLA DE CRISTAL PARA GAME BOY 54,40€
- 3x caja plastico almacenaje joyas electrónica herramientas collar 16.5x12x6 16,00€
- 3x caja plastico almacenaje joyas electrónica herramientas collar 14.2x8.2x3.4 10,50€
Lo que nos diferencia del resto
Atención Personalizada
Estamos aquí para ayudarle, si necesita información sobre un producto, tiene alguna duda o requiere asistencia con su pedido, no dude en contactar con nosotros.
Presupuestos a medida
Pida presupuesto sin ningún tipo de compromiso, tenemos descuentos para docentes y precios especiales por volumen.
¿Necesita distribuidor?
Queremos ser su proveedor de electrónica ¿Necesita productos que no tenemos en el catálogo? Los buscaremos y le daremos presupuesto y plazo de entrega.
Hola amigos tecnólogos, en nuestra entrada de hoy veremos una forma sencilla de medir el tiempo con Arduino sin necesidad de hacer cálculos complejos y laboriosos.
Esto lo haremos con la ayuda de la librería Time, la cual nos facilitara mucho el trabajo a la hora de gestionar un calendario con fecha y hora. Para asimilar los conceptos representaremos la fecha y hora en el monitor serial y programaremos una alarma.
Materiales necesarios
Arduino UNO R3 |
Conozcamos la librería Time
La librería Time la desarrollo Arduino, aunque no viene por defecto en el IDE de Arduino. Para usarla solo hay que instalarla según el procedimiento normal de instalación de librarías.
En esta librería lo primero que se hace es declarar un tipo especial de variable llamada time_t de 32 bits. Esta variable es la responsable de que todo funcione.
El principio fundamental de funcionamiento de esta librería es que la variable time_t almacena en un formato especial los segundos transcurridos desde el 1 de enero de 1970 hasta hoy. Este método es el mismo que usa sistemas operativos basados en Linux.
Las conversiones son automaticas, por lo que no hay que complicarse haciendo calculos largos y complejos.
La ventaja principal de manejar esta librería es que al convertir la fecha y la hora en un numero de segundos, podemos operar libremente con este número, resta o sumando fechas y horas y el resultado seguirá siendo una fecha y una hora.
El principal inconveniente es que no podemos trabajar con fecha anteriores al 1 de enero de 1970.
Para empezar a manejar la librería el primer paso es insertar la fecha desde la que queremos empezar a contar, esto lo hacemos con la siguiente función:
//Formato: hora, minutos, segundos, días, mes, año setTime(19,28,50,20,10,2015);
A continuación declaramos la variable time_t T y la igualamos a la función now(). Esta función contiene la fecha que antes insertamos.
time_t t = now();//Declaramos la variable time_t t
Prácticas con la librería
Esta es la parte que nos gusta a todos, la parte de experimetar.
El siguiente código representa la fecha y la hora en el monitor serial.
#include <Time.h>//Incluimos la librería Time void setup() { Serial.begin(115200);//Inicializamos el puerto serie. //Anotamos la hora y la fecha desde la que nuestro programa empezará a contar. //Formato: hora, minutos, segundos, días, mes, año setTime(19,28,50,20,10,2015); } void loop() { time_t t = now();//Declaramos la variable time_t t //Imprimimos la fecha y lahora 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);//Esperamos 1 segundo }
En la imagen de abajo se observa como la hora aumenta segundo a segundo desde la fecha de inicio que le marcamos.
Una prueba que podeis hacer es comprobar como al aumentar el tiempo de delay, el reloj sigue contando correctamente los segundos, aunque no los representa todos.
#include <Time.h>//Incluimos la librería Time void setup() { Serial.begin(115200);//Inicializamos el puerto serie. //Anotamos la hora y la fecha desde la que nuestro programa empezará a contar. //Formato: hora, minutos, segundos, días, mes, año setTime(19,28,50,20,10,2015); } void loop() { time_t t = now();//Declaramos la variable time_t t //Imprimimos la fecha y la hora 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(3000);//Esperamos 3 segundos }
En la siguiente captura de pantalla del monitor serial se puede ver como el reloj sigue pasando corréctamente aunque el delay aumente.
Por último programaremos una alarma a una hora concreta y con una duración de un minuto.
#include <Time.h>//Incluimos la librería Time void setup() { Serial.begin(115200);//Inicializamos el puerto serie. //Anotamos la hora y la fecha desde la que nuestro programa empezará a contar. //Formato: hora, minutos, segundos, días, mes, año setTime(19,28,50,20,10,2015); } void loop() { time_t t = now();//Declaramos la variable time_t t //Imprimimos la fecha y lahora 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);//Esperamos 1 segundo //Programamos la hora a la que la alarma se activará en este caso 19:30 if(hour(t)==19 && minute(t)==30) { Serial.println("Alarma") ; } }
En la siguiente imagen vemos como la alarma se activa en la hora programada.
En nuestro caso hemos representado la palabra alarma en el monitor serial cuando ha llegado a la hora programada, pero al igual que representamos esta palabra, podríamos haber activado una salida digital para activar algún tipo de zumbador o led.
Written by leantec.ES
Equipo de Leantec.ES
Como puedo hacer esto con una lcd programar la fecha que requiera y determinar que en un tiempo predeterminado se encienda una luz
Hola, veo que todos tenemos el problema del SetTime. No veo dónde esta el problema, decís en el #include pero no lo veo. Me podrias ayudar?
Hola Señores, no soy experto en arduino pero realicé los cambios sugeridos y logré superar el error mencionado antes:
Este es el código que estoy usando. Recuerden bajar e instalar la librería desde https://github.com/PaulStoffregen/Time.
#include
#include
void setup()
{
Serial.begin(115200);//Inicializamos el puerto serie.
//Anotamos la hora y la fecha desde la que nuestro programa empezará a contar.
//Formato: hora, minutos, segundos, días, mes, año
setTime(10,29,50,30,03,2020);
}
void loop()
{
time_t t = now();//Declaramos la variable time_t t
//Imprimimos la fecha y lahora
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);//Esperamos 1 segundo
//Programamos la hora a la que la alarma se activará en este caso 19:30
if(hour(t)==19 && minute(t)==30)
{
Serial.println(«Alarma») ;
}
hola soy nuevo en esto
Pero si lo copio tal como esta me salta error, pero si cambio todos los « por » se soluciona.
Recuerden bajar e instalar la librería desde https://github.com/PaulStoffregen/Time.
#include
void setup()
{
Serial.begin(115200);//Inicializamos el puerto serie. 115200
//Anotamos la hora y la fecha desde la que nuestro programa empezará a contar.
//Formato: hora, minutos, segundos, días, mes, año
setTime(11,59,15,19,05,2020);
}
void loop()
{
time_t t = now();//Declaramos la variable time_t t
//Imprimimos la fecha y lahora
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);//Esperamos 1 segundo
}
se modifica la respuesta del comentario cambiar esto « por comillas
a mi me sigue saltando ese error amigo, que puedo hacer
Yo necesito medir el tiempo real mediante software, con la libreria time, y necesito guardarel tiempo en la memoria interna del arduino, como lo haria ? gracias
Hola, muy buena la explicación, yo tenia el mismo problema al cargar el código que tira el error de//Incluimos la librería Time
» ‘setTime’ was not declared in this scope » esta es mi linea del setTime «.
lo solucione borrando en el código
#include
e incluyendo la librería desde incluir librerias.
aca les dejo el codigo:
#include
#include
void setup()
{
Serial.begin(115200);//Inicializamos el puerto serie.
//Anotamos la hora y la fecha desde la que nuestro programa empezará a contar.
//Formato: hora, minutos, segundos, días, mes, año
setTime(19,28,50,20,10,2015);
}
void loop()
{
time_t t = now();//Declaramos la variable time_t t
//Imprimimos la fecha y lahora
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);//Esperamos 1 segundo
//Programamos la hora a la que la alarma se activará en este caso 19:30
if(hour(t)==19 && minute(t)==30)
{
Serial.println(«Alarma») ;
}
}
Saludos dardo
he colocado el mismo codigo, y no se como solucionar el problema de la libreria de time. he leido acerca de la version del arduino. tengo la 1.6.1, si alguien sabe como poder arreglarlo, se lo agradecería..
Tengo una duda, es que necesito conectarle un contador digital para un proyecto que me toca hacer, ¿podrían darme instrucción de como podría hacerlo?
mismo error» ‘setTime’ was not declared in this scope » esta es mi linea del setTime » setTime(12,21,56,13,9,2016);» y mi linea de la declaracion de la libreria «#include»
aqui mi codigo (quiero que se active un relevador a los primeros 15 segundos)
#include
void setup(){
setTime(12,21,56,13,9,2016); // Las 12;00:00 del dia 1 de Ene de 2014
pinMode(12, OUTPUT);
}
void loop (){
time_t t = now();
if (second(t)<=15) { digitalWrite(12, HIGH); } else { digitalWrite(12, LOW); delay(1000); } }
Tuve el mismo error, pero se debio a ue la libreria estaba mal instalada, hay que descargar la libreria, abrir el achivo .rar, copiar la carpeta en la ubicacion «libraries» ubicada en la carpeta donde se instalo el programa de arduino y listo. eso fue lo que me soluciono ese problema
Tengo el mismo problema, me dice que no se ha declarado setTime en el ámbito,?? y no veo la diferencia que indica M entre no es «#include » debe ser «#include »
La libreria Time está incompleta, deben descargarla de GitHub https://github.com/PaulStoffregen/Time.
Descargarán un archivo Zip que hay que añadir en las librerias de arduino y en el encabezado del probrama deben incluir la libreria time de tal manera que queden las siguientes dos lineas
#include
#include
Si solo tienen #include marca el error debido a que necesita el #include Razón por la cual deben descargar el Time-master.zip en la liga que les dejo de GitHub
descargue e instalé la librería, Copie el código y lo compile pero me da error desde el princiio dice que no se ha declarado en el scope «set time» y todas las demás variables para optener la fecha y la hora
Solo cambia como se declara la libería, no es «#include» debe ser «#include »
No es Time.h, es TimeLib.h
Hola, Me ocurre lo mismo, me dice que no se ha declarado setTime en el ámbito??
En referencia a lo que indica M ·Solo cambia como se declara la libería, no es «#include » debe ser «#include » ·, si no hay diferencia entre ambos??
como enciendo una bomba de agua durante 5 minutos cada 24 horas
Observo que hasta que no abrimos el monitor serie no empieza a contar el tiempo. Y si lo cerramos y volvemos a abrir el monitor serie empieza otra vez desde el principio a contar el tiempo. Esto es raro no?. Es como si el reloj interno del arduino se parara cuando cerramos el monitor serie.
Hace un tiempo, encontre otro codigo que me arrojaba lo mismo! pudiste encontrar alguna respuesta con respecto a este problema?
saludos!
hola, estoy realizando mi tesis y es relacionado con la domotica, dentro de mis objetivos este realiza que la luz se prenda o apague con un comando, consulta con esta librería podría sacar el calculo de saber cuantas horas estuvo la luz prendida y cuantas horas estuvo apagada? gracias