pourriez vous m'aider avec mon code. cela est la premiere fois que j'utilise un module ds1302 et je ne comprend pas encore trop les message d'erreur géneré pourriez vous m'aider a les décrypter:
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino: In function 'void setup()':
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:37:6: error: 'class DS1302' has no member named 'setDOW'
rtc.setDOW(SATURDAY);
^~~~~~
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:37:13: error: 'SATURDAY' was not declared in this scope
rtc.setDOW(SATURDAY);
^~~~~~~~
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:38:6: error: 'class DS1302' has no member named 'setTime'; did you mean 'time'?
rtc.setTime(17, 17, 0);
^~~~~~~
time
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:39:6: error: 'class DS1302' has no member named 'setDate'
rtc.setDate(14, 06, 2025);
^~~~~~~
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino: In function 'void loop()':
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:44:20: error: 'class DS1302' has no member named 'getHours'
currentHour = rtc.getHours();
^~~~~~~~
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:45:22: error: 'class DS1302' has no member named 'getMinutes'
currentMinute = rtc.getMinutes();
^~~~~~~~~~
C:\Users\alexi\AppData\Local\Temp\.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:46:22: error: 'class DS1302' has no member named 'getSeconds'
currentSecond = rtc.getSeconds();
^~~~~~~~~~
exit status 1
Compilation error: 'class DS1302' has no member named 'setDOW'
et voici le code en question:
// Inclure les bibliothèques nécessaires
#include <DS1302.h> // Bibliothèque pour le module DS1302
#include <LiquidCrystal.h> // Bibliothèque pour l'écran LCD 1602A
#include <DHT.h> // Bibliothèque pour le capteur DHT11
// Définir les broches pour le module DS1302
#define DS1302_CLK 2
#define DS1302_DAT 3
#define DS1302_RST 4
// Définir les broches pour le relais et le bouton
#define RELAY_PIN 5
#define BUTTON_PIN 6
// Définir les broches pour le capteur DHT11
#define DHT_PIN 7
// Initialiser les objets pour le module DS1302, l'écran LCD et le capteur DHT11
DS1302 rtc(DS1302_CLK, DS1302_DAT, DS1302_RST);
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
DHT dht(DHT_PIN, DHT11);
// Variables pour stocker l'heure actuelle et l'état du bouton
int currentHour, currentMinute, currentSecond;
int buttonState;
void setup() {
// Définir la broche du relais comme sortie
pinMode(RELAY_PIN, OUTPUT);
// Définir la broche du bouton comme entrée
pinMode(BUTTON_PIN, INPUT);
// Initialiser l'écran LCD
lcd.begin(16, 2);
// Définir l'heure initiale du module DS1302
rtc.writeProtect(false);
rtc.halt(false);
rtc.setDOW(SATURDAY);
rtc.setTime(17, 17, 0);
rtc.setDate(14, 06, 2025);
}
void loop() {
// Obtenir l'heure actuelle du module DS1302
currentHour = rtc.getHours();
currentMinute = rtc.getMinutes();
currentSecond = rtc.getSeconds();
// Obtenir l'état du bouton
buttonState = digitalRead(BUTTON_PIN);
// Vérifier s'il est temps d'activer la pompe
if (currentHour == 21 && currentMinute == 0 && currentSecond == 0) {
// Activer la pompe en allumant le relais
digitalWrite(RELAY_PIN, HIGH);
// Attendre 5 minutes
delay(300000);
// Éteindre le relais
digitalWrite(RELAY_PIN, LOW);
}
// Vérifier si le bouton est enfoncé
if (buttonState == LOW) {
// Activer la pompe en allumant le relais
digitalWrite(RELAY_PIN, HIGH);
} else {
// Éteindre le relais
digitalWrite(RELAY_PIN, LOW);
}
// Lire la température et l'humidité à partir du capteur DHT11
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// Afficher la température et l'humidité sur l'écran LCD
lcd.clear();
// Écrire la température sur la ligne supérieure, centrée
lcd.setCursor((16 - String(temperature).length()) / 2, 0);
lcd.print(temperature);
lcd.print("°C");
// Écrire l'humidité sur la ligne du bas, centrée
lcd.setCursor((16 - String(humidity).length()) / 2, 1);
lcd.print(humidity);
lcd.print("%");
// Attendre 1 minute avant d'actualiser l'affichage
delay(60000);
}
// Code provenant de :
// - Bibliothèque DS1302 : https://github.com/msparks/arduino-ds1302
// - Bibliothèque LiquidCrystal : https://www.arduino.cc/en/Reference/LiquidCrystal
// - Bibliothèque DHT : https://github.com/adafruit/DHT-sensor-library
Le message est clair ; le compilateur ne trouve pas la méthode "setDOW".
Il faut toujours regarder la première erreur indiquée.
Souvent une erreur provoque des faux positifs dans tout le code qui suit l'erreur.
As tu chargé la bibliothèque dans l'IDE avant de compiler ?
Est-ce la bibliothèque qui correspond au code ?
Très probablement NON a une ou aux deux questions..
// Example sketch for interfacing with the DS1302 timekeeping chip.
//
// Copyright (c) 2009, Matt Sparks
// All rights reserved.
//
// http://quadpoint.org/projects/arduino-ds1302
#include <stdio.h>
#include <DS1302.h>
namespace {
// Set the appropriate digital I/O pin connections. These are the pin
// assignments for the Arduino as well for as the DS1302 chip. See the DS1302
// datasheet:
//
// http://datasheets.maximintegrated.com/en/ds/DS1302.pdf
const int kCePin = 5; // Chip Enable
const int kIoPin = 6; // Input/Output
const int kSclkPin = 7; // Serial Clock
// Create a DS1302 object.
DS1302 rtc(kCePin, kIoPin, kSclkPin);
String dayAsString(const Time::Day day) {
switch (day) {
case Time::kSunday: return "Sunday";
case Time::kMonday: return "Monday";
case Time::kTuesday: return "Tuesday";
case Time::kWednesday: return "Wednesday";
case Time::kThursday: return "Thursday";
case Time::kFriday: return "Friday";
case Time::kSaturday: return "Saturday";
}
return "(unknown day)";
}
void printTime() {
// Get the current time and date from the chip.
Time t = rtc.time();
// Name the day of the week.
const String day = dayAsString(t.day);
// Format the time and date and insert into the temporary buffer.
char buf[50];
snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
day.c_str(),
t.yr, t.mon, t.date,
t.hr, t.min, t.sec);
// Print the formatted string to serial so we can see the time.
Serial.println(buf);
}
} // namespace
void setup() {
Serial.begin(9600);
// Initialize a new chip by turning off write protection and clearing the
// clock halt flag. These methods needn't always be called. See the DS1302
// datasheet for details.
rtc.writeProtect(false);
rtc.halt(false);
// Make a new time object to set the date and time.
// Sunday, September 22, 2013 at 01:38:50.
Time t(2013, 9, 22, 1, 38, 50, Time::kSunday);
// Set the time and date on the chip.
rtc.time(t);
}
// Loop and print the time every second.
void loop() {
printTime();
delay(1000);
}
PS : les messages d’erreur mettent clairement en évidence des problèmes dans le code par rapport à la bibliothèque utilisée. Le lien donné par @duarte0512 confirme cette situation maintenant il y a peut-être d’autres problèmes mais ils ne sont pas listés ici .
Bonjour.
oui mon code a été généré par une ia j'essaie d'apprendre a codé mais ce n'est pas simple. pourtant je ne comprend pas que l'ia me donne le lien de téléchargement des bibliotheque et que l'orsque j'installe cette derniere il me dise que ce n'est pas le bonne. je vais essayer via votre code,
oui j'ai bien telecharger la bibliotheque via le lien que le générateur de code m'a donner et j'ai importer le zip dans l'ide avant de compilér. mais j'ai comme l'impression que le générateur c'est trompé dans la bibliotheque et que je ne sait comment reparer son code avec mes notion vraiment tres limité de codage arduino.
Je pense que vous n'avez pas suffisamment de connaissances pour faire un bon usage de l'IA.
Essayez de vous former et surtout commencez par respecter les règles du forum:
Formatage du code
Présentation des messages d'erreurs
Utilisation des liens fournis vers les sites qui permettent de vous former ...
C'est la deuxième fois que je vous demande de formater votre code mais vous ne cherchez même pas à savoir comment vous y prendre C'est déjà une mauvaise approche.
Ce que vous relatez exprime clairement une inadéquation entre la bibliothèque et votre code.
Il arrive que l'IA donne du code qui ne compile pas, il ne faut pas en rester là, mais poursuivre le chat en indiquant:
Le programme fourni génère cette erreur:
C:\Users\alexi\AppData\Local\Temp.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino: In function 'void setup()':
C:\Users\alexi\AppData\Local\Temp.arduinoIDE-unsaved2025514-23532-dik3g.0t27a\sketch_jun14a\sketch_jun14a.ino:37:6: error: 'class DS1302' has no member named 'setDOW'
rtc.setDOW(SATURDAY);
^~~~~~
et l'IA te fournira le correctif.
C'est ainsi que je pratique avec ChatGPT.
j'ai édité le premier post, @duarte0512 avait essayé de mettre les balises de code mais il les avait mal positionnées. Les 3 back-ticks doivent être avant et après le code (ou la sortie du compilateur en rajoutant text à côté ```text pour dire que la section qui suit est un bloc en police a espacement fixe mais pas du code)/
Sinon oui, il faut utiliser la bonne bibliothèque et essayer de se former un peu plutôt que de faire une confiance aveugle dans chatGPT....
Bonjour @J-M-L
Personnellement, je dirai plutôt qu'il faut savoir s'en servir et être capable de contourner ses lacunes puisque pour l'instant l'IA en a quelques unes (quoique dans le cas présent et pour avoir testé je vois plus les lacunes du côté du demandeur ce qui bien sûr n'est pas un reproche)
En fait c'est effectivement une confiance aveugle mais avec des nuances.
Oui mais dans ce cas si on ne vois pas de résultat, on demande comment faire Après je ne veux pas écraser ce pauvre @duarte0512 avec des reproches mais je veux juste lui montrer la bonne direction.
Bonne journée @J-M-L
PS : ça faisait longtemps que l'on ne s'était pas croisé sur le forum et c'est toujours un plaisir d'échanger avec vous
Oui c'est vrai je vous remercie apres j'utilise pas vraiment d'assistant ia au sens large du therme, jutilise juste le site: code générator for arduino, et il est vrai que il possède quand même pas mal de lacune mais je pense que comme vous me l'avez conseillé je vais essayer de travaillé en plus avec chat gpt ou une autre pour trouver les réponses au problèmes
Lors de mon dernied post, mon dernied messages a etait je ne sait pas comment faire et il concernait belle et bien votre message sur la mise en forme sur le forum or je n'ai jamais eu de reponse sur ce point du coup je fait avec tâtonnement en assayant de faire au mieux dans l'attente du réponse. Déjà j'ai suivie votre premier conseils en mettant dans le groupe français, maintenant plus qu'à attendre vos autres conseils.
Avec l'IA (j'utilise avant tout ChatGPT), il faut expliquer ce que l'on désire faire (pour faire simple je m'adresse à l'IA comme si c'était une personne), avec quels composants, en lui indiquant même certaines préférences comme le numéro de certaines pin, par exemple ou une certaine bibliothèque ou que tu ne veux pas de temposisation avec delay() etc.
Essayer sa première proposition, continuer le chat en demandant des améliorations ou en signalant une erreur de compilation (copier le début du message et le coller dans la suite du chat, ainsi, de fils en aiguilles, tu peux construire ton application.
Je débute toujours un nouveau Chat par En Arduino: ainsi on est sûre d'avoir un sketch "format Arduino"
A la fin de la réponse de ChatGPT, il y a toujours des propositions très intéressantes, donnes toi la peine de les lires voir même d'en tenir compte, c'est souvent un petit plus dans ton programme.
Le mieux est que tu te crée un compte ChatGPT afin de garder le fil de ton chat.
Merci bien pour votre bienveillance certe vous êtes de bon conseils mais le faite de rabaissé quelqu'un qui ne cherche que a apprendre n'est vraiment pas quelque chose de correct, quand vous me dite que c'est l'hopital qui ce fous de la charité moi je vous repond que si je savait coder je n'utiliserai pas d'ia et que si je n'avait pas envie d'apprendre je ne viendrait pas sur ce genre de forum pour comprendre le code que m'a généré l'ia, certe j'ai dit que elle avait des lacunes mais si je l'utilise c'est que pour le moment je ne suis pas capable de sortir le meme travail qu'elle, mais c'est sur que ce n'est pas avec vos encouragement que je vais avoir l'envie et la soif d'apprentissage. Cela est bien dommage car vous m'avais l'aire d'avoir une tres tres bonne connaissance et d'avoir beaucoup de tres bon conseils a donner mais il faut savoir les dire sans rabaisser les autres
Je vous remercie beaucoup pour vos conseils et votre temps et surtout votre patience, je vaos mettre en pratique vos conseils sur mon prochain projet car celui ci est presque achevée.
C’est vous qui vous rabaissez tout seul ou qui vous mettez dans une situation délicate notamment en mettant en évidence les lacunes de l’IA alors que vous n’avez aucune expérience je suis passé par où vous passez et même si vous me percevez comme vous rabaissant ou utilisant un ton condescendant, vous faites erreur
Je n’ai jamais eu de retour négatif à l’égard des membres du forum qui m’ont aidé même si la façon dont ils me guidaient était parfois un peu raide car c’était justifié. Il me semble que je suis resté courtois avec vous.
Mais peu importe, je ne vous en veux pas. Essayez simplement de rester à votre place : celle de quelqu’un qui part de rien et qui cherche à apprendre même si la position est délicate et difficile
PS : Bon et en plus @jpbbricole vous a bien aidé. C’est le plus sympathique du forum, toujours prêt à rendre service. Donc tout va bien