Bonsoir à tous
Même si j'ai acquis une première expérience, surtout avec l'aide du présent forum, je reste encore très fragile et des questions probablement élémentaires me troublent encore.
Ça commence ici:
https://www.developpez.net/forums/d2.../#post11697133
où mon système fonctionne, et, l'hiver pointant le bout de son nez, je suis amené à commencer les programmations. L'équipement tourne depuis plusieurs mois, et comme attendu, l'horloge se décale et avait hier plus d'un quart d'heure d'avance avec une RTC DS1307.
Après recherches pour savoir comment je mettais à l'heure, j'ai retrouvé ce sketch, qui ne fait que ça (la remise à l'heure), avec une date/heure écrite en hard dans le listing.
Voulant rendre le sketch un peu plus pratique, et envisager d'introduire la fonction dans mon programme principal, j'ai essayé de compléter ce sketch par les fonctions d'affichage de mon programme principal pour les ajouter, et là, rien à faire. J'ai des séries d'erreurs incompréhensibles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 /* ------------------------------------------------------------------ // MettreALheure.ino devrait finir avec toutes les fonctions 17 juin 2021 // provient de la version 02 globale // je veux ajouter de quoi mettre à l'heure et la date // pour exploiter le DS1307 en horloge et en RAM // Pour mise à l'heure, changer (actualiser) ligne 52 et lancer // Test_01_1307.ino 2 mai 2021 Lecture date/heure sur SD1307 --------------------------------------------------------------------- */ #include<Wire.h> #include <RTClib.h> // les guillemets pour placer la .lib dans le dossier .ino // variables globales int Annee ; int Mois ; int Jour ; int Heure ; int Minute ; int Seconde ; char octetLu ; RTC_DS1307 RTC ; // void printDateTime ( DateTime dateTime ) ; // affichage incertain et faux void setup () { // put your setup code here, to run once: Serial.begin ( 115200 ) ; Wire.begin () ; RTC.begin () ; } void loop () { // put your main code here, to run repeatedly: if ( Serial.available () > 0 ) { int instruct = Serial.read () ; switch (instruct) { case'D': { DateTime now = RTC.now () ; printDateTime(now); break; } case'S': { // RTC.set ( RTC_MONTH , 6 ) ; // juin // refuse le .set // RTC.set ( RTC_HOUR , 9 ) ; // 9 heures RTC.adjust ( DateTime ( 2021 , 10, 17 , 10 , 46 , 0 ) ) ; // chaîne de mise à l'heure // affiche le résultat DateTime now = RTC.now () ; printDateTime(now); break; } } } delay ( 5000 ) ; }
Pour garantir que mes fonctions d'affichage seront bien reconnues, je me suis lancé dans l'opération inverse: partir du programme principal et n'y porter que les quelques fonctions, pour l'instant soumises à réponse à une frappe de clavier (le S), mais là non plus la compilation se passe mal, et je ne parviens pas à aboutir.
Dans ce nouveau monde, les fonctions/variables utilisant les termes RTC set DateTime now ... sont refusés comme non utilisables. Leur suppression totale finit par déclarer le programme incompatible UNO. :-(
Or moi, ce que je voudrais, c'est partant de la date/heure présente, créer des termes annee, jour, mois, heure, minute ajustés en mémoire, et, sur validation par un poussoir, envoyer la séquence avec ces termes à un équivalent de la fonction RTC.adjust.
Avez-vous une idée de ce que je fais mal?
Édit: comme j'ai modifié mon programme principal jusqu'à supprimer tous défauts, mais sans relever les messages d'erreurs.
J'ai refait un premier jus et voici les erreurs:
C:\Users\Guy\Desktop\Mem_Arduino\Outils_de_gestion\Pour_MiseALheure\MettreALheure\MiseALheureInterne_V3\MiseALheureInterne_V3.ino: In function 'void loop()':
MiseALheureInterne_V3:221:26: error: 'RTC' was not declared in this scope
DateTime now = RTC.now () ;
^~~
MiseALheureInterne_V3:222:11: error: 'printDateTime' was not declared in this scope
printDateTime(now);
^~~~~~~~~~~~~
C:\Users\Guy\Desktop\Mem_Arduino\Outils_de_gestion\Pour_MiseALheure\MettreALheure\MiseALheureInterne_V3\MiseALheureInterne_V3.ino:222:11: note: suggested alternative: 'DateTime'
printDateTime(now);
^~~~~~~~~~~~~
DateTime
MiseALheureInterne_V3:230:10: error: 'RTC' was not declared in this scope
RTC.adjust ( DateTime ( 2021 , 10, 17 , 10 , 46 , 0 ) ) ; // chaîne de mise à l'heure
^~~
MiseALheureInterne_V3:234:11: error: 'printDateTime' was not declared in this scope
printDateTime(now);
^~~~~~~~~~~~~
C:\Users\Guy\Desktop\Mem_Arduino\Outils_de_gestion\Pour_MiseALheure\MettreALheure\MiseALheureInterne_V3\MiseALheureInterne_V3.ino:234:11: note: suggested alternative: 'DateTime'
printDateTime(now);
^~~~~~~~~~~~~
DateTime
exit status 1
'RTC' was not declared in this scope
Partager