IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Horloge temps réel DS1302 et écran LCD


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut Horloge temps réel DS1302 et écran LCD
    Bonjour, j'ai trouvé un tuto francophone(https://arduino-france.site/rtc-arduino/) mais le code proposé me renvoi une erreur : "time" was not declared in this scope

    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    #include "Wire.h"
    #include "LiquidCrystal_I2C.h"
    LiquidCrystal_I2C LCD(0x27,16,2);
     
    #include "iarduino_RTC.h"
    iarduino_RTC watch (RTC_DS1302,5,7,6);  // pour module DS1302
    // iarduino_RTC watch (RTC_DS1307);     // pour module DS1307 i2C
    // iarduino_RTC watch (RTC_DS3231);     // pour module  DS3231 i2C
     
    void setup() {
       Serial.begin(9600);
       LCD.init();
       LCD.backlight();
       time.begin();
       // 0  sec, 30 min, 18 hour, 2 date, january, 2022, wed
       time.settime(0, 30, 18, 2, 1, 22, 0);
    }
     
    void loop() {
       // si 1 seconde s'est écoulée affiche l'heure
       if (millis() % 1000 == 0) {
          Serial.println(time.gettime("d-m-Y, H:i:s, D"));
     
          LCD.setCursor(0,0);
          LCD.print(time.gettime("d M Y, D"));
          LCD.setCursor(4,1);
          LCD.print(time.gettime("H:i:s"));
       }
    }

  2. #2
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 689
    Par défaut Montre de gousset
    Bonjour,

    Il semble bien qu'il faille remplacer time par watch.

    Salutations

  3. #3
    Membre averti
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut Merci bien
    J'ai changé time par watch et tout fonctionne, merci bien !

  4. #4
    Membre averti
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut toInt()
    Bonjour, j'essaie d'utiliser toInt() pour fair une condition qui affiche matin et après-midi, j'ai le message erreur :


    C:\Users\LENOVO\Documents\Arduino\Horloge_temps_r_el_watch\Horloge_temps_r_el_watch.ino: In function 'void loop()':

    Horloge_temps_r_el_watch:31:32: error: request for member 'toInt' in 'watch.iarduino_RTC::gettime(((const char*)"H"))', which is of non-class type 'char*'

    if ((watch.gettime("H")).toInt() >= 12) {

    ^~~~~

    exit status 1

    request for member 'toInt' in 'watch.iarduino_RTC::gettime(((const char*)"H"))', which is of non-class type 'char*'

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    #include "Wire.h"
    #include "LiquidCrystal_I2C.h"
    LiquidCrystal_I2C LCD(0x27,16,2);
     
    #include "iarduino_RTC.h"
    iarduino_RTC watch (RTC_DS1302,5,7,6);  // pour module DS1302
    // iarduino_RTC watch (RTC_DS1307);     // pour module DS1307 i2C
    // iarduino_RTC watch (RTC_DS3231);     // pour module  DS3231 i2C
     
    void setup() {
       Serial.begin(9600);
       LCD.init();
       LCD.backlight();
       watch.begin();
       //integer zheur;
       //zheur == "12";
       int Heur = 0;
       // 0  sec, 30 min, 18 hour, 2 date, january, 2022, wed
       watch.settime(0, 00, 12, 3, 9, 22, 0);
    }
     
    void loop() {
       // si 1 seconde s'est écoulée affiche l'heure
       if (millis() % 1000 == 0) {
          Serial.println(watch.gettime("d-m-Y, H:i:s, D"));
     
          LCD.setCursor(0,0);
          LCD.print(watch.gettime("d M Y, D"));
          LCD.setCursor(0,1);
          LCD.print(watch.gettime("H")); 
          if ((watch.gettime("H")).toInt() >= 12) {
            LCD.setCursor(0,2);
            LCD.print("Apres-Midi");          
          }
          else {
            LCD.setCursor(0,2);
            LCD.print("Matin");        
          }
       }
    }

  5. #5
    Membre averti
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut D'abord convertit Char en String
    J'ai solutionné pour toInt(), je n'ai plus de messsage d'erreur, mais ça n'indique pas Matin et Apres-Midi comme je veux.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    #include "Wire.h"
    #include "LiquidCrystal_I2C.h"
    LiquidCrystal_I2C LCD(0x27,16,2);
     
    #include "iarduino_RTC.h"
    iarduino_RTC watch (RTC_DS1302,5,7,6);  // pour module DS1302
    // iarduino_RTC watch (RTC_DS1307);     // pour module DS1307 i2C
    // iarduino_RTC watch (RTC_DS3231);     // pour module  DS3231 i2C
     
    void setup() {
       Serial.begin(9600);
       LCD.init();
       LCD.backlight();
       watch.begin();
       //integer zheur;
       //zheur == "12";
       int Heur = 0;
       // 0  sec, 30 min, 18 hour, 2 date, january, 2022, wed
       watch.settime(0, 00, 13, 3, 9, 22, 0);
    }
     
    void loop() {
       // si 1 seconde s'est écoulée affiche l'heure
       if (millis() % 1000 == 0) {
          Serial.println(watch.gettime("d-m-Y, H:i:s, D"));
     
          LCD.setCursor(0,0);
          LCD.print(watch.gettime("d M Y, D"));
          LCD.setCursor(0,1);
          LCD.print(watch.gettime("H"));
          char Heur = (watch.gettime("H")); 
          String Heura = String(Heur);
          int Heurb = Heura.toInt();
          if (Heurb >= 12) {
            LCD.setCursor(0,2);
            LCD.print("Apres-Midi");          
          }
          else {
            LCD.setCursor(0,2);
            LCD.print("Matin");        
          }
       }
    }

  6. #6
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 935
    Par défaut
    il ne faut pas écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          char Heur = (watch.gettime("H"));
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          char* Heur = watch.gettime("H");
    (et ne mettez pas des parenthèses partout ! )

    cela dit ce n'est pas nécessaire, comme expliqué dans les exemples

    // Если требуется получить время в виде цифр, то можно вызвать функцию gettime() без параметра, после чего получить время из переменных:
    // - Пример: watch.gettime();
    // Serial.print(watch.Hours); Serial.print(":"); // Вывести часы.
    // Serial.print(watch.minutes); Serial.print(":"); // Вывести минуты.
    // Serial.print(watch.seconds); Serial.println(""); // Вывести секунды.
    // seconds - Переменная содержит секунды 0-59.
    // minutes - Переменная содержит минуты 0-59.
    // hours - Переменная содержит часы 1-12.
    // Hours - Переменная содержит часы 0-23.
    // midday - Переменная содержит полдень 0-1 (0-am, 1-pm).
    // day - Переменная содержит день месяца 1-31.
    // weekday - Переменная содержит день недели 0-6 (0-воскресенье, 6-суббота).
    // month - Переменная содержит месяц 1-12.
    // year - Переменная содержит год 0-99.
    // Unix - Переменная содержит секунды прошедшие с начала эпохи Unix.
    ==> ce qu'il faut retenir si vous ne lisez pas le russe, c'est que watch.Hours ce sont directement les heures en format numérique (entre 0 et 23) (idem pour watch.minutes ou watch.seconds et tous les autres de la liste). Ces attributs de la classe sont public donc visible de l'extérieur

    vous avez même midday qui vaut 0 pour le matin et 1 pour l'après midi, pour votre affichage

  7. #7
    Membre averti
    Homme Profil pro
    chomeur
    Inscrit en
    Avril 2017
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Avril 2017
    Messages : 31
    Par défaut Ca me sera fort utile.
    Matin et Apres-Midi c'était une expérimentation, merci bien d'avoir corrigé, car je devrai donc spécifié plus en détail pour la suite pour un projet de culture automatisée d'intérieur, un grand merci a vous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Programme utilisant l'horloge en temps réel
    Par nina16 dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 11/05/2009, 07h49
  2. [PIC18F4520] Comment gérer une horloge en temps réel
    Par cochy dans le forum Autres architectures
    Réponses: 1
    Dernier message: 06/03/2009, 11h10
  3. Réponses: 5
    Dernier message: 14/02/2009, 18h09
  4. Pb avec Horloge système CMOS/temps réel
    Par bbkenny dans le forum Windows 2000/Me/98/95
    Réponses: 1
    Dernier message: 12/12/2008, 22h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo