Bonjour,
J'ai débuté en programmation avec Arduino il y a quelques semaines. (Ce programme inscrit sur une SD l'ouverture ou la fermeture d'une porte et enregistre l'heure)
Après de nombreux déboires et difficultés, le programme ci-après à bien fonctionné mais, aujourd’hui, en essayant de le téléverser sur un Arduino UNO neuf, j’ai le message suivant : RTC_DS1307 does not name a type.
Cet Arduino fonctionne correctement avec d'autres programmes.
Quelqu’un peut-il m’aider ? Je n'ai pas trouvé l'erreur !
Merci et cordialement à tous.
Code:/* mardi 20 août à 19 h 11 ** Étape 32 ** MOSI - pin 11 ** MISO - pin 12 ** CLK - pin 13 ** CS - pin 4 ** DS1307 sur analog 4 et 5 */ #include <SD.h> #include <Wire.h> #include "RTClib.h" RTC_DS1307 RTC; const int chipSelect = 4; const int FERMETURE=0; // constante état de l'ILS const int OUVERT=1; // constante état de l'ILS const int ILS=2; //declaration constante de la broche ILS const int LEDVERT=3; //declaration constante de la broche FERMETURE const int LEDROUGE=6; //declaration constante de la broche OUVERT // Déclaration des variables globales int ETAT_ILS=0; // variable d'état de la porte surveillée int LAST_ILS; // variable d'etat au passé int a=1; // Initialisation des fonctionnalités utilisées void enregistrer(int etat); // VI - FONCTION SETUP // C’est le code d'initialisation. La fonction setup () est exécutée en premier et 1 seule fois, au démarrage du programme void setup() { // debut de la fonction setup() pinMode(ILS, INPUT); //met la broche en entrée pinMode(LEDVERT, OUTPUT); //met la broche 3 en sortie pinMode(LEDROUGE, OUTPUT); //met la broche 6 en sortie digitalWrite(ILS, HIGH) ; // activation du pullup de la broche en entrée // Open serial communications and wait for port to open: Serial.begin(57600); Wire.begin(); RTC.begin(); if (! RTC.isrunning()) { Serial.println("RTC introuvable!"); // commenter la ligne suivante quand le bon fonctionnement du module est constaté RTC.adjust(DateTime(__DATE__, __TIME__)); } Serial.print("Initialisation de la carte..."); // make sure that the default chip select pin is set to // output, even if you don't use it: pinMode(10, OUTPUT); if (!SD.begin(chipSelect)) { Serial.println("Absence de la carte !"); return; } Serial.println("carte SD correcte."); File dataFile = SD.open("datalog.txt", FILE_WRITE); if (dataFile) { dataFile.print("No"); dataFile.print(";"); dataFile.print("Temps"); // temps depuis que l'arduino est allumé. Remplacer plus tard avec l'implantation d'une vrai horloge dataFile.print(";"); dataFile.print("Action"); dataFile.print(";"); dataFile.print("Heure"); dataFile.println(";");//saut de ligne dataFile.close(); } // if the file isn't open, pop up an error: else { Serial.println("error opening datalog.txt"); } LAST_ILS=ETAT_ILS; } // fin de la fonction setup() // VII - FONCTION LOOP // la fonction loop coeur du programme () s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension void loop(){ // debut de la fonction loop() // Instructions à exécuter par le programme principal ETAT_ILS=digitalRead(ILS); // lit l'état du BP et met la valeur 0/1 dans la variable if (LAST_ILS!=ETAT_ILS) { enregistrer(ETAT_ILS); } LAST_ILS=ETAT_ILS; if (ETAT_ILS==FERMETURE){ // si la porte est fermée (c’est-à-dire si la variable état ILS = 0 // Attention à bien utiliser == et non = digitalWrite(LEDROUGE,0); // allume la LED ROUGE delay (100); digitalWrite(LEDVERT,1); // éteint la LED VERT delay(100); } else { // sinon (c’est-à-dire si variable état ILS=1) digitalWrite(LEDROUGE,1); // éteint la LED ROUGE delay(100); digitalWrite(LEDVERT,0); // allume la LED VERT delay(3000); } } // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin void enregistrer(int etat) { DateTime now = RTC.now(); // open the file. note that only one file can be open at a time, // so you have to close this one before opening another. File dataFile = SD.open("datalog.txt", FILE_WRITE); // if the file is available, write to it: if (dataFile) { dataFile.print(a); dataFile.print(" ; "); dataFile.print(millis()); dataFile.print(" ; "); if (etat==1) { dataFile.print("fermeture"); } else { dataFile.print("ouverture"); } dataFile.print(" ; "); dataFile.print(now.day(), DEC); dataFile.print('/'); dataFile.print(now.month(), DEC); dataFile.print('/'); dataFile.print(now.year(), DEC); dataFile.print(' '); dataFile.print(now.hour(), DEC); dataFile.print(':'); dataFile.print(now.minute(), DEC); dataFile.print(':'); dataFile.print(now.second(), DEC); dataFile.println(";"); dataFile.close(); a++; // print to the serial port too: Serial.println(etat); } // if the file isn't open, pop up an error: else { Serial.println("erreur ouverture datalog.txt"); } }
-----