Bonjour à tous,
Je suis bloqué dans mon projet avec ce que je suppose une incompatibilité, mais je ne vois pas trop où.
J’ai besoin d’une interruption toutes les minutes pour effectuer la procédure « Ecriture() »
Pour ce faire, j’utilise la librairie https://playground.arduino.cc/Main/MsTimer2
MsTimer2::set(60000, Ecriture);
Cela fonctionne très bien, merci.
Dans cette procédure, il me faut la date et heure et j’ai donc une horloge RTC DS3231. avec une fonction qui fait merveille :
void DateHeure() {
DateTime now = rtc.now();
sprintf (cDate, "%02d/%02d/%04d %02d:%02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second());
}
Elle place l’heure dans « char cDate[20]; » définie en haut.
Mais quand je fais fonctionner les deux ensemble, l’Arduino plante et se fige.
Pouvez-vous me donner une indication ?
Le code complet :
// ########################################################################
// RTC - horloge
#include <Wire.h> //include Wire.h library
#include "RTClib.h" //include Adafruit RTC library
RTC_DS3231 rtc; //Make a RTC DS3231 object
// ########################################################################
// ########################################################################
// Gestion de l'interruption du Timer 2 pour l'écriture du tableau toutes les minutes
// https://playground.arduino.cc/Main/MsTimer2
#include <MsTimer2.h>
// ########################################################################
char cDate[20]; //date et heure textuelle complète jj/mm/aaaa hh:mm:ss
void setup() {
Serial.begin(115200);//make it fast so it dumps quick!
//========== RTC
//Print the message if RTC is not available
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
//Setup of time if RTC lost power or time is not set
if (rtc.lostPower()) {
//Sets the code compilation time to RTC DS3231
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
} //==========
//============= Interruption Timer2
MsTimer2::set(10000, Ecriture); // Toutes les 10000 ms (10 secondes) lance la procédure Ecriture
MsTimer2::start(); // Démarre le processus
//==============
DateHeure();
Serial.println(cDate);
}
void loop() {
}
void DateHeure() {
DateTime now = rtc.now();
sprintf (cDate, "%02d/%02d/%04d %02d:%02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second());
}
void Ecriture() {
DateHeure();
Serial.println(cDate);
Serial.println("Toto");
}
À vous lire et avec mes remerciement anticipés