DS3231_Handler

drivers
drivers/DS3231_Handler.h
driver stable stable

Driver DS3231 RTC Gestion de l'horloge temps réel DS3231 Fonctionnalités : /

Méthodes publiques

Méthode Description Paramètres Retour
DS3231_Handler()
DS3231_Handler();
Constructeur Initialise l'objet handler pour la RTC. /
begin()
begin();
Méthode begin() Initialise le composant DS3231 et configure éventuellement la pin d'interruption pour les alarmes. /
now()
now();
Lecture de l'heure Retourne l'heure courante sous forme d'objet DateTime /
setTime()
setTime(const DateTime& dt);
Réglage de l'heure Définit l'heure courante du DS3231. / dt: : objet DateTime contenant l'heure à régler /
setAlarmInMinutes()
setAlarmInMinutes(uint8_t minutes);
Réglage d'une alarme Définit une alarme à déclencher dans un nombre de minutes / minutes: : délai avant déclenchement de l'alarme /
isAlarmTriggered()
isAlarmTriggered();
Vérification alarme Indique si l'alarme a été déclenchée / true
true si l'alarme est active, false sinon /
clearAlarm()
clearAlarm();
Effacement de l'alarme Réinitialise le flag d'alarme et la pin d'interruption /

Méthodes privées


            begin(115200);;
begin();;
setAlarmInMinutes(1);;
now();;
print("/");;
print("/");;
print(" ");;
print(":");;
print(":");;
println("⏰ Alarme déclenchée !");;
clearAlarm();;
delay(1000);;

                    

Variables membres


            RTC_DS3231 rtc;
uint8_t _interruptPin;
bool alarmFlag;

                    

Code source


        #pragma once

#include <Arduino.h>
#include "../StatusDevice.h"
#include <RTClib.h>

namespace crepp::drivers {

/*
 * =========================
 * Driver DS3231 RTC
 * -------------------------
 * Gestion de l'horloge temps réel DS3231
 * 
 * @badge driver
 * @badge stable
 * 
 * Fonctionnalités :
 * - Initialisation de la RTC
 * - Lecture et réglage de l'heure
 * - Alarmes avec interruption
 * =========================
 */
class DS3231_Handler {
public:
    /*
     * =========================
     * Constructeur
     * =========================
     * Initialise l'objet handler pour la RTC.
     */
    DS3231_Handler();

    /*
     * =========================
     * Méthode begin()
     * =========================
     * Initialise le composant DS3231 et configure éventuellement
     * la pin d'interruption pour les alarmes.
     */
    void begin();

    /*
     * =========================
     * Lecture de l'heure
     * =========================
     * Retourne l'heure courante sous forme d'objet DateTime
     */
    DateTime now();

    /*
     * =========================
     * Réglage de l'heure
     * =========================
     * Définit l'heure courante du DS3231.
     * @param dt : objet DateTime contenant l'heure à régler
     */
    void setTime(const DateTime& dt);

    /*
     * =========================
     * Réglage d'une alarme
     * =========================
     * Définit une alarme à déclencher dans un nombre de minutes
     * @param minutes : délai avant déclenchement de l'alarme
     */
    void setAlarmInMinutes(uint8_t minutes);

    /*
     * =========================
     * Vérification alarme
     * =========================
     * Indique si l'alarme a été déclenchée
     * @return true si l'alarme est active, false sinon
     */
    bool isAlarmTriggered();

    /*
     * =========================
     * Effacement de l'alarme
     * =========================
     * Réinitialise le flag d'alarme et la pin d'interruption
     */
    void clearAlarm();

private:
    RTC_DS3231 rtc;           ///< Objet RTC interne
    uint8_t _interruptPin;    ///< Pin utilisée pour l'interruption
    volatile bool alarmFlag;  ///< Flag interne pour alarme
};

/*
@example

@include
#include <crepp/drivers/DS3231_Handler.h>
@end_include

@instance
crepp::drivers::DS3231_Handler rtc;
@end_instance

@setup
  Serial.begin(115200);
  rtc.begin();

  // Réglage manuel de l'heure (exemple)
  rtc.setTime(DateTime(2026, 1, 1, 12, 0, 0));

  // Déclenche une alarme dans 1 minute
  rtc.setAlarmInMinutes(1);
@end_setup

@loop
  DateTime now = rtc.now();
  Serial.print(now.year());
  Serial.print("/");
  Serial.print(now.month());
  Serial.print("/");
  Serial.print(now.day());
  Serial.print(" ");
  Serial.print(now.hour());
  Serial.print(":");
  Serial.print(now.minute());
  Serial.print(":");
  Serial.println(now.second());

  if (rtc.isAlarmTriggered()) {
      Serial.println("⏰ Alarme déclenchée !");
      rtc.clearAlarm();
  }

  delay(1000);
@end_loop

@end_example
*/

} // namespace crepp::drivers