Découvrez notre nouvelle Chaîne YouTube "Ingénierie & Bourse"

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


0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Anti-Robot *

You have successfully subscribed to the newsletter

There was an error while trying to send your request. Please try again.

FPGA | Arduino | Matlab | Cours will use the information you provide on this form to be in touch with you and to provide updates and marketing.