sketch demo DS3231 plantage

Bonsoir a tous,
désolé de venir polluer ce forum mais je sèche…

ayant vu au fils des discutions des sketch dont certaines fonctions m’ intéressement j’ai chargé les exemples et j’essaye de les tester sauf que… ca merdouille et je ne comprends pas!

Origine du Sketch

/*
  DS3231: Real-Time Clock. Temperature example
  Read more: www.jarzebski.pl/arduino/komponenty/zegar-czasu-rzeczywistego-rtc-ds3231.html
  GIT: https://github.com/jarzebski/Arduino-DS3231
  Web: http://www.jarzebski.pl
  (c) 2014 by Korneliusz Jarzebski
*/

#include <Wire.h>
#include <DS3231.h>

DS3231 clock;
RTCDateTime dt;

void setup()
{
  Serial.begin(9600);

  // Initialize DS3231
  Serial.println("Initialize DS3231");;
  clock.begin();
}

void loop()
{
  // The temperature registers are updated after every 64-second conversion.
  // If you want force temperature conversion use forceConversion()
  clock.forceConversion();

  Serial.print("Temperature: ");
  Serial.println(clock.readTemperature());

  delay(1000);
}

et tous les exemples de sketch me donne le même type d’erreur

sketch_mar10a:13:1: error: 'RTCDateTime' does not name a type; did you mean 'DateTime'?

 RTCDateTime dt;

 ^~~~~~~~~~~

 DateTime

C:\Users\freddy\Documents\Arduino\sketch_mar10a\sketch_mar10a.ino: In function 'void setup()':

sketch_mar10a:21:9: error: 'class DS3231' has no member named 'begin'

   clock.begin();

         ^~~~~

C:\Users\freddy\Documents\Arduino\sketch_mar10a\sketch_mar10a.ino: In function 'void loop()':

sketch_mar10a:28:9: error: 'class DS3231' has no member named 'forceConversion'

   clock.forceConversion();

         ^~~~~~~~~~~~~~~

sketch_mar10a:31:24: error: 'class DS3231' has no member named 'readTemperature'; did you mean 'getTemperature'?

   Serial.println(clock.readTemperature());

                        ^~~~~~~~~~~~~~~

                        getTemperature

exit status 1
'RTCDateTime' does not name a type; did you mean 'DateTime'?

je précise que mon ds3231 fonctionne bien avec la lib “RTClib” (avec mon autre sketch

Merci

La librairie Arduino-DS3231 définit une classe RTCDateTime.

Alors si tu veux bosser avec la librairie Arduino-DS3231, tu l'installes et tu pourra compiler ses exemples.

Les exemples de la librairie X ne se compilent pas avec le code de la librairie Y.

Il est à noter également que le compilateur ne signale pas d’erreur sur #include <DS3231.h>

Donc je pense que tu as installé une autre librairie DS3231.

Si tu penses installer toutes les librairies DS3231 de l’univers pour les essayer, tu vas au delà de graves ennuis.

Je ne vois pas ce qui te manque dans la librairie RTClib que l’on t’a conseillé ici :

Vire toutes les autres et tout rentrera dans l’ordre.

ce qui me plaisait c’était la possibilité de formater facilement l'affichage de l'heure

  Serial.print("Long number format:          ");
  Serial.println(clock.dateFormat("d-m-Y H:i:s", dt));

  Serial.print("Long format with month name: ");
  Serial.println(clock.dateFormat("d F Y H:i:s",  dt));

mais bon.. je l'ai viré!!

Merci hbachetti! bonne soirée

Il faut bien que tu comprennes une chose : si tu installes plusieurs librairies DS3231, pas mal d'entre elles possèdent un fichier nommé DS3231.h
Si tu installes deux librairies possédant chacune un fichier DS3231.h tu provoques une ambiguïté, et l'IDE ARDUINO prend le premier qu'il trouve.

Donc si tu compiles ton exemple précédent il faut installer la librairie à laquelle appartient cet exemple.

Par contre si tu avais installé auparavant une autre librairie possédant un fichier DS3231.h tu dois la virer.

La librairie RTClib ne pose pas de problème car son fichier header s'appelle RTClib.h

Bonjour,

je crois que l'on a tous vécu ce genre de situation : un foultitude de bibliothèques portant le même nom. On charge la première venue, on lance le sketch de démo et ça plante avec le type de message d'erreur cité.

pour les modules ds3231 on trouve des DS3231.h mais aussi des ds3231.h majuscule, minuscule, c'est franchement déroutant quand on débute.

Je pense qu'il faut bien lire les recommandations jeter un œil sur le contenu des bibliothèques, et pour une bibliothèque donnée, tester avec l'exemple donné. GitHub est une mine, il faut y passer un peu de temps avant de se lancer dans la compil.

Pour tester différentes bibliothèques il y a un moyen simple : ne surtout pas les mettre dans le répertoire “libraries” créé par l’IDE sinon c’est le foutoir et cela ne fonctionne pas.

La seule différence entre les bibliothèques et la programmation en fichiers séparés c’est l’endroit où sont rangés les fichier h et cpp.

Tu peux très bien procéder ainsi :

  1. tu créé ton fichier ino => l’IDE crée un répertoire du même nom
  2. dans ce répertoire, à coté du fichier ino, tu copies les fichiers h et cpp de la bibliothèque que tu veux essayer
  3. tu relance l’IDE pour qu"elle prenne en compte les nouveau fichiers

et maintenant tu n’écris plus :
#include <bibliotheque.h>
mais :
#include “bibliotheque.h” => l’IDE va chercher dans le répertoire courant au lieu d’aller dans ses répertoires habituels.

Une fois UNE bibliothèques choisie tu l’installe classiquement.

certains tutos pour débutants expliquent aussi qu'il faut créer un répertoire "libraries" dans le dossier des croquies C:\Users\UserName\Documents\Arduino ? ce que je n'ai jamais fait

par la methode : croquis>inclure biblio>gerer les bibliotheques OU "ajouter la biblio ZIP", elle sera installée dans "C:\Program Files\Arduino\libraries", sans compter celles qui s'installent
"C:\Users\UserName\AppData\Local\Arduino15\staging\libraries" si on installe des cartes tiers : esp82, digispark, attinycore, minicore, etc...