Où est l'erreur dans mon logiciel ?
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Où est l'erreur dans mon logiciel ?



  1. #1
    Arutuf6

    Où est l'erreur dans mon logiciel ?


    ------

    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");
      } 
    }

    -----

  2. #2
    Yoruk

    Re : Où est l'erreur dans mon logiciel ?

    Salut et bienvenue sur FUTURA.

    As tu vérifié que la librairie "RTClib.h" est bien installée ? (dossier "libraries" dans le répertoire d'installation ?)

    EDIT : As tu d'autres erreurs de compilation ? Je veux bien jeter un oeil sur ce que te renvoie la console...
    Dernière modification par Yoruk ; 12/10/2013 à 17h41.
    La robotique, c'est fantastique !

  3. #3
    nornand

    Re : Où est l'erreur dans mon logiciel ?

    c'est le nom de ta librairie qui n'est pas bon , j'ai jeté un oeil , le nom quand tu "dézippe" la librairie n'est pas bon , il faut la renommé RCTlib

    il y a d'autres erreurs plus bas .

  4. #4
    chimere322

    Re : Où est l'erreur dans mon logiciel ?

    c'est fou. Sur tous les forums que je consulte,pas un seul intervenant ne parle de la carte qu'il dispose et surtout de la version de l'IDE. J'ai une uno rev3 ou mega avec IDE version?
    Bien cordialement Jean Claude.

  5. A voir en vidéo sur Futura
  6. #5
    nornand

    Re : Où est l'erreur dans mon logiciel ?

    une carte uno neuve ! c'est écrit dans son message d'origine.

  7. #6
    Yoruk

    Re : Où est l'erreur dans mon logiciel ?

    Et après, la syntaxe est, sauf erreur de ma part, identique pour les uno et méga (du moins c'était le cas pour les programmes que j'ai testé sur les miennes).
    La robotique, c'est fantastique !

  8. #7
    Arutuf6

    Re : Où est l'erreur dans mon logiciel ?

    Bonjour et bon dimanche à tous (tes).

    Merci de vos réponses.

    Comme le laisse supposer mon précédent message, je débute en programmation avec Arduino. Je suis donc loin d’être un spécialiste, notamment, des forums, cela indique que je suis preneur de toutes les explications et conseils expérimentés. (J’ai seulement bricolé avec des PICBASIC, puis, avec des Cublog).

    Yoruk : 1 - Oui, RTClib.h m’apparaît être installé. (Il est dans le dossier « libraries » dans le répertoire d’installation La version installée est 1.0.5).
    2 - Pas d’autres erreurs ! (La téléversion s’arrête).

    nornand : - Comme vous le recommandé, j’ai renommé RTClib.h en RTClib (sans le . et le h) le résultat et la punition est le même.

    chimere322 : - Je n’ai pas compris votre réponse et vous demande de m’excuser. Pouvez-vous être plus explicite ?

    Cordialement,

    Guy.

  9. #8
    Yoruk

    Re : Où est l'erreur dans mon logiciel ?

    @Arutuf6 -> chimere322 te demande la version de ta carte et celle de l'IDE que tu utilises.

    Non, il faut renommer "RTClib.h" en "RCTlib.h" (inversion du T et C)

    Fais déjà une compilation simple avant d'uploader le programme sur la carte.
    La robotique, c'est fantastique !

  10. #9
    Arutuf6

    Re : Où est l'erreur dans mon logiciel ?

    Re,

    Après de nombreux essais, se pourrait-il, qu’effectivement, RTClib.h soit mal installé sur le PC !

    En effet, me semble-t-il, en ouvrant « fichier » et « exemples », il apparaissait à cet endroit là, un RTClib !

    Je ne le vois plus !

    Quelle procédure dois-je exactement utiliser pour rétablir la situation, car en faisant de la place, j'ai dû par inadvertance faire un effacement malencontreux.

    Cordialement

  11. #10
    Yoruk

    Re : Où est l'erreur dans mon logiciel ?

    Regarde ta corbeille...

    Les librairies doivent être installées dans le répertoire "librairies" où est installé l'IDE (à moins que la placer dans le dossier source suffise ?)

    Tu as une option "importer librairie" dans le menu "croquis" de l'ide.
    La robotique, c'est fantastique !

  12. #11
    Arutuf6

    Re : Où est l'erreur dans mon logiciel ?

    Re à tous.

    Ne pouvant pas m'en sortir voici ce que j'ai :

    1 - effacé et réinstallé Arduino.
    2 - recherché et installé RTClib.
    3 - Modifier la ligne #include ‘’RTClib.h’’ en l'incluant dans les occurrences préconisée :

    #include <RTClib.h>

    4 - Vérifié et… cela fonctionne à nouveau correctement.

    Merci à tous.

    Cordialement.

Discussions similaires

  1. Erreur de raisonnement, erreur logique ou erreur tout court?
    Par babybirdhitz dans le forum Epistémologie et Logique (archives)
    Réponses: 7
    Dernier message: 03/02/2010, 12h32
  2. Quand il y a erreur dans la saisie des notes dans le logiciel info????
    Par invite77119213 dans le forum Orientation après le BAC
    Réponses: 0
    Dernier message: 13/07/2009, 18h03
  3. erreur à l'ouverture d'un logiciel
    Par salsitawapa dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 10/02/2008, 06h57
Découvrez nos comparatifs produits sur l'informatique et les technologies.