LE MODULE HORLOGE TEMPS REEL
Le module horloge temps comporte un DS1307 qui délivre la date et l'heure au format 12 ou 24 heures. Une pile CR1220 permet de mémoriser les données dans le DS1307.
La bibliothèque gérant ce module est téléchargeable ici et ses principales fonctions sont :
-
DS1307 horloge. Cette fonction permet de créer l'objet.
-
horloge.begin(). Cette fonction permet d'initialiser l'objet.
-
horloge.fillByYMD(année,mois,jour). Cette fonction permet d'initialiser la date.
-
horloge.fillByHMS(22,48,30). Cette fonction permet d'initialiser l'heure.
-
horloge.fillDayOfWeek(jour) où jour représente le jour de la semaine. Cette fonction permet d'initialiser le jour de la semaine.
-
horloge.setTime(). Cette fonction permet de sauvegarder les données précédentes dans le DS1307.
-
horloge.getTime(). Cette fonction permet de récupérer les données dans le DS1307.
Ce module doit être relié à un connecteur I2C de la base.
Exemple :
Nous souhaitons afficher dans le moniteur série le jour, la date et l'heure.
Liste du matériel :
-
1 base RIP
-
1 module horloge temps réel "Grove" avec support RIP
Câblage :
Module "Grove"
Module
horloge temps réel
Connecteur Base
I2C
Programme :
/* RTC_Grove est un programme qui affiche dans le moniteur série le jour, la date et l'heure */
#include <Wire.h> // appel des bibliothèques
#include "DS1307.h"
DS1307 horloge; //création de l'objet horloge
void setup()
{
Serial.begin(9600);
horloge.begin();
horloge.fillByYMD(2016,12,17); // initialisation de la date
horloge.fillByHMS(22,00,30); // initialisation de l'heure
horloge.fillDayOfWeek(SAT); // initialisation du jour
horloge.setTime(); // sauvegarde dans le DS1307
}
void loop()
{
horloge.getTime(); // acquisition des données
switch (horloge.dayOfWeek) // traitement du jour
{
case MON:
Serial.print("LUNDI");
break;
case TUE:
Serial.print("MARDI");
break;
case WED:
Serial.print("MERCREDI");
break;
case THU:
Serial.print("JEUDI");
break;
case FRI:
Serial.print("VENDREDI");
break;
case SAT:
Serial.print("SAMEDI");
break;
case SUN:
Serial.print("DIMANCHE");
break;
}
Serial.print(" ");
if (horloge.month<10) // affichage du mois
{
Serial.print("0");
Serial.print(horloge.month, DEC);
}
else
{
Serial.print(horloge.month, DEC);
}
Serial.print("/");
if (horloge.dayOfMonth<10) // affichage du jour
{
Serial.print("0");
Serial.print(horloge.dayOfMonth, DEC);
}
else
{
Serial.print(horloge.dayOfMonth, DEC);
}
Serial.print("/");
Serial.print(horloge.year+2000, DEC); // affichage de l'année
Serial.print(" ");
if (horloge.hour<10) // affichage de l'heure
{
Serial.print("0");
Serial.print(horloge.hour, DEC);
}
else
{
Serial.print(horloge.hour, DEC);
}
Serial.print(":");
if (horloge.minute<10) // affichage des minutes
{
Serial.print("0");
Serial.print(horloge.minute, DEC);
}
else
{
Serial.print(horloge.minute, DEC);
}
Serial.print(":");
if (horloge.second<10) // affichage des secondes
{
Serial.print("0");
Serial.print(horloge.second, DEC);
}
else
{
Serial.print(horloge.second, DEC);
}
Serial.print(" ");
Serial.println(" ");
}