L'horloge temps réel ou RTC (Real Time Clock) DS1307 permet de fournir la date et l'heure à la carte Arduino via la liaison I2C.
La bibliothèque RTC_Library 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.
L'HORLOGE TEMPS REEL DS1307
Programme :
/* RTC est un programme qui affiche sur un afficheur LCD la date et l'heure */
#include <Wire.h> // appel des bibliothèques
#include "DS1307.h"
#include <LiquidCrystal.h>
#define en 7 // affectation des broches
#define rs 6
#define d7 5
#define d6 4
#define d5 3
#define d4 2
DS1307 horloge; // création de l'objet horloge
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); // création de l'objet lcd
void setup()
{
horloge.begin(); // initialisation de l'objet horloge
lcd.begin(16,2); // initialisation de l'objet lcd
horloge.fillByYMD(2016,12,28); // initialisation de la date
horloge.fillByHMS(10,42,30); // initialisation de l'heure
horloge.fillDayOfWeek(WED); // initialisation du jour
horloge.setTime(); // sauvegarde dans le DS1307
}
void loop()
{
horloge.getTime(); // acquisition des données
lcd.setCursor(0,0); // placement du curseur 1ère ligne 1ère colonne
if (horloge.dayOfMonth<10) // affichage du jour
{
lcd.print("0");
lcd.print(horloge.dayOfMonth, DEC);
}
else
{
lcd.print(horloge.dayOfMonth, DEC);
}
lcd.print("/");
if (horloge.month<10) // affichage du mois
{
lcd.print("0");
lcd.print(horloge.month, DEC);
}
else
{
lcd.print(horloge.month, DEC);
}
lcd.print("/");
lcd.print(horloge.year+2000, DEC); // affichage de l'année
lcd.setCursor(0,1); // placement du curseur 2nde ligne 1ère colonne
if (horloge.hour<10) // affichage de l'heure
{
lcd.print("0");
lcd.print(horloge.hour, DEC);
}
else
{
lcd.print(horloge.hour, DEC);
}
lcd.print(":");
if (horloge.minute<10) // affichage des minutes
{
lcd.print("0");
lcd.print(horloge.minute, DEC);
}
else
{
lcd.print(horloge.minute, DEC);
}
lcd.print(":");
if (horloge.second<10) // affichage des secondes
{
lcd.print("0");
lcd.print(horloge.second, DEC);
}
else
{
lcd.print(horloge.second, DEC);
}
}
Exemple :
Nous souhaitons afficher sur un afficheur à cristaux liquides, la date et l'heure.
Liste du matériel :
-
1 Arduino Uno
-
1 plaquette d'essai
-
1 écran à cristaux liquides
-
1 potentiomètre ou résistance ajustable de 10 KΩ
-
1 module RTC DS1307
Câblage :
Dans l'univers Arduino, l'horloge temps réel est principalement utilisée pour afficher la date et l'heure, pour horodater des évènements ou pour lancer des actions à une heure précise.