problème avec la bibliothèque DS1302.h

Helloooo,
Dans le cadre d'un projet de SI, je dois utiliser une horloge en temps réel DS1302. Elle marchez très bien jusqu'à ce que j'ai dus réinitialiser mon PC pour un soucis. Or, depuis j'ai réinstallez la librairie, et mon code ne marchait pas et m'affiche no matching function for call to 'Time::Time()'

J'ai donc essayez avec un code trouvez sur internet (code qui avait été mon code de test et qui marchait très bien avant).

J'ai donc besoin de votre aide pour comprendre d'où vient le problème :wink:

Voici le code en question :
// Nom script : phm_ds1302_serial_hard
// Creation : Le 03 06 2016
// Description : Initialisation date/heure puis boucle affichage
// Inspiré du script suivant :
// DS1302_Serial_Hard (C)2010 Henning Karlsen
// web: Electronics - Henning Karlsen
//
// Les connections suivantes doivent être effectuées DS1302.
// DS1302 patte RST -> Arduino Digital 2
// DS1302 patte DATA -> Arduino Digital 3
// DS1302 patte CLK -> Arduino Digital 4

#include <DS1302.h>

// Init DS1302
DS1302 rtc(2, 3, 4);

// Init structure Time-data
Time t;

void setup()
{
// Positionnement horloge a run-mode et desactive protection en ecriture
rtc.halt(false);
rtc.writeProtect(false);

// Init connection serie
Serial.begin(9600);

// Initialisation de l'horloge
// A mettre a jour avec les bones valeurs pour initialiser l horloge RTC DS1302
rtc.setDOW(FRIDAY); // Jour a FRIDAY
rtc.setTime(19, 10, 0); // Heure a 19:10:00 (format sur 24 heure)
rtc.setDate(3, 6, 2016); // Date au 3 juin 2016
}

void loop()
{
// recup donnees DS1302
t = rtc.getTime();

// Ecriture date sur console serie
Serial.print("Jour : ");
Serial.print(t.date, DEC);
Serial.print(" - Mois : ");
Serial.print(rtc.getMonthStr());
Serial.print(" - Annee : ");
Serial.print(t.year, DEC);
Serial.println(" -");

// Ecriture heure sur console serie
Serial.print("C est le ");
Serial.print(t.dow, DEC);
Serial.print(" ieme jour de la semaine (avec lundi le premier), et il est ");
Serial.print(t.hour, DEC);
Serial.print(" heures, ");
Serial.print(t.min, DEC);
Serial.print(" minutes ");
Serial.print(t.sec, DEC);
Serial.println(" secondes.");

// Affichage d un separateur
Serial.println("------------------------------------------");

// Attente d une seconde avant lecture suivante :slight_smile:
delay (1000);
}

Il faut que tu édites ton message pour mettre le code entre balises 'CODE' (elles apparaissent comme ceci dans l'éditeur </>).
Peux-tu donner l'ensemble du message d'erreur (un bouton de l'IDE permet de copier / coller ce message simplement) ?
Enfin es-tu sûr que rien d'autre n'a été effacé lors de la réinitialisation ? On dirait que le problème ne vient pas de la bibliothèque DS1302 mais des bibli installées avec l'IDE.

j'ai entièrement réinstallez arduino et j'ai réinstallez la librairie DS1302 et 3 autres librairie qui me serve dans mon projet.
Voici le message d'erreur en entier :
Arduino : 1.8.13 (Windows 10), Carte : "Arduino Uno"

test_horlgoe:19:6: error: no matching function for call to 'Time::Time()'

Time t;

^

In file included from C:\Users\valentin\Desktop\programme\test_horlgoe\test_horlgoe.ino:13:0:

C:\Users\valentin\Documents\Arduino\libraries\arduino-ds1302-master/DS1302.h:35:3: note: candidate: Time::Time(uint16_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, Time::Day)

Time(uint16_t yr, uint8_t mon, uint8_t date,

^~~~

C:\Users\valentin\Documents\Arduino\libraries\arduino-ds1302-master/DS1302.h:35:3: note: candidate expects 7 arguments, 0 provided

C:\Users\valentin\Documents\Arduino\libraries\arduino-ds1302-master/DS1302.h:13:7: note: candidate: constexpr Time::Time(const Time&)

class Time {

^~~~

C:\Users\valentin\Documents\Arduino\libraries\arduino-ds1302-master/DS1302.h:13:7: note: candidate expects 1 argument, 0 provided

C:\Users\valentin\Documents\Arduino\libraries\arduino-ds1302-master/DS1302.h:13:7: note: candidate: constexpr Time::Time(Time&&)

C:\Users\valentin\Documents\Arduino\libraries\arduino-ds1302-master/DS1302.h:13:7: note: candidate expects 1 argument, 0 provided

C:\Users\valentin\Desktop\programme\test_horlgoe\test_horlgoe.ino: In function 'void setup()':

test_horlgoe:32:7: error: 'class DS1302' has no member named 'setDOW'

rtc.setDOW(FRIDAY); // Jour a FRIDAY

^~~~~~

test_horlgoe:32:14: error: 'FRIDAY' was not declared in this scope

rtc.setDOW(FRIDAY); // Jour a FRIDAY

^~~~~~

test_horlgoe:33:7: error: 'class DS1302' has no member named 'setTime'; did you mean 'time'?

rtc.setTime(19, 10, 0); // Heure a 19:10:00 (format sur 24 heure)

^~~~~~~

time

test_horlgoe:34:7: error: 'class DS1302' has no member named 'setDate'

rtc.setDate(3, 6, 2016); // Date au 3 juin 2016

^~~~~~~

C:\Users\valentin\Desktop\programme\test_horlgoe\test_horlgoe.ino: In function 'void loop()':

test_horlgoe:40:11: error: 'class DS1302' has no member named 'getTime'; did you mean 'time'?

t = rtc.getTime();

^~~~~~~

time

test_horlgoe:46:20: error: 'class DS1302' has no member named 'getMonthStr'

Serial.print(rtc.getMonthStr());

^~~~~~~~~~~

test_horlgoe:48:18: error: 'class Time' has no member named 'year'; did you mean 'yr'?

Serial.print(t.year, DEC);

^~~~

yr

test_horlgoe:53:18: error: 'class Time' has no member named 'dow'

Serial.print(t.dow, DEC);

^~~

test_horlgoe:55:18: error: 'class Time' has no member named 'hour'; did you mean 'hr'?

Serial.print(t.hour, DEC);

^~~~

hr

exit status 1

no matching function for call to 'Time::Time()'

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Apparemment, la classe Time n'a pas de constructeur sans argument. (pas de Time::Time() )
Donc tu ne peux pas écrire

Time t;

il faut regarder dans le fichier DS1302.h quels sont les constructeurs de la classe Time et ce qu'il faut leur donner comme argument(s)
Peut-être que ceci marche :
Time t ( rtc.GetTime() );
?

Visiblement tu t'es trompé de bibliothèque DS1302, il en existe plusieurs qui ont le même nom.
Tu dois utiliser arduino-ds1302-master que je trouve ici et qui n'a pas les méthodes que tu utilises, d'où les messages d'erreur.
Par contre, il en existe une autre que je vois ici et qui les a. Par exemple :

#define MONDAY		1
#define TUESDAY		2
#define WEDNESDAY	3
#define THURSDAY	4
#define FRIDAY		5
#define SATURDAY	6
#define SUNDAY		7
...
class Time
{
public:
	uint8_t		hour;
	uint8_t		min;
	uint8_t		sec;
	uint8_t		date;
	uint8_t		mon;
	uint16_t	year;
	uint8_t		dow;


		Time();
};
...
	char	*getMonthStr(uint8_t format=FORMAT_LONG);

Donc, c'est celle-ci qu'il faut installer (après avoir désinstaller celle que tu as pour l'instant) et ça devrait régler tes problèmes. Tu peux la télécharger ici.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.