Bonjour ,
Dans le cadre d'un projet , je dois réaliser un. code afin de prioriser les messages d'un fichier . Il me faut , quand je lit le contenu d'un fichier dans l'Arduino , sur le moniteur série , prioriser les messages . Par exemple :
Date;Heure;Message
15/01/20;8h00;Reveil
;8h30;Dejeuner
;8h50;Se laver les dents
;10h00;Récuperer le journal
;11h00;Allez faire les courses
;11h30;Preparer le repas
;14h00;Prendre un comprimé et un antibiotique
;16h05;Faire le menage
;18h00;Sortir le chien
;19h30;Preparer le diner
;20h50;Prendre les comprimés du soir
;21h15;Aller se coucher
Ici , mon role est d'afficher un seul message à la fois , et dans le meme fichier .
Plus tard sera connecté une horloge RTC , pour justement , lorsqu'il est 8h50 , sera affiché : Se laver les dents , et à 10h00 : récupérer le journal . et ainsi de suite .
Avez vous une idée ?
Merci beaucoup d'avance
Il suffirait de lire chaque ligne du fichier et de placer les informations dans un tableau de structures. Ensuite dans la loop(), parcourir la liste régulièrement :
#include <RTClib.h>
#define CALENDAR_SIZE 10 // SIZE à ajuster
struct calendar
{
DateTime at;
const char *message;
};
struct calendar myCalendar[CALENDAR_SIZE];
RTC_DS3231 rtc;
void setup()
{
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.println(__DATE__);
Serial.println(__TIME__);
}
// LIRE CONTENU SD dans myCalendar
}
unsigned long lastSec;
void loop()
{
DateTime now = rtc.now();;
if (lastSec != now.second()) {
lastSec = now.second();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
for (int i = 0 ; i < CALENDAR_SIZE ; i++) {
if (myCalendar[i].at == now) {
Serial.println(myCalendar[i].message);
}
}
}
}
Juste un brouillon non testé.
J’ai utilisé RTClib et un DS3231, mais rien n’empêche de faire cela avec une autre librairie.
La lecture SD est à faire.