Catégories
Arduino électronique Projets Arduino Projets microcontrôleurs

Projet Module RTC avec Arduino – DS1307

Objectifs du projet (voir la vidéo)

  1. Savoir l’utilité du module RTC
  2. Savoir utiliser le module RTC DS1307
  3. Savoir récupérer la date et l’heure du module
  4. Savoir varier la fréquence de la sortie SQW
  5. Se familiariser avec la gestion du temps avec Arduino
  6. Etc.

Exemples d’Applications:

  1. Gestion du temps
  2. Actions temporisées
  3. Ordonnancement des tâches
  4. Horloge numérique
  5. Calendrier numérique
  6. Datation des données
  7. Etc.

Schéma de principe

Schéma de principe DS1307

Datasheet du Module RTC DS1307 (PDF)

Programme Arduino

Fonction de lecture du module

void GetDateHeure(word *DateHeure)
{
// Lecture du module RTC
DateTime now = rtc.now();

// Récupération de la date
DateHeure[5]=now.year(); // Années
DateHeure[4]=now.month(); // Mois
DateHeure[3]=now.day(); // Jours

// Récupérration de l'heure
DateHeure[2]=now.hour(); // Heures
DateHeure[1]=now.minute(); // Minutes
DateHeure[0]=now.second(); // Secondes
}

Le programme complet


/*
* Projet le Module RTC avec Arduino
* wwww. Electronique-Mixte.fr
*
* Exemples d'Applications:
* 1. Gestion du temps
* 2. Actions temporisées
* 3. Ordonnancement des tâches
* 4. Horloge numérique
* 5. Calendrier numérique
* 6. Datation des données
* 7. Etc.
*/





#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;
word DateHeure[6]={0,0,0,0,0};

/*
* JoursSem[0]: Secondes
* JoursSem[1]: Minutes
* JoursSem[2]: Heures
* JoursSem[3]: Jours
* JoursSem[4]: Mois
* JoursSem[5]: Années
*/
/*
Mois 1-12
Jours 1-31
Heures 0-23
Minutes 0-59
Secondes 0-59
*/

char JoursSem[7][12] = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi","Dimanche"};

/*
enum Ds1307SqwPinMode {
DS1307_OFF = 0x00, // Low
DS1307_ON = 0x80, // High
DS1307_SquareWave1HZ = 0x10, // 1Hz square wave
DS1307_SquareWave4kHz = 0x11, // 4kHz square wave
DS1307_SquareWave8kHz = 0x12, // 8kHz square wave
DS1307_SquareWave32kHz = 0x13 // 32kHz square wave
};
*/




void setup ()
{
Serial.begin(2400);
if (! rtc.begin())
{
Serial.println("Le module RTC non disponible");
while (1); // Attente RESET
}
else
{
Serial.println("Le module RTC est OK");
rtc.writeSqwPinMode(DS1307_SquareWave4kHz);
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Date du PC

//rtc.adjust(DateTime(2020,1,24,10,10,10)); // Ajustement manuelle
// Ex: 10 Janvier 2020 à 10:00:00:
// rtc.adjust(DateTime(2020, 1, 10, 10, 0, 0));
}
}
void loop ()
{
// Lecture du module RTC
GetDateHeure(DateHeure);

// Affichage de la date
Serial.print(DateHeure[3],DEC);
Serial.print('/');
Serial.print(DateHeure[4],DEC);
Serial.print('/');
Serial.print(DateHeure[5],DEC);

// Le jour de la semaine
Serial.print(", "); Serial.print(JoursSem[(DateHeure[3] + 3) % 7]);Serial.print(" ");

// Affichage de l'heure
Serial.print(DateHeure[2]),DEC;
Serial.print(':');
Serial.print(DateHeure[1],DEC);
Serial.print(':');
Serial.print(DateHeure[0],DEC);
Serial.println();

// Délai
delay(1000);

}

void GetDateHeure(word *DateHeure)
{
// Lecture du module RTC
DateTime now = rtc.now();

// Récupération de la date
DateHeure[5]=now.year(); // Années
DateHeure[4]=now.month(); // Mois
DateHeure[3]=now.day(); // Jours

// Récupérration de l'heure
DateHeure[2]=now.hour(); // Heures
DateHeure[1]=now.minute(); // Minutes
DateHeure[0]=now.second(); // Secondes
}

Autres projets Arduino

2 réponses sur « Projet Module RTC avec Arduino – DS1307 »

Laisser un commentaire